Datenimport von Excel nach Python mit Komma und Punkt als Dezimalzeichen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
funnyCoder
User
Beiträge: 2
Registriert: Freitag 2. Februar 2024, 15:50

Hallo an alle!

Ich stehe gerade vor einem Problem und scheitere beim Importieren von Daten aus einer Exceltabelle nach Python. Ich weiß, das klingt sehr einfach und mit pandas funktioniert das normalerweise auch wunderbar :) Leider sind meine Daten sehr inkonsistent, d. h. als Dezimalzeichen können entweder Punkte oder Kommas stehen und die Zahlen können auch verschiedene Nachkommastellen besitzen. In Python werden dann alle Kommas mit Punkten ersetzt und wenn in der letzten Nachkommastelle eine 0 ist, fällt diese weg. Mein Ziel ist es, im nächsten Schritt, die Einträge zu überprüfen, ob diese in korrekter wissenschaftlicher Schreibweise vorliegen. Nur dafür muss ich die Daten auch 1:1 importieren. Ich hoffe, ihr versteht am folgenden Beispiel, was ich meine :)

In Excel habe ich z. Bsp. folgende Spalte:
12,00
19,0
8.00
6.53
4,50
33.0
11,90
37,00
16,10
16,60

Wenn ich diese mithilfe von pandas einlese (auch mit dem Argument dtype=str), erhalte ich folgendes:
12
19
8.00
6.53
4.5
33.0
11.9
37
16.1
16.6

Und jetzt nochmal meine Frage: Wie kann ich die Daten, so wie diese in Excel stehen, 1:1 mit Punkt und Komma in Python übertragen?

Ich hab's auch schon mit openpyxl (mithilfe von ChatGPT) probiert, funktioniert leider auch nicht.

Code: Alles auswählen

excel_file = 'meine_excel_datei.xlsx'
workbook = openpyxl.load_workbook(excel_file, read_only=True)
sheet_name = 'Tabelle1'
sheet = workbook[sheet_name]
data = []
for row in sheet.iter_rows(values_only=True):
    data.append([str(cell) for cell in row])

workbook.close()
Please heeeelp
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Indem du dir eine Funktion schreibst, die aus einem String mit Komma einen mit Punkt macht, und dann aus dem Ergebnis mit float(ergebnis) ein float. Und diese Funktion gibst du deinem read_csv/was-auch-immer Aufruf als Konverter mit, analog zu https://scipython.com/book2/chapter-9-d ... ataframes/
Benutzeravatar
__blackjack__
User
Beiträge: 13117
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@__deets__: Wozu soll das gut sein? Dann hat man am Ende alles als `float`, also genau das was Pandas ja schon macht und was funnyCoder *nicht* will.

@funnyCoder: Warum willst Du so etwas komisches? In Zahlenfeldern in Excel stehen immer *Zahlen*. Ob diese Zahl(en) mit . oder , oder sonstwie von Excel *angezeigt* werden, bestimmt die *Formatierung* der Zelle.

Weder Pandas noch Openpyxl sind dafür gemacht die *Darstellung* der Zahl auszulesen. Beide lesen die tatsächliche *Zahl* aus.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
funnyCoder
User
Beiträge: 2
Registriert: Freitag 2. Februar 2024, 15:50

@__blackjack__ weil ich manchmal mit so komischen Exceltabellen zu tun habe :) durch viele händische Einträge können die Tabellen sehr durcheinander sein. Und da ich nicht selber alle Tabellen durchklicken und überprüfen möchte, schreibe ich gerade ein Programm, das mir sagen soll, welche Einträge oder Spalten "falsch" formatiert sind.
Aber der Tipp von @ __deets__ mit dem converter hat auf jeden Fall geholfen :D hab die Einträge jetzt nicht als float eingelesen, sondern tatsächlich jetzt so, wie ich wollte :D
OSWALD
User
Beiträge: 359
Registriert: Freitag 18. März 2022, 17:32

2.2.2024
Wie gut, dass ich zuletzt mich etwas mich Regressionen beschäftigt habe.
Al ich jetzt beim 'Maschinellen Rechnen kurz 'reingeschaut' habe, stiess ich
gleich auf zwei bekannte Begriffe:
Clustering und Logistische Regressionen.
Mit beiden Themen sollte ich mich jetzt auseiendersetzen.
Ich will es versuchen.
Eines weiß ich schon:
die logistische Regression hat ganz andere Dimensionen und
Probleme als die behandelten Beispiele.
OSWALD
OSWALD
User
Beiträge: 359
Registriert: Freitag 18. März 2022, 17:32

Wie kam ich auf diese Seite?
Tut ,ir leid.Entschuldigung
OSWALD
Antworten