CSV einlesen und Wert zu zwei vorgegebenen Variablen rausgeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Jghurt
User
Beiträge: 32
Registriert: Samstag 8. Mai 2021, 15:18

Hallo,

ich habe leider ein kleines Problem und komme mit Google nicht weiter.

Ich habe eine CSV Datei, mehrere Zeilen hat. Die Werte sind mit Kommas getrennt. Die CSV sieht wie folgt aus:

Code: Alles auswählen

Monat,Januar1,Januar2,Februar1,Februar2,März1,März2
,Wert_u,Wert_o,Wert_u,Wert_o,Wert_u,Wert_o
Sonne,10,20,30,40,40,70
Regen,5,15,10,20,30,50
Nun möchte ich folgendes in Python erreichen: Ich möchte zB. für Februar & Sonne die Werte Wert_u = 30 und Wert_o = 40 rausbekommen
Also als Ausgabe:
Wert_u = 30
Wert_o = 40

Was ich schon habe:

Code: Alles auswählen

import csv
with open('Wert_Tabelle.csv') as csvdat:
    csv_reader_object = csv.reader(csvdat)
    print(csv_reader_object)
Ab hier komme ich aber leider nicht weiter. Kann mir vielleicht jemand auf die Sprünge helfen :)?
(Wie ich die Variablen für den Monat und das Wetter vorgebe, kann ich selber lösen. Ich komme leider nur nicht darauf, wie ich anhand dieser Variablen die richtigen Werte aus meiner CSV Datei bekomme.)
Bl3nder
User
Beiträge: 139
Registriert: Freitag 3. Januar 2020, 17:07

Hallo,

Ich schlage dir vor mit pandas zu arbeiten das erleichtert dir das Leben.


Beispiel:

Code: Alles auswählen

import pandas as pd
df = pd.read_csv(r"C:\Users\Marcel\Desktop\test_forum.csv", sep=",")
print(df)
Output:

Code: Alles auswählen

   Monat Januar1 Januar2 Februar1 Februar2   März1   März2
0    NaN  Wert_u  Wert_o   Wert_u   Wert_o  Wert_u  Wert_o
1  Sonne      10      20       30       40      40      70
2  Regen       5      15       10       20      30      50
danach könntest du über die Colums auf die Werte zum Beispiel zugreifen :

Beispiel:

Code: Alles auswählen

februar1 = df.loc[:,"Februar1"]

Output:

Code: Alles auswählen

0    Wert_u
1        30
2        10
du siehst das ist nicht schwer :)

Ich habe leider noch nicht mit dem csv Module gearbeitet




Oder als Beispiel wenn du den Index änderst:

Code: Alles auswählen

df = pd.read_csv(r"C:\Users\Marcel\Desktop\test_forum.csv", sep=",",index_col=0)
print(df.iloc[[1]])
Output:

Code: Alles auswählen

      Januar1 Januar2 Februar1 Februar2 März1 März2
Monat                                              
Sonne      10      20       30       40    40    70

Der Vorteil ist gerade wenn man mit Daten arbeitet oder Ich nehme mal an mit Wetterdaten das du später auch mit pandas rechnen kannst oder ganz leich die max und min Temperatur ermitteln kannst oder 10min Windgeschwindigkeit oder Regensummen etc.
Eine Vision ohne Aktion bleibe eine Illusion
Jghurt
User
Beiträge: 32
Registriert: Samstag 8. Mai 2021, 15:18

Bl3nder hat geschrieben: Samstag 22. Mai 2021, 06:04
Ich schlage dir vor mit pandas zu arbeiten das erleichtert dir das Leben.

Der Vorteil ist gerade wenn man mit Daten arbeitet oder Ich nehme mal an mit Wetterdaten das du später auch mit pandas rechnen kannst oder ganz leich die max und min Temperatur ermitteln kannst oder 10min Windgeschwindigkeit oder Regensummen etc.
Hallo Bl3nder,

Vielen Dank für deine ausführliche Antwort und die Codes :) Ich werde mich am Montag und Dienstag mal damit beschäftigen und nochmal Rückmeldung geben, ob alles geklappt hat.
Das sieht auf den ersten Blick aber sehr gut aus :)
Danke und LG
Jghurt
User
Beiträge: 32
Registriert: Samstag 8. Mai 2021, 15:18

Bl3nder hat geschrieben: Samstag 22. Mai 2021, 06:04
Beispiel:

Code: Alles auswählen

import pandas as pd
df = pd.read_csv(r"C:\Users\Marcel\Desktop\test_forum.csv", sep=",")
print(df)
Output:

Code: Alles auswählen

   Monat Januar1 Januar2 Februar1 Februar2   März1   März2
0    NaN  Wert_u  Wert_o   Wert_u   Wert_o  Wert_u  Wert_o
1  Sonne      10      20       30       40      40      70
2  Regen       5      15       10       20      30      50
danach könntest du über die Colums auf die Werte zum Beispiel zugreifen :

Beispiel:

Code: Alles auswählen

februar1 = df.loc[:,"Februar1"]

Output:

Code: Alles auswählen

0    Wert_u
1        30
2        10


Vielen Dank, das hat mir schon deutlich weitergeholfen. Leider habe ich aber immernoch ein Problem.

Input:

Code: Alles auswählen

februar1 = df.loc[: 1 ,"Februar1"]
Output:

Code: Alles auswählen

0    Wert_u
1        30
Soweit so gut, aber bei Input:

Code: Alles auswählen

februar1 = df.loc[: 2 ,"Februar1"]
Kommt Output:

Code: Alles auswählen

0    Wert_u
1        30
2        10


Ich würde aber gerne folgenden Output erhalten: Also lediglich der Wert "10" in der Spalte Februar1 und der Spalte 2.

Wie schaffe ich es denn, dass mir lediglich dieser Wert ausgegeben wird?
Jghurt
User
Beiträge: 32
Registriert: Samstag 8. Mai 2021, 15:18

Jghurt hat geschrieben: Montag 24. Mai 2021, 22:37
Ich würde aber gerne folgenden Output erhalten: Also lediglich der Wert "10" in der Spalte Februar1 und der Spalte 2.

Wie schaffe ich es denn, dass mir lediglich dieser Wert ausgegeben wird?
Ich habe es jetzt selber hinbekommen:

Code: Alles auswählen

februar1 = df.loc[2 ,"Februar1"]
Man musste einfach die Doppelpunkte entfernen. Also df.loc[2 ,"Februar1"] statt df.loc[: 2 ,"Februar1"].
Jetzt habe ich es so, wie ich es wollte. Danke :)
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Da Du die zweite Zeile in der Datei nicht brauchst, würde ich sie gleich beim Einlesen ignorieren:

Code: Alles auswählen

df = pd.read_csv(r"C:\Users\Marcel\Desktop\test_forum.csv", sep=",", index_col=0, skiprows=[1])
Statt über irgendwelchen magischen Indexwerte greift man in Pandas über den Index direkt auf Werte zu:

Code: Alles auswählen

df.Februar1.Sonne
Antworten