Arbeiten mit folgendem Python-Pandas Datenrahmen df:Python Pandas berechnet durchschnittliche Anzahl der Tage zwischen Terminen
Customer_ID | Transaction_ID
ABC 2016-05-06-1234
ABC 2017-06-08-3456
ABC 2017-07-12-5678
ABC 2017-12-20-6789
BCD 2016-08-23-7891
BCD 2016-09-21-2345
BCD 2017-10-23-4567
Das Datum leider in dem TRANSACTION_ID String versteckt ist. Ich habe den Datenrahmen auf diese Weise bearbeitet.
#year of transaction
df['year'] = df['Transaction_ID'].astype(str).str[:4]
#date of transaction
df['date'] = df['Transaction_ID'].astype(str).str[:10]
#format date
df['date']=pd.to_datetime(df['date'], format='%Y-%m-%d')
#calculate visit number per year
df['visit_nr_yr'] = df.groupby(['Customer_ID', 'year']).cumcount()+1
Jetzt sieht die df wie folgt aus:
- Was ist die durchschnittliche Anzahl der Tage zwischen den Besuchen von Besuch (so zwischen 1 & 2 und zwischen:
Customer_ID | Transaction_ID | year | date |visit_nr_yr ABC 2016-05-06-1234 2016 2016-05-06 1 ABC 2017-06-08-3456 2017 2017-06-08 1 ABC 2017-07-12-5678 2017 2017-07-12 2 ABC 2017-12-20-6789 2017 2017-12-20 3 BCD 2016-08-23-7891 2016 2016-08-23 1 BCD 2016-09-21-2345 2016 2016-09-21 2 BCD 2017-10-23-4567 2017 2017-10-23 1
ich folgendes berechnen müssen 2 & 3)
- Wie hoch sind die durchschnittlichen Tage zwischen den Besuchen im Allgemeinen
Zuerst möchte ich die folgende Spalte „days_between_visits_by Jahr“ schließen (Mathematik durch Customer_ID getan werden):
Customer_ID|Transaction_ID |year| date |visit_nr_yr|days_bw_visits_yr
ABC 2016-05-06-1234 2016 2016-05-06 1 NaN
ABC 2017-06-08-3456 2017 2017-06-08 1 NaN
ABC 2017-07-12-5678 2017 2017-07-12 2 34
ABC 2017-12-20-6789 2017 2017-12-20 3 161
BCD 2016-08-23-7891 2016 2016-08-23 1 NaN
BCD 2016-09-21-2345 2016 2016-09-21 2 29
BCD 2017-10-23-4567 2017 2017-10-23 1 NaN
Bitte beachten Sie, dass ich 0s absichtlich vermieden und die Nans gehalten, falls jemand hatte zwei Besuche am selben Tag.
Als nächstes möchte ich die durchschnittlichen Tage zwischen Besuchen von besuchen (also zwischen 1 & 2 und zwischen 2 & 3 innerhalb eines Jahres) berechnen. Suche nach dieser Ausgabe: mit
output: 203.8
#the days between visits are 398,34,161,29,397 and the average of those
numbers is 203.8
Ich bin fest an der, wie die Spalte „days_bw_visits_yr“ zu erstellen:
avg_days_bw_visits_1_2 | avg_days_bw_visits_2_3
31.5 161
Schließlich habe ich die durchschnittliche Anzahl der Tage zwischen den Besuchen im Allgemeinen berechnet werden soll. Nans müssen aus der Mathematik ausgeschlossen werden.
Können Sie Ihre gewünschte (Ende) Datensatz schreiben? – MaxU
@MaxU, der Datenrahmen mit der Spalte days_bw_visits_yr, ist der gewünschte Enddatensatz - die beiden anderen Berechnungen werden dann für diesen Datensatz ausgeführt, aber nicht zum Datenrahmen hinzugefügt, da es sich um aggregierte Durchschnittswerte handelt. danke – jeangelj