[PYTHON] Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil7

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]

36 ..

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)

37

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.

38

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.

39 ..

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

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)

40

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'))

Bis hierher für diese Zeit

Recommended Posts

Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil3
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil6
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil2
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil1
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil9
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil7
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil4
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil11
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil5
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil10
Data Science 100 Knock ~ Kampf um weniger als Anfänger Teil8
Data Science 100 Klopfkommentar (P021 ~ 040)
Data Science 100 Klopfkommentar (P061 ~ 080)
Data Science 100 Klopfkommentar (P041 ~ 060)
Data Science 100 Klopfkommentar (P081 ~ 100)
Implementieren von 100 Data Science-Schlägen für Anfänger in Data Science (für Windows 10 Home)
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-007 Erläuterung
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-006 Erläuterung
Erkennung von Zeitreihendatenanomalien für Anfänger
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-002 Erläuterung
[Python] 100 Schläge auf Data Science (strukturierte Datenverarbeitung) 021 Erläuterung
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-005 Erläuterung
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-004 Erläuterung
[Python] 100 Schläge auf Data Science (strukturierte Datenverarbeitung) 020 Erläuterung
[Python] 100 Schläge auf Data Science (strukturierte Datenverarbeitung) 025 Erläuterung
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-003 Erläuterung
[Python] 100 Schläge auf Data Science (strukturierte Datenverarbeitung) 019 Erläuterung
[Praktisch für Anfänger] Lesen Sie zaggles "Predicting Home Prices" Zeile für Zeile (Teil 1: Lesen von Daten)
[Linux-Befehl] Liste weniger Befehlsoptionen [Muss für Anfänger sein]
Verwendung von Datenanalysetools für Anfänger
Vorbereitung zum Versuch "Data Science 100 Knock (Strukturierte Datenverarbeitung)"
Umgebungskonstruktion (Windows 10) für 100 Schläge Data Science (strukturierte Datenverarbeitung)
Pandas-Grundlagen für Anfänger ② Übersicht über die Daten