如何将 pandas df 与 geopandas df 合并以在 shapefile 上绘图
How to merge a pandas df with a geopandas df for plotting on a shapefile
我正在使用可以找到的以下 shapefile here on Github。我不打算包含输出,但这里是将其作为 geopandas df 读取并绘制 shapefile 的代码。
states = geopandas.read_file('usa-states-census-2014.shp')
states.head()
states.plot()
我还有下面的df,就是USArrests
数据集,可以找到here on Kaggle.
我想做的是合并这两个数据集,这样我就可以用 USArrests
中的特征颜色图绘制 shapefile。我运行下面的代码来合并数据集。
df = pd.read_csv("USArrests.csv")
df.rename(columns = {'Unnamed: 0':'NAME'}, inplace = True)
merged = pd.merge(df, states, on=['NAME']).drop_duplicates(subset=['NAME'])
合并有效,但现在当我 运行 states.plot()
时,我得到了一个线图,我假设这是因为 df 不再是 GeoDataFrame
。
我的问题是,如何从 USArrests
获取数据并使用它在 shapefile 上绘制颜色图?谢谢!
请注意,我正在使用以下 guide 来帮助我,但它不涵盖我的特定任务
使用GeoDataFrame.merge
方法。这样它仍然是 GeoDataFrame。你的情况是 merged
只是 pandas.DataFrame。
merged = states.merge(df, on='NAME').drop_duplicates(subset=['NAME'])
我有点猜测正确的形式,因为您没有显示任何数据框的结构。有关更多信息,请参阅文档 https://geopandas.readthedocs.io/en/latest/docs/user_guide/mergingdata.html?highlight=merge#attribute-joins
我正在使用可以找到的以下 shapefile here on Github。我不打算包含输出,但这里是将其作为 geopandas df 读取并绘制 shapefile 的代码。
states = geopandas.read_file('usa-states-census-2014.shp')
states.head()
states.plot()
我还有下面的df,就是USArrests
数据集,可以找到here on Kaggle.
我想做的是合并这两个数据集,这样我就可以用 USArrests
中的特征颜色图绘制 shapefile。我运行下面的代码来合并数据集。
df = pd.read_csv("USArrests.csv")
df.rename(columns = {'Unnamed: 0':'NAME'}, inplace = True)
merged = pd.merge(df, states, on=['NAME']).drop_duplicates(subset=['NAME'])
合并有效,但现在当我 运行 states.plot()
时,我得到了一个线图,我假设这是因为 df 不再是 GeoDataFrame
。
我的问题是,如何从 USArrests
获取数据并使用它在 shapefile 上绘制颜色图?谢谢!
请注意,我正在使用以下 guide 来帮助我,但它不涵盖我的特定任务
使用GeoDataFrame.merge
方法。这样它仍然是 GeoDataFrame。你的情况是 merged
只是 pandas.DataFrame。
merged = states.merge(df, on='NAME').drop_duplicates(subset=['NAME'])
我有点猜测正确的形式,因为您没有显示任何数据框的结构。有关更多信息,请参阅文档 https://geopandas.readthedocs.io/en/latest/docs/user_guide/mergingdata.html?highlight=merge#attribute-joins