Zehnerpotenzen auflösen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Seppel90
User
Beiträge: 25
Registriert: Mittwoch 3. Februar 2021, 13:28

Hallo Zusammen,

ich stelle mal mein Frage in diesem Teil des Forums, da ich denke das Mathematisch gelöst werden kann. :D

Sollte das der falsche Ort sein, weißt mich gern darauf hin. :)

Zum Thema....

Ich habe eine CSV-Datei welche mir von einem Programm ausgegeben wird. Diese CSV möchte ich mithilfe von Python weiter filtern und bearbeiten. In dieser CSV werden auch Telefonnummern ausgegeben, allerdings sind diese als Zehner Potenz dargestellt.

Wie kann ich diese als ganze Zahl darstellen.

Beispielzahl:
Modus Telefon

7,99816E+12 Telekom

Mein Code:

Code: Alles auswählen


import pandas as pd

MTP_Nummer = pd.read_csv("Test.csv", sep=';', header=0)

New_MTP = MTP_Nummer[(MTP_Nummer['Telefon'] == 'Telekom')]

List = New_MTP[['Modus','Telefon']]



print(List)


Vielen Dank für eure Hilfe. :)

PS: Habt Nachsicht mit mir...ich lerne noch Python. :D
Benutzeravatar
sparrow
User
Beiträge: 4198
Registriert: Freitag 17. April 2009, 10:28

Du solltest dir den Style Guide anschauen und dich daran halten.
Variablennnamen werden komplett_klein geschrieben KlassenNamen mit einem großen Anfangsbuchstaben, um das bereits beim Lesen zu unterscheiden.
"LIst" ist ein schelchter Name - zum einen sollte es eigentlich "list" heißen, weil es kein Klassenname ist (das wäre aber auch schlecht, weil es das eingebaute "list" überschreiben sollte, zum verbirgt sich dahinter keine Liste.

Bleibt die Frage: Wie steht denn die Nummer tatsächlich in der csv-Datei? Und von welchem Typ ist sie, als du sie ausgibst?
Sollte sie korrekt in der .csv-Datei stehen, dann musst du pandas sagen, dass die Spalte eine Zeichenkette ist.
Seppel90
User
Beiträge: 25
Registriert: Mittwoch 3. Februar 2021, 13:28

Vielen Dank für die Antwort sparrow :)

Dein Tipp mit dem "Style Guide" schaue ich mir an. Danke dafür :D

Und du hast recht. Die Nummer steht korrekt in der CSV drin. Ich habe diese gerade einmal in wordpad geöffnet anstatt mit Excel.

Würde ich hier mit dem "dtype" Parameter aus der pandas-Doku arbeiten?
Seppel90
User
Beiträge: 25
Registriert: Mittwoch 3. Februar 2021, 13:28

sparrow hat geschrieben: Mittwoch 3. Februar 2021, 15:20 Du solltest dir den Style Guide anschauen und dich daran halten.
Variablennnamen werden komplett_klein geschrieben KlassenNamen mit einem großen Anfangsbuchstaben, um das bereits beim Lesen zu unterscheiden.
"LIst" ist ein schelchter Name - zum einen sollte es eigentlich "list" heißen, weil es kein Klassenname ist (das wäre aber auch schlecht, weil es das eingebaute "list" überschreiben sollte, zum verbirgt sich dahinter keine Liste.

Bleibt die Frage: Wie steht denn die Nummer tatsächlich in der csv-Datei? Und von welchem Typ ist sie, als du sie ausgibst?
Sollte sie korrekt in der .csv-Datei stehen, dann musst du pandas sagen, dass die Spalte eine Zeichenkette ist.
Ich habe es jetzt meinen Code ein bischen angepasst und es mit "dtype" versucht. Allerdings komme ich da noch nicht weiter.

Hier mein Code:

Code: Alles auswählen

import pandas as pd

mtp_nummer = pd.read_csv("Test.csv", 
                sep=';', 
                decimal=',', 
                header=0,
                dtype={"Sensor":int,
                       "Modus":float,
                       "Telefon":str})

new_mtp = mtp_nummer[(mtp_nummer['Telefon'] == 'Telekom')]

list = new_mtp[['Sensor','Modus','Telefon']]



print(List)
Benutzeravatar
sparrow
User
Beiträge: 4198
Registriert: Freitag 17. April 2009, 10:28

Woher hast du die Angabe, dass man dort Python-Datentypen angeben kann? Das kann neu sein, aber als ich zuletzt mit Pandas gearbeitet habe, musste man dort die Typen als Zeichenkette oder als numpy-Typen angeben.
mtp_nummer ist noch immer ein sehr seltsamer Name für ein DataFrame.

Ungetestet:

Code: Alles auswählen

df = pd.read_csv(
    "Test.csv", sep=';', decimal=',', header=0,
    dtype={"Telefon": "object"}
)
Wenn das nicht hilft, sag bitte, was genau nicht geht und zeig die erste Datenzeile (mit Beispieldaten) und den Header aus deiner CSV-Datei.
Sirius3
User
Beiträge: 17761
Registriert: Sonntag 21. Oktober 2012, 17:20

@Seppel90: bei mir funktioniert das alles so, wie Du das angibst: Sensor hat Typ int64, Modus float64 und Telefon ist vom Typ object.
Was tut bei Dir nicht? Wie sieht die Datei aus, zeig mal ein Beispiel. Was möchtest Du damit machen?
Seppel90
User
Beiträge: 25
Registriert: Mittwoch 3. Februar 2021, 13:28

sparrow hat geschrieben: Donnerstag 4. Februar 2021, 10:40 Woher hast du die Angabe, dass man dort Python-Datentypen angeben kann? Das kann neu sein, aber als ich zuletzt mit Pandas gearbeitet habe, musste man dort die Typen als Zeichenkette oder als numpy-Typen angeben.
mtp_nummer ist noch immer ein sehr seltsamer Name für ein DataFrame.

Ungetestet:

Code: Alles auswählen

df = pd.read_csv(
    "Test.csv", sep=';', decimal=',', header=0,
    dtype={"Telefon": "object"}
)
Wenn das nicht hilft, sag bitte, was genau nicht geht und zeig die erste Datenzeile (mit Beispieldaten) und den Header aus deiner CSV-Datei.
Danke Sparrow für deine Antwort. Deine Lösung hat funktioniert.

Zu Anfang nicht...allerdings habe ich dann den Kernel einmal neu gestartet (Jupyter Notebook) und habe gesehen das noch ein anderer Fehler existiert.

Vielen Dank noch einmal. :D
Antworten