繁体   English   中英

Geopandas - 带有大陆数据的图表

[英]Geopandas - plot chart with continent data

我正在尝试使用 Geopandas 绘制大陆上的数据。

我的数据透视表中有以下数量的票证,这些票证是从每个国家/地区记录的票证数量:

    Number of Tickets
region
Africa            370
Americas         1130
Asia              873
Europe            671
Oceania           445

在我的工单列表数据框中,我记录了每个国家/地区的案例。 每个国家都映射到一个地区和一个大陆。 按照逻辑,记录的每张票都分配有国家、地区和大洲。

为了能够绘制数据,我将 Geopandas 数据框(国家几何图形)与我的 3 个字母国家代码的票证数据框合并,并确保生成的数据框是一个地理数据框:

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”(3 个字母的国家/地区代码。)

我假设这是由于 geojson 文件中未定义“大陆”地理,但我希望 Python 通过将票数相加来填充。 我看到我的期望在某处有一个错误的逻辑,但我看不到。

关于如何让大陆情节发挥作用的任何想法?

谢谢你。

编辑:“世界”数据框是从https://datahub.io/core/geo-countries下载的 geojson 文件

您可以使用 GeoPandas 数据帧中的 solve dissolve()方法。 您可以在此处查看 GeoPandas 文档。 您的代码可以这样修改:

tickets_region = tickets_region.dissolve(by='continent', aggfunc='sum')

fig, ax = plt.subplots()
ax = tickets_region.plot(column='Number of Tickets', 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()

我最近利用这个线程进行了分析。 数据缺少大陆坐标来绘制图表,因此有一个想法导入现有数据集并将它们合并在一起。 这是导入和dissolve代码:

import geopandas as gpd

world = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres")).drop(['gdp_md_est'], axis=1)
world = world.dissolve(by='continent', aggfunc='sum')
world = world.merge(d, how='inner', left_on='continent', right_index=True)

Kaggle 笔记本可在https://www.kaggle.com/code/pavfedotov/gtc-map

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM