在某些日子只绘制pandas数据帧

时间:2017-07-22 03:51:12

标签: python python-3.x pandas matplotlib statistics

试图更好地使用Python和pandas ......

我有一些股票市场数据,我已根据"日期"添加了day_of_week列(周一,周二,周三,周四,周五)。 columnn,显然还有每天的Open,High,Low和Close列,我还添加了pct-chance列,现在我要做的就是打印出来,然后绘制pct-change for all星期一,或者我喜欢哪一天,然后我想在我的数据中绘制每周工作日直方图样式的平均pct变化,所以它看起来像星期一,星期二的直方图沿着底部的X轴,它们的平均pct变化数据在Y.

所以不知怎的,我需要弄清楚day_of_week列=="星期一"返回pct-change?但是,我假设有一种更好的方式与熊猫以某种方式,使用.loc或其他东西,但我无法弄明白:(

数据仅由一个整数索引,然后是Date,O,H,L,C,Volume,Range,Pct_change,day_of_week列等,下面是我从data.head()的输出

   Date     Open     High      Low   Settle   Volume  \
0 2017-07-20  12493.0  12567.0  12381.0  12422.0  94966.0
1 2017-07-19  12446.5  12481.5  12408.0  12432.5  68435.0
2 2017-07-18  12554.0  12569.0  12373.5  12425.5  96933.0
3 2017-07-17  12646.5  12668.0  12531.0  12587.0  65648.0
4 2017-07-14  12642.5  12658.5  12567.0  12611.0  59074.0

   Prev. Day Open Interest day_of_week  Range   < MR   > MR  Pct_change
0                 151217.0    Thursday  186.0    NaN  186.0   -0.568318
1                 148249.0   Wednesday   73.5   73.5    NaN   -0.112481
2                 154485.0     Tuesday  195.5    NaN  195.5   -1.023578
3                 145445.0      Monday  137.0  137.0    NaN   -0.470486
4                 144704.0      Friday   91.5   91.5    NaN   -0.249160

希望有人可以帮助/指出我正确的方向,谢谢!!

1 个答案:

答案 0 :(得分:1)

我认为您需要groupby汇总mean,然后DataFrame.plot.bar

df.groupby('day_of_week')['Pct_change'].mean().plot.bar()

graph

如需订购,请使用ordered categorical

cats = ['Monday','Tuesday','Wednesday','Thursday','Friday']
df['day_of_week'] = df['day_of_week'].astype('category', categories=cats, ordered=True)
df.groupby('day_of_week')['Pct_change'].mean().plot.bar()

graph1