Nach dem vorherigen werde ich 100 Schläge der Datenwissenschaft erklären. Informationen zur Installation finden Sie in diesem Artikel (* Docker wird auf einem Mac verarbeitet)
Grundsätzlich ist es eine Erklärung der Antwort, aber es beschreibt auch eine andere Lösung.
P-021: Zählen Sie die Anzahl der Fälle für den Belegdetaildatenrahmen (df_receipt).
P-021
#Die Nummer ist len()Verwenden Sie die Methode.
len(df_receipt)
P-022: Zählen Sie die Anzahl der eindeutigen Fälle für die Kunden-ID (customer_id) des Datenrahmens für Belegdetails (df_receipt).
P-022
#Die Anzahl der Einzelfälle ist eindeutig()Verwenden Sie die Methode.
# df_receipt['customer_id'].unique() >>>Gibt eine Liste eindeutiger Elementwerte im NumPy-Array ndarray zurück
len(df_receipt['customer_id'].unique())
Referenz: https://note.nkmk.me/python-pandas-value-counts/
P-023: Summieren Sie den Verkaufsbetrag (Betrag) und die Verkaufsmenge (Menge) für jeden Geschäftscode (store_cd) für den Datenrahmen für Belegdetails (df_receipt).
P-023
#mit der groupby-Methode'store_cd'Gruppierung nach
# agg()Aggregieren Sie die Daten mit. Wörterbuchtyp Summe aus Verkaufsmenge (Menge) und Verkaufsmenge (Menge)
# reset_index()Neu indizieren mit
df_receipt.groupby('store_cd').agg({'amount': 'sum', 'quantity': 'sum'}).reset_index()
#(Eine andere Lösung)
df_receipt[['amount', 'quantity', 'store_cd']].groupby('store_cd', as_index=False).sum()
Referenz (groupby): https://note.nkmk.me/python-pandas-groupby-statistics/ Referenz (agg): https://note.nkmk.me/python-pandas-agg-aggregate/
P-024: Suchen Sie für den Belegdatenrahmen (df_receipt) das neueste Verkaufsdatum (sales_ymd) für jede Kunden-ID (customer_id) und zeigen Sie 10 Artikel an.
P-024
#Kunden-ID (Kunde) mit groupby_Gruppieren nach ID).
#Verkaufsdatum (Verkauf)_ymd) neueste(max()Reinkommen)
df_receipt.groupby('customer_id').sales_ymd.max().reset_index().head(10)
# (Eine andere Lösung)
#Kunden-ID (Kunde) in loc_Verkaufstermine (Verkäufe) gruppiert nach ID)_ymd) neueste(idxmax()Reinkommen)
df_receipt[['customer_id', 'sales_ymd']].loc[df_receipt.groupby('customer_id').sales_ymd.idxmax()].head(10)
Referenz (groupby): https://note.nkmk.me/python-pandas-groupby-statistics/
P-025: Suchen Sie für den Belegdatenrahmen (df_receipt) das älteste Verkaufsdatum (sales_ymd) für jede Kunden-ID (customer_id) und zeigen Sie 10 Artikel an.
P-025
# P-Siehe 023. Das älteste Verkaufsdatum ist agg({'sales_ymd': min})Kann ausgedrückt werden durch
df_receipt.groupby('customer_id').agg({'sales_ymd': min}).reset_index().head(10)
# (Eine andere Lösung)
#Kunden-ID (Kunde) in loc_Verkaufstermine (Verkäufe) gruppiert nach ID)_ymd) am ältesten(idxmin()Reinkommen)
df_receipt[['customer_id', 'sales_ymd']].loc[df_receipt.groupby('customer_id').sales_ymd.idxmin()].head(10)
P-026: Finden Sie das neueste Verkaufsdatum (sales_ymd) und das älteste Verkaufsdatum für jede Kunden-ID (customer_id) im Datenrahmen für Belegdetails (df_receipt) und zeigen Sie 10 verschiedene Daten an.
P-026
#Kunden-ID (Kunde)_Verkaufsdatum (Verkauf) für jede ID)_ymd) neues Verkaufsdatum(max)Und altes Verkaufsdatum(min)Erstellen Sie einen Datenrahmen für
df_tmp = df_receipt.groupby('customer_id').agg({'sales_ymd':['max','min']}).reset_index()
#Spalte ändern(Details werden unten erklärt)
df_tmp.columns = ["_".join(pair) for pair in df_tmp.columns]
#Beide fragen unterschiedliche Daten ab()Suche nach.
df_tmp.query('sales_ymd_max != sales_ymd_min').head(10)
Da df.columns zu MultiIndex ([('customer_id', ''), ('sales_ymd', 'max'), ('sales_ymd', 'min')] wird, extrahieren Sie sie einzeln mit der for-Anweisung. Verbinden Sie die Zeichen in Klammern mit "_" .join ().
P-027: Berechnen Sie den durchschnittlichen Verkaufsbetrag (Betrag) für jeden Geschäftscode (store_cd) für den Datenrahmen für Belegdetails (df_receipt) und zeigen Sie den TOP5 in absteigender Reihenfolge an.
P-027
#Belegdetail-Datenrahmen (df_Quittung) den Geschäftscode (Geschäft_Gruppieren nach CD).
# agg({'amount':'mean'})Berechnen Sie den durchschnittlichen Verkaufsbetrag (Betrag) bei
# reset_index()Neu indizieren mit und sortieren_values('amount', ascending=False)Sortieren nach Verkaufsbetrag (Betrag) in absteigender Reihenfolge
df_receipt.groupby('store_cd').agg({'amount':'mean'}) \
.reset_index().sort_values('amount', ascending=False).head(5)
Referenz (groupby): https://note.nkmk.me/python-pandas-groupby-statistics/ Referenz (agg): https://note.nkmk.me/python-pandas-agg-aggregate/
P-028: Berechnen Sie für den Datenrahmen für Belegdetails (df_receipt) den Medianwert des Verkaufsbetrags (Betrag) für jeden Geschäftscode (store_cd) und zeigen Sie den TOP5 in absteigender Reihenfolge an.
P-028
# P-Siehe 027
#Der Median ist der Median
df_receipt.groupby('store_cd').agg({'amount':'median'}).reset_index().sort_values('amount', ascending=False).head(5)
Referenz (Median): https://note.nkmk.me/python-statistics-mean-median-mode-var-stdev/
P-029: Ermitteln Sie für den Datenrahmen für Belegdetails (df_receipt) den häufigsten Wert des Produktcodes (product_cd) für jeden Geschäftscode (store_cd).
P-029
#Die erste Hälfte ist P.-Siehe 027
#Produktcode (Produkt_cd) funktionieren(Lambda-Stil)Bewerben.
df_receipt.groupby('store_cd').product_cd.apply(lambda x: x.mode()).reset_index()
# df.groupby('grouping_content').Was Sie am häufigsten finden möchten.apply(lambda x: x.mode())
# (Falsche Antwort)
df_receipt.groupby('store_cd').agg({'product_cd':'mode'}).reset_index()
# >>>AttributeError: 'SeriesGroupBy' object has no attribute 'mode'
Referenz (Lambda-Ausdruck): https://note.nkmk.me/python-lambda-usage/
P-030: Berechnen Sie für den Datenrahmen für Belegdetails (df_receipt) die Stichprobenverteilung des Verkaufsbetrags (Betrags) für jeden Geschäftscode (store_cd) und zeigen Sie den TOP5 in absteigender Reihenfolge an.
P-030
#Geschäftscode (speichern_Musterverteilung der Verkaufsmenge (Menge) der CD)(var(ddof=0))
# reset_Neu indizieren und nach Index sortieren(sort_values),absteigende Reihenfolge(ascending=False)
df_receipt.groupby('store_cd').amount.var(ddof=0).reset_index().sort_values('amount', ascending=False).head(5)
Referenz: https://deepage.net/features/numpy-var.html Referenz (Stichprobenverteilung und unvoreingenommene Verteilung): https://bellcurve.jp/statistics/course/8614.html
P-031: Berechnen Sie die Standardabweichung des Verkaufsbetrags (Betrags) für jeden Geschäftscode (store_cd) für den Datenrahmen für Belegdetails (df_receipt) und zeigen Sie den TOP5 in absteigender Reihenfolge an.
P-031
#Geschäftscode (speichern_Beispiel Standardabweichung des Verkaufsbetrags (Betrag) von CD)(std(ddof=0))
# reset_Neu indizieren und nach Index sortieren(sort_values),absteigende Reihenfolge(ascending=False)
df_receipt.groupby('store_cd').amount.std(ddof=0).reset_index().sort_values('amount', ascending=False).head()
Referenz: https://deepage.net/features/numpy-var.html Referenz (Stichprobenverteilung und unvoreingenommene Verteilung): https://bellcurve.jp/statistics/course/8614.html
P-032: Ermitteln Sie den Perzentilwert des Verkaufsbetrags (Betrags) des Belegrahmen-Datenrahmens (df_receipt) in Schritten von 25%.
P-032
#Prozentwert des Verkaufsbetrags (Betrag)(quantile)
# np.arange(5)/4 >>> [0, 0.25, 0.5, 0.75, 1]
df_receipt.amount.quantile(q=np.arange(5)/4)
# (Eine andere Lösung)
np.percentile(df_receipt['amount'], q=[25, 50, 75,100])
Referenz (Quantil): https://note.nkmk.me/python-pandas-quantile/
P-033: Berechnen Sie den durchschnittlichen Verkaufsbetrag (Betrag) für jeden Geschäftscode (store_cd) für den Datenrahmen für Belegdetails (df_receipt) und extrahieren Sie 330 oder mehr.
P-033
#Geschäftscode (speichern_Gruppieren nach CD).
#Durchschnittliche Umsatzmenge (Betrag)(mean)Wird berechnet und zurückgesetzt_index()Neu indizieren mit
# query()300 oder mehr des Verkaufsbetrags (Betrags) nach Methode
df_receipt.groupby('store_cd').amount.mean().reset_index().query('amount >= 330')
# (Eine andere Lösung)
df_receipt.groupby('store_cd').amount.mean()[df_receipt.groupby('store_cd').amount.mean() >= 300]
P-034: Addieren Sie für den Datenrahmen für Belegdetails (df_receipt) den Verkaufsbetrag (Betrag) für jede Kunden-ID (customer_id) und berechnen Sie den Durchschnitt aller Kunden. Wenn die Kunden-ID jedoch mit "Z" beginnt, handelt es sich um ein Nichtmitglied. Schließen Sie sie daher von der Berechnung aus.
P-034
#Wie schreibe ich ohne Abfrage
# ~Ist nicht. , Kundennummer (Kunde_id) beginnt mit Z.(str.startswith("Z"))
#Kunden-ID (Kunde)_Der Durchschnitt aller Kunden durch Summieren des Verkaufsbetrags (Betrags) für jede ID)
df_receipt[~df_receipt['customer_id'].str.startswith("Z")].groupby('customer_id').amount.sum().mean()
#Wie schreibe ich mit Abfrage
df_receipt.query('not customer_id.str.startswith("Z")', engine='python').groupby('customer_id').amount.sum().mean()
P-035: Addieren Sie für den Datenrahmen der Belegabrechnung (df_receipt) den Verkaufsbetrag (Betrag) für jede Kunden-ID (customer_id), um den Durchschnitt aller Kunden zu ermitteln, und extrahieren Sie die Kunden, die über dem Durchschnitt einkaufen. .. Wenn die Kunden-ID jedoch mit "Z" beginnt, handelt es sich um ein Nichtmitglied. Schließen Sie sie daher von der Berechnung aus. Es müssen nur 10 Daten angezeigt werden.
P-035
#Kundennummer"Z"Ausschließen.'customer_id'Teilen Sie jede Gruppe. (2547.742234529256) Durchschnitt für alle Kunden
amount_mean = df_receipt[~df_receipt['customer_id'].str.startswith("Z")].groupby('customer_id').amount.sum().mean()
#Kunden-ID (Kunde)_Summieren Sie den Verkaufsbetrag (Betrag) für jede ID) (Datenrahmentyp)
df_amount_sum = df_receipt.groupby('customer_id').amount.sum().reset_index()
# amount_mean(Durchschnitt für alle Kunden)Zeigen Sie die obigen 10 Elemente an
df_amount_sum[df_amount_sum['amount'] >= amount_mean].head(10)
P-036: Kombinieren Sie intern den Belegdetaildatenrahmen (df_receipt) und den Geschäftsdatenrahmen (df_store) und zeigen Sie alle Elemente im Belegdetaildatenrahmen und 10 Geschäftsnamen (Geschäftsname) im Geschäftsdatenrahmen an.
P-036
# merge(A(df), B(df), how='inner'(Innere Verbindung), on='Gemeinsame Spalte')
pd.merge(df_receipt, df_store[['store_cd','store_name']], how='inner', on='store_cd').head(10)
Referenz: https://note.nkmk.me/python-pandas-merge-join/
P-037: Kombinieren Sie intern den Produktdatenrahmen (df_product) und den Kategoriedatenrahmen (df_category) und zeigen Sie alle Elemente im Produktdatenrahmen und 10 Unterkategorienamen (category_small_name) im Kategoriedatenrahmen an.
P-037
# merge(A(df), B(df), how='inner'(Innere Verbindung), on='Gemeinsame Spalte')
pd.merge(df_product
, df_category[['category_small_cd','category_small_name']]
, how='inner', on='category_small_cd').head(10)
Referenz: https://note.nkmk.me/python-pandas-merge-join/
P-038: Ermitteln Sie den Gesamtumsatz für jeden Kunden aus dem Kundendatenrahmen (df_customer) und dem Belegdetaildatenrahmen (df_receipt). Für Kunden ohne Einkaufsaufzeichnung sollte der Verkaufsbetrag jedoch als 0 angezeigt werden. Darüber hinaus sollten Kunden diejenigen ansprechen, deren Geschlechtscode (gender_cd) weiblich ist (1), und Nichtmitglieder ausschließen (Kunden-IDs beginnend mit 'Z'). Es müssen nur 10 Ergebnisse angezeigt werden.
P-038
#Gesamtumsatz für jeden Kunden.
#Gruppieren nach Kunden-ID und Gesamtumsatz (Betrag)(sum)
df_amount_sum = df_receipt.groupby('customer_id').amount.sum().reset_index()
#Kunde ist Geschlechtscode (Geschlecht_Für diejenigen, deren CD weiblich ist (1), Nichtmitglieder (Kunden-ID ist'Z'Schließt diejenigen aus, die mit beginnen)
df_tmp = df_customer.query('gender_cd == "1" and not customer_id.str.startswith("Z")', engine='python')
# merge(A(df), B(df), how='inner'(Innere Verbindung), on='Gemeinsame Spalte')
# fillna(0)Für Kunden, bei denen noch keine Einkäufe getätigt wurden, beträgt der Verkaufsbetrag 0
pd.merge(df_tmp['customer_id'], df_amount_sum, how='left', on='customer_id').fillna(0).head(10)
P-039: Extrahieren Sie die Top-20-Kunden mit der höchsten Anzahl von Verkaufstagen und die Top-20-Kunden mit dem höchsten Gesamtumsatz aus dem Datenrahmen der Belegabrechnung (df_receipt) und kombinieren Sie sie vollständig extern. Nichtmitglieder (Kunden-IDs, die mit 'Z' beginnen) sollten jedoch ausgeschlossen werden.
P-039
#Kundennummer('customer_id')Gruppieren nach und Gesamtumsatz (Betrag)(sum)
df_sum = df_receipt.groupby('customer_id').amount.sum().reset_index()
# customer_id.str.startswith("Z")(Mit Ausnahme von Kunden-IDs, die mit Z beginnen)
df_sum = df_sum.query('not customer_id.str.startswith("Z")', engine='python')
#Sortieren Sie den Gesamtumsatz (Betrag) und extrahieren Sie die Top 20
df_sum = df_sum.sort_values('amount', ascending=False).head(20)
#Anzahl der Verkaufstage(sales_ymd)Duplikate extrahieren.
df_cnt = df_receipt[~df_receipt.duplicated(subset=['customer_id', 'sales_ymd'])]
# customer_id.str.startswith("Z")(Mit Ausnahme von Kunden-IDs, die mit Z beginnen)
df_cnt = df_cnt.query('not customer_id.str.startswith("Z")', engine='python')
#Kundennummer('customer_id')Gruppiert nach und Verkaufstage(sales_ymd)Zahl der Fälle(count)
df_cnt = df_cnt.groupby('customer_id').sales_ymd.count().reset_index()
#Anzahl der Verkaufstage(sales_ymd)Sortieren Sie nach der Anzahl der Fälle in absteigender Reihenfolge(ascending=False)Die Top 20 Elemente sortiert nach werden extrahiert.
df_cnt = df_cnt.sort_values('sales_ymd', ascending=False).head(20)
#Äußere Verbindung mit Zusammenführung
pd.merge(df_sum, df_cnt, how='outer', on='customer_id')
Referenz (Duplikat): https://note.nkmk.me/python-pandas-duplicated-drop-duplicates/ Referenz (äußere Verknüpfung): https://note.nkmk.me/python-pandas-merge-join/
P-040: Ich möchte untersuchen, wie viele Daten durch die Kombination aller Geschäfte und Produkte erhalten werden. Berechnen Sie die Anzahl der direkten Produkte von Geschäften (df_store) und Produkten (df_product).
P-040
#Speichern (df_Kopie des Geschäfts erstellen)
df_store_tmp = df_store.copy()
#Produkt (df_Kopie des Produkts erstellen)
df_product_tmp = df_product.copy()
#Schlüssel zum Kombinieren(Säule)が必要なのでそれぞれSäuleを追加する。
df_store_tmp['key'] = 0
df_product_tmp['key'] = 0
#Äußere Verknüpfung und überprüfen Sie die Nummer mit der len-Methode
len(pd.merge(df_store_tmp, df_product_tmp, on='key', how='outer'))
Referenz: https://note.nkmk.me/python-pandas-merge-join/
100 Schläge Data Science So führen Sie 100 Data Science-Schläge auf einem Mac aus
Recommended Posts