Pandas - Zeilen unter Bedingung einer anderen Zeilen/Spalte finden

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
_Euklid_
User
Beiträge: 5
Registriert: Sonntag 22. März 2020, 13:48

Hallo,

aktuell lese ich mit Pandas eine CSV Datei ein, diese kann ich mir als Tabelle anzeigen lassen. Jetzt habe ich folgendes vor, ich möchte gerne zu jeder k-ten Spalte nur die Einträge haben, bei denen in der erste Spalte ein spezielles Stichwort vorhanden ist. Meine Tabelle sieht in etwa so aus:

id,category,val1,val2,val3,...,valN
0,A,103,123,923,...,163
1,A,113,173,128,...,123
2,B,133,123,121,...,193

category kann nun A oder B sein, wohingegen val1 bis valN numerische Werte sind.

Ich möchte mir nun jeweils die Spalten val1 bis val3 histogramieren, wobei ich für jede Spalte dann trennen muss in Kategorie A und B. Die beiden Kategorien einer Spalte sollen aber in einem Histogram dargestellt werden.

Eine Implementierung ganz ohne Pandas habe ich schon mit Listen erfolgreich durchgeführt. Ich habe aber die Hoffnung, dass das mit Pandas vllt, etwas kürzer und effizienter geht. Bisher ist mein Vorgehen:
1.) Lese CSV ein
2.) Split und prüfe für k-te Spalte (val1,..,valN) ob A oder B (Kategorie in zweiter Spalte), wenn A dann füge Element in Teilliste A hinzu, wenn B dann füge Element in Teilliste B hinzu
3.) Für jede Liste in der Teilliste A und B --> Histogram()

Beispiel für Spalte val1:
List_A_1 = [103,113]
List_B_1 = [133]
Histogramm aus List_A_1 und List_B_1 (das eben für jede Spalte)

Falls hier Informationen fehlen, dann kann ich die gerne ergänzen. :)
Benutzeravatar
__blackjack__
User
Beiträge: 13114
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Also falls ich das richtig verstanden habe willst Du Daten aufgrund des Wertes in der Spalte "category" selektieren. Also:

Code: Alles auswählen

In [48]: df                                                                     
Out[48]: 
   category  val1  val2  val3
id                           
0         A   103   123   923
1         A   113   173   128
2         B   133   123   121

In [49]: df["category"] == "A"                                                  
Out[49]: 
id
0     True
1     True
2    False
Name: category, dtype: bool

In [50]: df[df["category"] == "A"]                                              
Out[50]: 
   category  val1  val2  val3
id                           
0         A   103   123   923
1         A   113   173   128

In [51]: df[df["category"] == "B"]                                              
Out[51]: 
   category  val1  val2  val3
id                           
2         B   133   123   121
Wie man Daten nach Zeilen und Spalten selektieren kann steht aber auch alles in der Pandas-Dokumentation.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten