使用 seaborn 热图
Using seaborn heatmap
我 运行 遇到一些在 seaborn 中使用热图的问题
代码:
df[['latitude', 'longitude', 'interest_level']]
a = df.pivot('latitude', 'longitude', 'interest_level')
错误:
ValueError: Index contains duplicate entries, cannot reshape
兴趣水平有多个重复值。我设想的是 lat/long 将形成一个二维图,兴趣级别是地图中的值。兴趣水平是绝对的,只有 3 个唯一值。
我是不是用错了 class 因为我正在学习 seaborn 热图教程 http://seaborn.pydata.org/generated/seaborn.heatmap.html
您需要 pivot_table
和一些聚合函数,例如 mean
、sum
、...:[=21=]
#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
,聚合函数和unstack
:
a = df.groupby(['latitude','longitude'])['interest_level'].mean().unstack()
样本:
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)
我 运行 遇到一些在 seaborn 中使用热图的问题
代码:
df[['latitude', 'longitude', 'interest_level']]
a = df.pivot('latitude', 'longitude', 'interest_level')
错误:
ValueError: Index contains duplicate entries, cannot reshape
兴趣水平有多个重复值。我设想的是 lat/long 将形成一个二维图,兴趣级别是地图中的值。兴趣水平是绝对的,只有 3 个唯一值。
我是不是用错了 class 因为我正在学习 seaborn 热图教程 http://seaborn.pydata.org/generated/seaborn.heatmap.html
您需要 pivot_table
和一些聚合函数,例如 mean
、sum
、...:[=21=]
#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
,聚合函数和unstack
:
a = df.groupby(['latitude','longitude'])['interest_level'].mean().unstack()
样本:
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)