2017-12-08 8 views
0

Ich benutze online retail dataset und ich möchte die Verteilung der Anzahl der Artikel pro Rechnungsnummer plotten.Anzahl der gekauften Artikel per Rechnung mit Seabohnen und Pandas

enter image description here

InvoiceNo vom Typ: Nicht-Null-Objekt

Anzahl der Art: Nicht-null int64

Wie das zu tun? Außerdem wusste ich nicht, wie man mit Pandas-Operationen filtert, um das ohne Visualisierungen zu bekommen. wie zum Beispiel, wenn ich die Menge pro Rechnung wissen will, was ich tun kann:

retail_uk.groupby('InvoiceNo').sum().sort_values(by='Quantity', ascending=False)['Quantity'] 

Ich brauche eine Antwort für beide:

  • Wie das zum Plotten mit Seaborn (mehr wichtig, weil es erlaubt um eine bessere Vorstellung von der Verteilung zu bekommen.) Was sind die verschiedenen Datentransformationen, um dies zu erreichen?

  • Wie man es mit groupby Pandas macht.

+0

was macht es? Ich überprüfte die Dokumentation, die sagt: "die Anzahl der Elemente in den zugrunde liegenden Daten zurückgeben" welches Element? Ich habe es nicht verstanden. Ich möchte die Anzahl der gekauften Artikel in der gleichen Rechnung erhalten. Zählt die Größe das Vorkommen jeder RechnungNein? – SarahData

Antwort

1

ich glaube, Sie brauchen Aggregat sum und für Grundstück seaborn.barplot:

url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/00352/Online%20Retail.xlsx' 
retail_uk = pd.read_excel(url) 

df = retail_uk.groupby('InvoiceNo', as_index=False)['Quantity'].sum() 
#if want sorting 
df = df.sort_values(by='Quantity', ascending=False) 
print (df.head()) 

ax = sns.barplot(x="InvoiceNo", y="Quantity", data=df) 
+0

Ich muss plotten: die Anzahl der Artikel pro Rechnungsverteilung. Dies stellt die Menge pro Rechnung dar, es ist nicht die gleiche Sache, weil es Menge/Rechnung des einen Artikels sein kann. und ich möchte wissen, wie viele Artikel ein Kunde in einer Transaktion kauft. – SarahData

+0

Ich denke, Sie brauchen [countplot, ax = sns.countplot (x = "RechnungNo", data = retail_uk)] (https://seaborn.pydata.org/generated/seaborn.countplot.html), dann sollte groupby weggelassen werden – jezrael

+0

Jetzt bin ich nur am Telefon, also ungetestet. Aber wenn Sie sortieren müssen, dann verwenden Sie 'df = retail_de ['RechnungNr']. Value_counts(). Reset_index()' – jezrael

0

Wenn Sie die Anzahl der Zeilen für jede eindeutige InvoiceNo wissen wollen, können Sie

df.groupby('InvoiceNo').size() 

tun, wenn Sie zusammen gruppieren alle einzigartigen InvoiceNo der wollen und fassen die ‚Menge‘ Zeilen innerhalb jeder Gruppe, die Sie tun

df.groupby('InvoiceNo').agg(np.sum)['Quantity'] 
Verwandte Themen