用Pandas画图遇到的问题(plot、pivot、unstack)
来源:互联网 发布:wps office mac 编辑:程序博客网 时间:2024/06/06 02:46
整理自优达学城课程论坛
背景
在学习优达学城的课程,有一个练习是使用Pandas绘图。
想画的图是:每个UNIT的每天平均气温
- 按 UNIT 和 DATEn 分组,计算出 tempi 的平均值
- 但直接使用 plot() 只能画出一条折线的图
%pylab inlineimport matplotlib.pyplot as pltimport seaborn as snsimport pandas as pdfilename = 'nyc-subway-weather.csv'subway_df = pd.read_csv(filename)tempi_by_date_n_unit = subway_df[['UNIT', 'DATEn', 'tempi']]mean = tempi_by_date_n_unit.groupby(['DATEn', 'UNIT']).mean()mean.plot()
气温均值数据(前一小部分):
如果直接对 气温均值数据 调用 plot() 画图,会是以下这样:
但这不是想要的图。
处理数据
然后各种搜索,最后有一个办法行得通:把 UNIT 和对应的气温均值数据变换成columns
%pylab inlineimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsfilename = 'nyc-subway-weather.csv'subway_df = pd.read_csv(filename)tempi_by_date_n_unit = subway_df[['UNIT', 'DATEn', 'tempi']]mean = tempi_by_date_n_unit.groupby(['DATEn', 'UNIT'], as_index=False).mean()new_df = pd.DataFrame(mean['DATEn'].drop_duplicates())for i in mean['UNIT'].drop_duplicates(): i_df = mean[mean['UNIT'].isin([i])][['DATEn', 'tempi']] new_df = new_df.merge(i_df).rename(columns={'tempi':i})new_df.set_index('DATEn').plot()
出来的效果,跟想要的效果类似,但貌似横坐标少了好多日期数据:
这个生成过程有点繁琐。。。
找到 pivot
在论坛中提问后,继续进行搜索,恰好看到一篇文章谈到 轴向旋转,即将行转成列! 就是使用 DataFrame 的 pivot方法:
pivot_mean = mean.pivot(index='DATEn', columns='UNIT', values='tempi')pivot_mean.plot()
这么一行代码,就可以旋转轴向,并画出想要的效果
新问题
如果要将多个columns作为index,进行轴向旋转,要怎么做?
对 pivot 进行尝试
%pylab inlineimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsdf = pd.DataFrame({ 'cat': ['M','M','M','M','N','N','N','N'], 'foo': ['one','two','three','four','one','two','three','four'], 'bar': ['A', 'B', 'A', 'B', 'A', 'B','A','B'], 'baz': [1, 2, 3, 4, 5, 6,7,8] })
想要的效果:以 [‘cat’, ‘foo’] 为 index,转置 bar,然后以 baz 作为 values
但我使用 pivot() 会报错,好像是数量对不上,但不知道具体是怎样。官方文档中没找到 multindex 的情况。
找到 unstack
后续搜索找到了 unstack() 方法,可以实现上述效果。
df.groupby(['cat', 'foo','bar']).count().unstack()
后续
当时的问题 “pivot() 不支持多个index的轴向转置?”,发到了课程论坛中。导师回复如下:
https://stackoverflow.com/questions/35414625/pandas-how-to-run-a-pivot-with-a-multi-index
PS:stackoverflow.com是个好地方! 还有,英语很重要 Orz…
阅读全文
0 0
- 用Pandas画图遇到的问题(plot、pivot、unstack)
- pandas学习笔记3—数据重塑图解Pivot, Pivot-Table, Stack and Unstack
- pandas 中 stack 和 unstack的用法
- 关于plot画图的m文件不能画图的问题
- 安装pandas遇到的问题
- pandas value_couts遇到的问题
- matlab plot遇到的小问题
- matlab中plot函数画图的相关问题
- android画图遇到的问题
- Matlab plot画图的用法
- pandas pivot
- 用matlab的plot画图的几种用法
- 用matlab的plot画图的几种用法
- 用matlab的plot画图的几种用法
- matlab用plot画图后显示某个点的坐标
- MATLAB的二维画图(以plot为主)
- plot画图
- keras画图(可视化)中遇到的问题以及解决办法
- BZOJ 1070 [SCOI 2007]修车
- java ee项目的小结
- Git .gitignore文件忽略(自己做过测试了)
- Java创建线程的三种方式及其对比
- Java的static修饰符
- 用Pandas画图遇到的问题(plot、pivot、unstack)
- wget 下载整个网站,或者特定目录
- windows后台运行redis
- Linux学习第六篇--Linux的权限
- PCL VIEWER
- Anko 我遇到的坑 (应该会持续更新,PS:给自己定个小目标,然后坐等打脸)
- 教你 Debug 的正确姿势——记一次 CoreMotion 的 Crash
- 浅析Java Object Serialization与 Hadoop 序列化
- 链表 环形 生产者消费者模型