Ich habe folgende Pandas Datenrahmen:Wie zählen Untergruppen von kategorischen Daten in einem Pandas Dataframe?
import pandas as pd
import numpy as np
df = pd.DataFrame({"shops": ["shop1", "shop2", "shop3", "shop4", "shop5", "shop6"], "franchise" : ["franchise_A", "franchise_A", "franchise_A", "franchise_A", "franchise_B", "franchise_B"],"items" : ["dog", "cat", "dog", "dog", "bird", "fish"]})
df = df[["shops", "franchise", "items"]]
print(df)
shops franchise items
0 shop1 franchise_A dog
1 shop2 franchise_A cat
2 shop3 franchise_A dog
3 shop4 franchise_A dog
4 shop5 franchise_B bird
5 shop6 franchise_B fish
So ist jede Zeile eine einzigartige Probe shop1
, shop2
usw., wobei jede Probe auf eine franchise_A
Untergruppe gehört, franchise_B
, franchise_C
usw. In der Spalte items
Es sind nur vier kategoriale Werte möglich: dog
, cat
, fish
, bird
. Meine Motivation ist es, ein Barplot der Nummer dog
, cat
, fish
, bird
für jedes "Franchise" zu erstellen.
ich die Ausgabe
franchise dogs cats birds fish
franchise_A 3 1 0 0
franchise_B 0 0 1 1
Ich glaube, sein Ich muss zuerst groupby()
verwenden, zum Beispiel möchten
df.groupby("franchise").count()
shops items
franchise
franchise_A 4 4
franchise_B 2 2
Aber ich bin mir nicht sicher, wie ich die Anzahl der Artikel für jedes Franchise zählen.
'value_counts()' statt 'Counter' würde wirklich die ganze Sache befestigen. –
@NickilMaveli - Danke. – jezrael
Hier ist eine separate Frage: Sagen wir mal, es gab 5 Kategorien, eine davon war 'NaN'. Wie könnte ich NaN-Werte als separate Kategorie definieren? 'df.groupby (" franchise ") ['items']. value_counts(). entstack (fill_value = 0)' würde das nicht tun. – ShanZhengYang