如何根据CSV数据集填充shapefile的位置?
How to fill locations of shapefile based on CSV data set?
我在 Python 中使用 GeoPandas 从给定的 CSV 数据集和佛罗里达州的 shapefile 创建佛罗里达州的热图:
这是我的代码,用于显示 shapefile 中的状态和 CSV 数据集内容(这是佛罗里达县的 Covid 病例列表),
shapefile 还方便地包含县名及其各自多边形的数据:
我的计划是解析 CSV 并跟踪每个县的病例数,然后据此构建热图,但我不确定如何使用 shapefile。
- 我相信我找到了您正在使用的相同形状文件。我不知道您的 COVID 数据来源,所以使用了纽约时报数据 (https://github.com/nytimes/covid-19-data)
- 基于地图的热图的常用术语是等值线
- 这是将您的几何图形与您的 COVID 数据对齐的情况
- COVID 数据按县、几何按 sub-county。因此,将几何图形滚动到县以使其一致
- 几何在两列中对 FIPS 进行编码,已将其组合创建一个新列。 COVID 数据具有 FIPS 作为浮点数。已将其修改为字符串
- 现在这是 pandas
merge()
的一个简单案例,用于组合/连接几何和 COVID 数据
- 终于生成了视觉效果。这是一个生成等值线的简单案例。 https://geopandas.org/en/stable/docs/user_guide/mapping.html
import geopandas as gpd
import pandas as pd
gdf = gpd.read_file(
"https://www2.census.gov/geo/tiger/TIGER2016/COUSUB/tl_2016_12_cousub.zip"
)
# NY Times data is by county not sub-county. rollup geometry to county
gdf_county = (
gdf.dissolve("COUNTYFP")
.reset_index()
.assign(fips=lambda d: d["STATEFP"] + d["COUNTYFP"])
.loc[:, ["fips", "geometry", "STATEFP", "COUNTYFP", "NAME"]]
)
# get NY times data by county
df = pd.read_csv(
"https://raw.githubusercontent.com/nytimes/covid-19-data/master/live/us-counties.csv"
)
# limit to florida and make fips same type as geometry
df_fl = (
df.loc[df["state"].eq("Florida")]
.dropna(subset=["fips"])
.assign(fips=lambda d: d["fips"].astype(int).astype(str))
)
# merge geometry and covid data
gdf_fl_covid = gdf_county.merge(df_fl, on="fips")
# interactive folium choropleth
gdf_fl_covid.explore(column="cases")
# static matplotlib choropleth
gdf_fl_covid.plot(column="cases")
我在 Python 中使用 GeoPandas 从给定的 CSV 数据集和佛罗里达州的 shapefile 创建佛罗里达州的热图:
这是我的代码,用于显示 shapefile 中的状态和 CSV 数据集内容(这是佛罗里达县的 Covid 病例列表),
shapefile 还方便地包含县名及其各自多边形的数据:
我的计划是解析 CSV 并跟踪每个县的病例数,然后据此构建热图,但我不确定如何使用 shapefile。
- 我相信我找到了您正在使用的相同形状文件。我不知道您的 COVID 数据来源,所以使用了纽约时报数据 (https://github.com/nytimes/covid-19-data)
- 基于地图的热图的常用术语是等值线
- 这是将您的几何图形与您的 COVID 数据对齐的情况
- COVID 数据按县、几何按 sub-county。因此,将几何图形滚动到县以使其一致
- 几何在两列中对 FIPS 进行编码,已将其组合创建一个新列。 COVID 数据具有 FIPS 作为浮点数。已将其修改为字符串
- 现在这是 pandas
merge()
的一个简单案例,用于组合/连接几何和 COVID 数据
- 终于生成了视觉效果。这是一个生成等值线的简单案例。 https://geopandas.org/en/stable/docs/user_guide/mapping.html
import geopandas as gpd
import pandas as pd
gdf = gpd.read_file(
"https://www2.census.gov/geo/tiger/TIGER2016/COUSUB/tl_2016_12_cousub.zip"
)
# NY Times data is by county not sub-county. rollup geometry to county
gdf_county = (
gdf.dissolve("COUNTYFP")
.reset_index()
.assign(fips=lambda d: d["STATEFP"] + d["COUNTYFP"])
.loc[:, ["fips", "geometry", "STATEFP", "COUNTYFP", "NAME"]]
)
# get NY times data by county
df = pd.read_csv(
"https://raw.githubusercontent.com/nytimes/covid-19-data/master/live/us-counties.csv"
)
# limit to florida and make fips same type as geometry
df_fl = (
df.loc[df["state"].eq("Florida")]
.dropna(subset=["fips"])
.assign(fips=lambda d: d["fips"].astype(int).astype(str))
)
# merge geometry and covid data
gdf_fl_covid = gdf_county.merge(df_fl, on="fips")
# interactive folium choropleth
gdf_fl_covid.explore(column="cases")
# static matplotlib choropleth
gdf_fl_covid.plot(column="cases")