python – Pandas:带有multiIndex数据帧的条形图
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Pandas:带有multiIndex数据帧的条形图,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2038字,纯文字阅读大概需要3分钟。
内容图文
我有一个带有TIMESTAMP列(不是索引)的pandas DataFrame,时间戳格式如下:
2015-03-31 22:56:45.510
我还有名为CLASS和AXLES的列.我想为AXLES的每个唯一值分别计算每个月的记录数(AXLES可以取3-12之间的整数值).
我想出了resample和groupby的组合:
resamp = dfWIM.set_index('TIMESTAMP').groupby('AXLES').resample('M', how='count').CLASS
这似乎给了我一个multiIndex数据帧对象,如下所示.
In [72]: resamp
Out [72]:
AXLES TIMESTAMP
3 2014-07-31 5517
2014-08-31 31553
2014-09-30 42816
2014-10-31 49308
2014-11-30 44168
2014-12-31 45518
2015-01-31 54782
2015-02-28 52166
2015-03-31 47929
4 2014-07-31 3147
2014-08-31 24810
2014-09-30 39075
2014-10-31 46857
2014-11-30 42651
2014-12-31 48282
2015-01-31 42708
2015-02-28 43904
2015-03-31 50033
从这里,如何访问此multiIndex对象的不同组件以创建以下条件的条形图?
>当AXLES = 3时显示数据
>以月份显示x刻度 – 年份格式(无日期,小时,分钟等)
谢谢!
编辑:以下代码给我的情节,但我无法将xtick格式更改为MM-YY.
resamp[3].plot(kind='bar')
下面的编辑2是一个代码片段,它生成一个类似于我的数据的小样本:
dftest = {'TIMESTAMP':['2014-08-31','2014-09-30','2014-10-31'], 'AXLES':[3, 3, 3], 'CLASS':[5,6,7]}
dfTest = pd.DataFrame(dftest)
dfTest.TIMESTAMP = pd.to_datetime(pd.Series(dfTest.TIMESTAMP))
resamp = dfTest.set_index('TIMESTAMP').groupby('AXLES').resample('M', how='count').CLASS
resamp[3].plot(kind='bar')
编辑3:
以下是解决方案:
A.绘制整个重采样数据帧(基于@Ako的建议):
df = resamp.unstack(0)
df.index = [ts.strftime('%b 20%y') for ts in df.index]
df.plot(kind='bar', rot=0)
B.从重新采样的数据帧中绘制单个索引(基于@Alexander的建议):
df = resamp[3]
df.index = [ts.strftime('%b 20%y') for ts in df.index]
df.plot(kind='bar', rot=0)
解决方法:
以下应该可行,但没有一些数据很难测试.
首先重置索引以访问TIMESTAMP列.然后使用strftime将其格式化为您想要的文本表示(例如mm-yy).最后,将索引重置为AXLES和TIMESTAMP.
df = resamp.reset_index()
df['TIMESTAMP'] = [ts.strftime('%m-%y') for ts in df.TIMESTAMP]
df.set_index(['AXLES', 'TIMESTAMP'], inplace=True)
>>> df.xs(3, level=0).plot(kind='bar')
内容总结
以上是互联网集市为您收集整理的python – Pandas:带有multiIndex数据帧的条形图全部内容,希望文章能够帮你解决python – Pandas:带有multiIndex数据帧的条形图所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。