使用 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)
我尝试过使用 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)