[Python] 100 Schläge auf Data Science (strukturierte Datenverarbeitung) 026 Erläuterung
Youtube
Videokommentar ist ebenfalls verfügbar.
Problem
P-026: Suchen Sie für den Datenrahmen für Belegdetails (df_receipt) das neueste Verkaufsdatum (sales_ymd) und das älteste Verkaufsdatum für jede Kunden-ID (customer_id) und zeigen Sie 10 verschiedene Daten an.
Antworten
Code
df_sales_ymd = df_receipt.groupby('customer_id').agg({'sales_ymd':['max','min']}).reset_index()
df_sales_ymd.columns = ['customer_id','sales_ymd_max','sales_ymd_min']
df_sales_ymd.query('sales_ymd_max != sales_ymd_min').head(10)
Ausgabe
|
customer_id |
sales_ymd_max |
sales_ymd_min |
| 1 |
CS001114000005 |
20190731 |
20180503 |
| 2 |
CS001115000010 |
20190405 |
20171228 |
| 3 |
CS001205000004 |
20190625 |
20170914 |
| 4 |
CS001205000006 |
20190224 |
20180207 |
| 13 |
CS001214000009 |
20190902 |
20170306 |
| 14 |
CS001214000017 |
20191006 |
20180828 |
| 16 |
CS001214000048 |
20190929 |
20171109 |
| 17 |
CS001214000052 |
20190617 |
20180208 |
| 20 |
CS001215000005 |
20181021 |
20170206 |
| 21 |
CS001215000040 |
20171022 |
20170214 |
Kommentar
- Wird verwendet, wenn Sie Daten mit demselben Wert gemeinsam in Pandas DataFrame / Series verarbeiten und die Summe oder den Durchschnitt der Daten mit demselben Wert überprüfen möchten.
- ** 'Groupby' wird verwendet, wenn Sie Daten mit demselben Wert oder derselben Zeichenfolge erfassen und allgemeine Operationen (Summe, Durchschnitt usw.) für jeden Wert oder dieselbe Zeichenfolge ausführen möchten. ** ** **
・ ** '. Agg ({' sales_ymd ': [' max ',' min ']})' ist der Maximalwert (= neuestes Verkaufsdatum) und der Minimalwert (= ältestes Verkaufsdatum) von '.sales_ymd'. Wird angezeigt. ** ** **
- ** '. Reset_index ()' wird verwendet, wenn Sie die durch 'groupby' getrennten Indexnummern Seriennummern ab 0 neu zuweisen möchten. ** ** **
-Die 2. und 3. Zeile sind der bereits erwähnte Code, aber der Spaltenname wird durch "Spalten" und die Bedingung durch "Abfrage" angegeben. **
- Das gleiche Ergebnis wird auch mit dem folgenden Code in der zweiten Zeile ausgegeben.
Aus 'customer_id' wird jedoch'customer_id_ '.
Code
df_sales_ymd.columns = ["_".join(pair) for pair in df_sales_ymd.columns]