Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Geopandas-具有大陆数据的绘图图_Python_Python 3.x_Geopandas - Fatal编程技术网

Python Geopandas-具有大陆数据的绘图图

Python Geopandas-具有大陆数据的绘图图,python,python-3.x,geopandas,Python,Python 3.x,Geopandas,我正试图用Geopandas绘制大陆上的数据 根据每个国家/地区记录的票证数量,我的数据透视表中有以下票证数量: Number of Tickets region Africa 370 Americas 1130 Asia 873 Europe 671 Oceania 445 在我的票证列表数据框中,我记录了每个国家的案例。每个国家都被映射到一个地区和一个大陆。按照逻辑,每个记录的

我正试图用Geopandas绘制大陆上的数据

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

    Number of Tickets
region
Africa            370
Americas         1130
Asia              873
Europe            671
Oceania           445
在我的票证列表数据框中,我记录了每个国家的案例。每个国家都被映射到一个地区和一个大陆。按照逻辑,每个记录的票证都指定了一个国家、地区和大陆

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

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来删除它。相同的代码适用于“代码3”(三个字母的国家代码)

我假设这是由于geojson文件中未定义的“大陆”地理位置造成的,但我希望Python通过合计票证数量来填充这一地理位置。我看到我的期望在某个地方有一个断裂的逻辑,但我看不到这一点

有没有关于我如何让大陆情节运作的想法

多谢各位


编辑:“world”数据框是从GeoPandas数据框下载的geojson文件。您可以使用方法
dissole()
。您可以查看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()

很抱歉没有回复Pierre Loic。我正在测试您提到的溶解,但它对20K行没有任何影响:iPython只是变得没有响应。我仍在努力寻找你的答案,等我有了解决办法,我会想出来的。非常感谢,是的,这就是解决办法。我只想指出,当运行数千行时,使用.dissole不会结束。我建议先进行数据汇总(pivot\u table,pivot…),然后使用.discose。否则它会占用大量CPU周期并消耗大量内存。