[英]Plotting histogram in Pandas/matplotlib for each hour of the day
我有一個每小時粒度的時間序列數據集,顯示一年中每天每小時的資產價格回報。
我正在嘗試繪制一天中每個小時的收益分布,並認為可能有一種方法可以按小時對收益進行分組,然后繪制每小時的直方圖 - 因此循環/函數/方法的輸出(即我要實現的目標)將是 24 個分布圖,顯示整個時間段內一天中每個小時的收益分布。
我當前的數據幀是多索引的Day
, Hour
(這可能不正確實現我的目標,如果需要,我可以更改它)。
我能夠使用groupby
獲得時間范圍內的每小時平均回報( df.groupby("Hour").mean()
),並認為我可以使用類似的方法來繪制我的分布。
任何關於如何實現這一目標的建議將不勝感激
具有非常簡單數據的示例(僅 3 天的上午 9-10 點和上午 10-11 點):
import pandas as pd
import matplotlib.pyplot as plt
arrays = [[1, 1, 2, 2, 3, 3], [9, 10, 9, 10, 9, 10]]
ind = pd.MultiIndex.from_arrays(arrays, names=['Day', 'Hour'])
df = pd.DataFrame({'Price': [34, 35, 37, 31, 30, 29]}, index=ind)
for hour, group in df.groupby("Hour"):
group.plot(kind='hist', bins=10, title=f'{hour}:00 - {hour+1}:00')
plt.show()
是的, groupby
已經完全符合您的要求——將 DataFrame 分組。 然后,您可以輕松地查看這些組並單獨繪制每個組。 (事實上,對我來說,在組列表上調用.mean()
是不太直觀的事情。)。 這是打印每個 groupby 組的輸出:
Price
Day Hour
1 9 34
10 35
2 9 37
10 31
3 9 30
10 29
(9, Price
Day Hour
1 9 34
2 9 37
3 9 30)
(10, Price
Day Hour
1 10 35
2 10 31
3 10 29)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.