使用 pandas 数据框绘制热图

plotly express heatmap using pandas dataframe

我正在为一家绘制南美大陆犯罪地图的非政府组织做一些志愿者工作。这是我第一次使用 pandas,如果您能帮助我解决以下情况,我将不胜感激。

我有以下数据框:

df = pd.DataFrame({'country': ['Brazil', 'Argentina', 'Uruguay', 'Brazil', 'Argentina', 'Uruguay', 'Brazil', 'Argentina', 'Uruguay'],
                   'year': [2015, 2015, 2015, 2016, 2016, 2016, 2017, 2017, 2016],
                   'occurrence': ['murder', 'murder', 'rape', 'rape', 'arson', 'arson', 'murder', 'murder', 'arson']})

我想总结每年每个国家/地区的犯罪发生率,并使用 plotly express 热图 显示结果,其中年份将映射到 x 轴,国家到 y 轴,颜色将显示出现的次数。

您认为您可以帮我转换数据并将其输入适当的 plotly express 热图函数吗?

谢谢!

您应该先按 country 对数据进行分组,然后再按 year 分组并计算犯罪数量:

new_df = df.groupby(["country","year"])["occurrence"].count().reset_index()

之后,您应该根据需要通过旋转数据来更改数据结构:

new_df = new_df.pivot(index='country', columns='year')['occurrence'].fillna(0)

现在,您可以绘制热图:

import plotly.express as px
fig = px.imshow(new_df, x=new_df.columns, y=new_df.index)
fig.update_layout(width=500,height=500)
fig.show()