首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >熊猫DataFrame出海

熊猫DataFrame出海
EN

Stack Overflow用户
提问于 2017-04-13 11:26:25
回答 1查看 1.4K关注 0票数 4

我正在尝试用熊猫DataFrame绘制海上热图。我的数据格式如下

代码语言:javascript
运行
复制
visit_table

   yyyymm  visit_cnt
0  201101      91252
1  201102     140571
2  201103     141457
3  201104     147680
4  201105     154066
...

68  201609     591242
69  201610     650174
70  201611     507579
71  201612     465218

如何将DataFrame改为海运数据格式,如下所示

代码语言:javascript
运行
复制
  2011       2012     2013   2015

1     91252
2     14057
3     147680
4     154066
...
11    123455
12    1234456
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-13 11:30:35

您可以使用to_datetime转换列yyyymm,然后使用dt.monthdt.year创建新的Series (列)。最后由pivot重新塑造,必要时用fillna替换NaN0

代码语言:javascript
运行
复制
df['yyyymm'] = pd.to_datetime(df['yyyymm'], format='%Y%m')
df1 = pd.pivot(index=df['yyyymm'].dt.month, columns=df['yyyymm'].dt.year, values=df.visit_cnt)
       .fillna(0)
print (df1)
yyyymm      2011      2016
yyyymm                    
1        91252.0       0.0
2       140571.0       0.0
3       141457.0       0.0
4       147680.0       0.0
5       154066.0       0.0
9            0.0  591242.0
10           0.0  650174.0
11           0.0  507579.0
12           0.0  465218.0

另一种解决方案类似,只有set_indexunstack对其进行重塑。

代码语言:javascript
运行
复制
df['yyyymm'] = pd.to_datetime(df['yyyymm'], format='%Y%m')
df['year'] = df['yyyymm'].dt.year
df['month'] = df['yyyymm'].dt.month
df1 = df.set_index(['month','year'])['visit_cnt'].unstack(fill_value=0)
print (df1)
year     2011    2016
month                
1       91252       0
2      140571       0
3      141457       0
4      147680       0
5      154066       0
9           0  591242
10          0  650174
11          0  507579
12          0  465218

最后,使用seaborn.heatmap

代码语言:javascript
运行
复制
import seaborn as sns
ax = sns.heatmap(df1)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43391009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档