我有熊貓數據幀,看起來像這樣:Python的大熊貓算具體統計
| index | order_id | product_id | user_id | days_since_prior_order | order_number |
|-------|----------|------------|---------|------------------------|--------------|
| 0 | 177 | 21903 | 48308 | 8.0 | 27 |
| 1 | 177 | 40723 | 48308 | 8.0 | 27 |
| 2 | 177 | 27531 | 48308 | 8.0 | 27 |
| 3 | 177 | 1158 | 48308 | 8.0 | 27 |
| 4 | 177 | 37766 | 48308 | 8.0 | 27 |
| 5 | 177 | 48299 | 48308 | 8.0 | 27 |
| 6 | 177 | 46802 | 48308 | 8.0 | 27 |
| 7 | 177 | 38159 | 48308 | 8.0 | 27 |
| 8 | 177 | 35055 | 48308 | 8.0 | 27 |
| 9 | 177 | 40311 | 48308 | 8.0 | 27 |
| 10 | 177 | 5022 | 48308 | 8.0 | 27 |
| 11 | 177 | 19906 | 48308 | 8.0 | 27 |
| 12 | 177 | 29987 | 48308 | 8.0 | 27 |
| 13 | 177 | 9076 | 48308 | 8.0 | 27 |
| 14 | 177 | 43352 | 48308 | 8.0 | 27 |
| 15 | 177 | 33731 | 48308 | 8.0 | 27 |
| 16 | 177 | 24852 | 48308 | 8.0 | 27 |
| 17 | 220 | 3919 | 63952 | 6.0 | 26 |
| 18 | 220 | 11432 | 63952 | 6.0 | 26 |
| 19 | 220 | 14992 | 63952 | 6.0 | 26 |
| 20 | 378 | 13249 | 128710 | 2.0 | 66 |
| 21 | 378 | 43693 | 128710 | 2.0 | 66 |
| 22 | 946 | 1529 | 157339 | 3.0 | 10 |
| 23 | 946 | 20734 | 157339 | 3.0 | 10 |
| 24 | 946 | 22935 | 157339 | 3.0 | 10 |
| 25 | 946 | 26728 | 157339 | 3.0 | 10 |
這不是完整的數據集,表中只是很小的一部分。 我想要做的是計算每個用戶的產品重新訂購之間的平均天數。因此,對於每個用戶,我們採取所有包含特定product_id的訂單,然後計算這些訂單之間的時間(包括沒有此產品的其他訂單)((我們使用order_number來確定訂單的訂單)),然後取其平均值。我想用熊貓來做,因爲數據集非常大,我沒有太多的RAM和資源來計算使用傳統的Python代碼。我怎樣才能做到這一點?
編輯: 我似乎不夠清楚。我想要的是當用戶多次訂購產品時,計算這個產品訂單和每個產品Id之間的天數。所以我想知道怎麼是訂購的產品。
編輯2: 我做了一個CSV文件,一個用戶,所以你可以看看這個DF的樣子:df_for_one_user.csv
編輯3:「days_since_prior_order」這和以前的訂單用戶之間的幾天。問題在於可能是沒有特定產品的訂單。
您在此處發佈中不包含任何「重塑」的樣本東西,我覺得呢?根據我的經驗,使用熊貓不會爲您節省任何內存(事實上,對於像pivot這樣的操作它可能會變得更糟)。 – Mephy
@Mephy我相信它會更優化,然後我寫任何代碼;) 此表只是舉例。我無法在這裏發佈整個數據集。這個想法是,用戶可以多次訂購產品,我想知道這些時間之間經過了多少天。 – UpmostScarab
我發現混淆的是days_since_prior_order似乎對每個(用戶,產品對)都是恆定的......你能提供一個更相關的例子嗎? – FLab