【发布时间】:2020-12-09 14:58:45
【问题描述】:
基本上,我的最终结果应该是X 最常见的原产国X 最喜欢的目的地的热图(如 R 问题How to create heatmap only for 50 highest value 此处)。假设x=2 与下面的小玩具数据框对齐:
import pandas as pd
df = pd.DataFrame({'destination_1': ['Germany', 'France', 'UK', 'India', 'China'],
'destination_2': ['China', 'Vietnam', 'Namibia', 'India', 'UK'],
'destination_3' : ['France', 'Italy', 'Namibia', 'China', 'UK'],
'origin' : ['Germany', 'US', 'UK', 'China', 'UK']})
目的地计数应基于所有三个目的地变量的提及。为了解决这个问题,我将数据融合并旋转。
df1 = df.melt(id_vars= ['origin'],
value_vars= ['destination_1', 'destination_2', 'destination_3'], var_name='columns')
df_heatmap = df1.pivot_table(index='origin',columns='value',aggfunc='count')
df_heatmap 基本上已经是一张热图,可视化它没有问题。对我来说唯一的问题是我不知道在哪里/如何放置过滤器以仅保留 x 最常见的来源和目的地。
【问题讨论】:
标签: python pandas pivot heatmap melt