【问题标题】:Using seaborn heatmap使用 seaborn 热图
【发布时间】:2017-08-18 21:40:03
【问题描述】:

我在 seaborn 中使用热图时遇到了一些问题

代码:

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

错误:

ValueError: Index contains duplicate entries, cannot reshape

兴趣级别有多个重复值。我的设想是纬度/经度将形成一个 2D 图,兴趣级别是地图中的值。兴趣级别是分类的,只有 3 个唯一值。

我是否使用了错误的课程,因为我正在关注 seaborn 热图教程http://seaborn.pydata.org/generated/seaborn.heatmap.html

【问题讨论】:

    标签: python pandas matplotlib seaborn


    【解决方案1】:

    您需要 pivot_table 和一些聚合函数,例如 meansum、...:

    #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)
    

    【讨论】:

      猜你喜欢
      • 2020-08-04
      • 1970-01-01
      • 2018-11-23
      • 2021-04-14
      • 2018-05-15
      • 2015-09-12
      • 2020-07-06
      • 1970-01-01
      • 2015-06-17
      相关资源
      最近更新 更多