如何根据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")