我正在尝试使用 Geopandas 在各大洲上绘制数据。
我有一个数据透视表,显示了每个国家记录的票数:
Number of Tickets
region
Africa 370
Americas 1130
Asia 873
Europe 671
Oceania 445
在我的工单列表数据帧中,记录了来自每个国家的案例。每个国家都映射到一个地区和一个洲。根据这种逻辑,每个记录的工单都有一个指定的国家、地区和洲。
为了能够绘制数据,我将Geopandas数据帧(国家几何数据)与我的工单数据帧合并,使用三个字母的国家代码,并确保结果数据帧是地理数据帧。
tickets_region = pd.merge(world, tickets, left_on='ISO_A3', right_on='code-3')
type(tickets_region)
geopandas.geodataframe.GeoDataFrame
我尝试使用以下代码绘制数据:
fig, ax = plt.subplots()
ax = tickets_region.plot('continent', cmap='Reds',scheme='headtailbreaks')
ax.tick_params(left=False, labelleft=False, bottom=False, labelbottom=False)
plt.title('Number of Tickets by Continent')
plt.box(False)
plt.show()
然而,这个代码块从不完成,占用大量内存和CPU周期,我必须按Ctrl-C来中止它。相同的代码可用于“code-3”(三字母国家代码)。
我认为这是由于geojson文件中未定义“continent”地理位置,但我期望Python通过累加门票数量来填充该地理位置。我看到我的期望在某些地方有破损的逻辑,但我无法看到那一点。
有关如何使内容绘图工作的任何想法吗?
谢谢。
编辑:“world”数据帧是从https://datahub.io/core/geo-countries下载的geojson文件。