我有一個包含訂單的資料框。每個產品都有一個顏色。我想創建每月資料的(線)圖并顯示整個月的顏色發生情況。
當前資料幀的片段:
Color
2021-08-25 17:43:30 Blue
2021-08-25 17:26:34 Blue
2021-08-25 17:15:51 Green
2021-09-02 14:23:19 Blue
2021-09-04 18:11:17 Yellow
我想我需要先創建一個額外的列,其中包含整個月的發生百分比。我嘗試使用:
df.groupby(['Color']).Color.agg([('Color_count', 'count')]).reset_index()
這給了我:
Color Color_count
0 Blue 2
1 Green 1
所需的輸出應該為我提供包含所有顏色和每月出現百分比的列,例如:
Blue Green Yellow
2021-08-31 0.73 0.24 0.00
2021-09-30 0.66 0.29 0.01
有了這些百分比,我可以繪制一個圖來顯示顏色的月度資料。
先感謝您。
uj5u.com熱心網友回復:
Grouper與SeriesGroupBy.value_counts和 一起使用Series.unstack:
df1 = (df.groupby(pd.Grouper(freq='M'))['Color']
.value_counts(normalize=True)
.unstack(fill_value=0)
.rename_axis(None, axis=1))
print (df1)
Blue Green Yellow
2021-08-31 0.666667 0.333333 0.0
2021-09-30 0.500000 0.000000 0.5
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/366590.html
上一篇:使用Python中的函式修改資料幀列時出現時間資料錯誤
下一篇:部分級別的熊貓多索引交集
