2017-03-26 10 views
0

私はヒートマップを使用して、いくつかの問題に実行していますを使用してseabornにseabornヒートマップ

コード:

df[['latitude', 'longitude', 'interest_level']] 
a = df.pivot('latitude', 'longitude', 'interest_level') 

エラー:

ValueError: Index contains duplicate entries, cannot reshape 

関心度は、複数の重複した値を持っています。私が想像していることは、緯度/経度が地図内の値である関心レベルを持つ2D図を形成することです。関心レベルは3つの固有値のみを含むカテゴリに分類されます。

は、...私はhttp://seaborn.pydata.org/generated/seaborn.heatmap.html

答えて

2

あなたはmeansumのようないくつかの集約関数でpivot_tableが必要seabornヒートマップのチュートリアル以下の午前として間違ったクラスを使用しています:

#subset for pivot_table or groupby solution is not necessary, you can omit it 
#df = df[['latitude', 'longitude', 'interest_level']] 
a = df.pivot_table(index='latitude', 
        columns='longitude', 
        values='interest_level', 
        aggfunc='mean') 

またはgroupby、集計機能と:

a = df.groupby(['latitude','longitude'])['interest_level'].mean().unstack() 

Sampル:

df = pd.DataFrame({'latitude':[53,54,55,55], 
        'longitude':[10,11,12,12], 
        'interest_level':[1,5,2,6], 
        'another_col':[4,7,4,2]}) 
print (df) 
    another_col interest_level latitude longitude 
0   4    1  53   10 
1   7    5  54   11 
2   4    2  55   12 <-duplicates for 55,12 
3   2    6  55   12 <-duplicates for 55,12 

a = df.pivot_table(index='latitude', 
        columns='longitude', 
        values='interest_level', 
        aggfunc='mean') 
print (a) 
longitude 10 11 12 
latitude     
53   1.0 NaN NaN 
54   NaN 5.0 NaN 
55   NaN NaN 4.0 <- (2+6)/2 = 4 

最終:

ax = sns.heatmap(a) 
関連する問題