使用 Seaborn 创建热图时出现数据框透视问题

Trouble Pivoting Dataframe when Create a HeatMap Plot with Seaborn

我尝试过使用 seaborn 创建热图。我使用的数据框是:https://raw.githubusercontent.com/resbaz/r-novice-gapminder-files/master/data/gapminder-FiveYearData.csv

数据集有 5 列,即:country、year、pop、continent、lifeExp 和 gdpPercap。我想创建一个枢轴 table 数据框,其中年份沿 x 轴,大洲沿 y 轴,lifeExp 填充在单元格中,然后将其绘制到热图。

我做的第一件事是使用代码旋转数据框

df1 = pd.read_csv('https://raw.githubusercontent.com/resbaz/r-novice-gapminder-files/master/data/gapminder-FiveYearData.csv')
df2 = df1.pivot('year','continent','lifeExp')

但出现错误。

所以,我尝试将代码更改为:

df = pd.read_csv('https://raw.githubusercontent.com/resbaz/r-novice-gapminder-files/master/data/gapminder-FiveYearData.csv')
print(df.head())
df2 = df.pivot_table(values= 'lifeExp', index=['year', 'continent'])
print(df2)

而df2的输出是这样的

             lifeExp

year continent
1952 Africa 39.135500 Americas 53.279840 Asia 46.314394 Europe 64.408500 Oceania 69.255000 1957 Africa 41.266346 Americas 55.960280 Asia 49.318544 Europe 66.703067 Oceania 70.295000 .....

当我试图将它绘制到 seaborn 时

sns.heatmap(df2)

lifeExp 不会填充热图。

如何修复?

-- 嗨 ebuzz168,

在我看来,您似乎已将 'year' 和 'continent' 都设置为索引,而未将任何内容设置为列。查看 documentation 函数调用应如下所示:

table = df.pivot_table(values='lifeExp', index='year', columns='continent', aggfunc=np.mean)
sns.heatmap(table)