Dies ist ein Kampfbericht über das Klopfen von 100 Eiern, ohne das Ei des Datenwissenschaftlers zu kennen. Es ist ein Rätsel, ob ich das Rennen beenden kann. ~~ Auch wenn es unterwegs verschwindet, denken Sie bitte, dass es Qiita nicht gegeben wird. ~~
100 Klopfartikel 100 Knock Guide
** Sei vorsichtig, wenn du es versuchst, da es Spoiler enthält **
Traurige Nachricht: Das Problem tritt nicht auf (41. zum Zeitpunkt des Schreibens)
Das ist schwer zu sehen! Diese Schreibweise ist gefährlich! Wenn Sie Fragen haben, lassen Sie es mich bitte wissen. ~~ Ich werde es als Nahrung verwenden, während mein Herz geschädigt wird.
Diese Lösung ist falsch! Diese Interpretation ist anders! Bitte kommentieren Sie, wenn Sie welche haben.
Diesmal von 36 bis 40. [Letztes Mal] 33-35 [Zum ersten Mal mit Inhaltsverzeichnis]
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.
Endlich kam Tischverbindung
In SQL-Begriffen
SQLteki.sql
SELECT *
FROM receipt r INNER JOIN store s
ON r.___ = s.___
Was für ein Ort wie. (Projektion ignorieren)
Für Pandas (Referenz)
pd.maerge(df_receipt,df_store,on='store_cd',how='inner')
Weil es so scheint
mine36.py
df=pd.merge(df_receipt,df_store[['store_cd','store_name']],on='store_cd',how='inner')
df.head(10)
'''Musterantwort'''
pd.merge(df_receipt, df_store[['store_cd','store_name']], how='inner', on='store_cd').head(10)
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.
mine37.py
df=pd.merge(df_product,df_category[['category_major_cd', 'category_medium_cd','category_small_cd','category_small_name']]
,on=['category_major_cd', 'category_medium_cd','category_small_cd'],how='inner')
df.head(10)
'''Musterantwort'''
pd.merge(df_product
, df_category[['category_major_cd', 'category_medium_cd','category_small_cd','category_small_name']]
, how='inner', on=['category_major_cd', 'category_medium_cd','category_small_cd']).head(10)
Nun, das ist.
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.
Ich bin es gewohnt, das führende "Z" zu löschen. Was wir diesmal tun, ist, eine linke äußere Verknüpfung herzustellen und den Nullwert (Nan) auf 0 zu setzen.
Verwenden Sie .fillna (0)
, um Nan auf 0 OK zu setzen
mine38.py
df_cst=df_customer[df_customer.customer_id.str.contains('^[^Z]')].query("gender_cd == '1'")
df_rct=df_receipt.groupby('customer_id').agg({'amount':'sum'}).reset_index()
df=pd.merge(df_cst,df_rct,on='customer_id',how='left').fillna(0)
df.head(10)
'''Musterantwort'''
df_amount_sum = df_receipt.groupby('customer_id').amount.sum().reset_index()
df_tmp = df_customer.query('gender_cd == "1" and not customer_id.str.startswith("Z")', engine='python')
pd.merge(df_tmp['customer_id'], df_amount_sum, how='left', on='customer_id').fillna(0).head(10)
In der Modellantwort mache ich eine Berechnung und wähle dann aus (Z Startausschluss und weiblich), aber ich treffe zuerst eine Auswahl und berechne dann.
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.
Dieses Problem war völlig falsch und dauerte lange. Der Erste,
miss39.py
df=df_receipt[df_receipt.customer_id.str.contains('^[^Z]')]
df_day=df.groupby('customer_id').agg({'sales_ymd':'count'}).sort_values('sales_ymd',ascending=False).reset_index().head(20)
df_amo=df_amo.groupby('customer_id').agg({'amount':'sum'}).sort_values('amount',ascending=False).reset_index().head(20)
pd.merge(df_amo,df_day,on='customer_id',how='outer')
Ich schrieb es so und antwortete mit vollem Vertrauen.
Wie der Inhalt
df_day
df_amo
Ich wollte.
Aber für df_receipt
―― "Gleiche Person" "Gleicher Tag" "Verschiedene Dinge"
Ich habe vergessen, dass ich einige Daten gekauft habe, also musste ich sie in einer Zeile zusammenfassen.
Also, (Referenz) Doppelte Zeilen löschen
df_day=df[~df.duplicated(subset=['customer_id', 'sales_ymd'])]
Hinzufügen
mine39.py
df=df_receipt[df_receipt.customer_id.str.contains('^[^Z]')]
df_day=df[~df.duplicated(subset=['customer_id', 'sales_ymd'])]
df_day=df_day.groupby('customer_id').agg({'sales_ymd':'count'}).sort_values('sales_ymd',ascending=False).reset_index().head(20)
df_amo=df_amo.groupby('customer_id').agg({'amount':'sum'}).sort_values('amount',ascending=False).reset_index().head(20)
pd.merge(df_amo,df_day,on='customer_id',how='outer')
'''Musterantwort'''
df_sum = df_receipt.groupby('customer_id').amount.sum().reset_index()
df_sum = df_sum.query('not customer_id.str.startswith("Z")', engine='python')
df_sum = df_sum.sort_values('amount', ascending=False).head(20)
df_cnt = df_receipt[~df_receipt.duplicated(subset=['customer_id', 'sales_ymd'])]
df_cnt = df_cnt.query('not customer_id.str.startswith("Z")', engine='python')
df_cnt = df_cnt.groupby('customer_id').sales_ymd.count().reset_index()
df_cnt = df_cnt.sort_values('sales_ymd', ascending=False).head(20)
pd.merge(df_sum, df_cnt, how='outer', on='customer_id')
ist geworden. (Ich habe es getan. Es war kürzer als die Modellantwort)
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).
mine40.py
len(df_store)*len(df_product)
** Ach nein? ** ** **
mohan40.py
```Musterantwort```
df_store_tmp = df_store.copy()
df_product_tmp = df_product.copy()
df_store_tmp['key'] = 0
df_product_tmp['key'] = 0
len(pd.merge(df_store_tmp, df_product_tmp, how='outer', on='key'))
Recommended Posts