2017-04-13 7 views
4

私はpandas DataFrameを使って海賊ヒートマップを描こうとしています。 私のデータ形式はPandas DataFrame to Seaborn

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 

どのように私はあなたが列yyyymmを変換するためのto_datetimeを使用して、新しいSeries(列)を作成することができます

2011  2012  2013 2015 

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

答えて

2

以下のようなデータ形式をseabornするデータフレームを変更することができますと、以下の通りでありますdt.monthおよびdt.year。最後の形はpivotで、必要に応じてNaN0と置き換えてfillnaに置き換えてください。

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によって同様の形状を変更されています。最後に

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使用:

import seaborn as sns 
ax = sns.heatmap(df1) 

graph

+0

jezrael - 非常に – user3571501

+0

うれしいありがとうあなたを助けることができる - 小さいadv氷を未来に - いくつかのコードを追加して、あなたが質問しようとしているものは、その後、ダウンボートを取得しないでください。いい日。 – jezrael

関連する問題