如何防止 "nan" 在 geopandas 中缺少数据的位置进行标记?
How to prevent "nan" from labeling in locations with missing data in geopandas?
我在处理 csv 中丢失的数据时遇到问题。我希望下面的输出看起来一样,只是没有 nan 标签,但都保留带有缺失数据的州边界。
带有“nan”和小数问题的输出:
此外,我在小数位方面遇到了问题。我不想让这些出现。此外,我只是尝试针对我要绘制的特定数据列执行此操作。下面是我试图解决这两个问题的代码:
csv = pd.read_csv(r'C:\Downloads\Data.csv')
sf = r'C:\Downloads\s_11au16\s_11au16.shp'
US = gpd.read_file(sf)
#Merge them
data = gpd.GeoDataFrame(csv.merge(US))
#set projection
data = data.to_crs(epsg=6923)
#data = data[['NAME', 'soil_data']]
#data = data[data['soil_data'].notna()]
#data.soil_data = data.soil_data.astype(int)
#set up basemap
ax = data.plot(figsize = (12,8), column="soil_data", cmap="Greens", edgecolor='black', linewidth=.5, vmin=0, vmax=100,missing_kwds={"color": "white", "edgecolor": "k", "label": "none"})
#ax.set_title("Topsoil Moisture: Adequate + Surplus %", fontsize=18, fontweight='bold')
ax.set_axis_off()
#annotate data
label = data
label.apply(lambda x: ax.annotate(text=x['soil_data'], xy=x.geometry.centroid.coords[0], color="black", ha='center', fontsize=14,
path_effects=[pe.withStroke(linewidth=3, foreground="white")]), axis=1)
我尝试使用下面的块代码来解决问题,但这没有用。
data = data[['NAME', 'soil_data']]
data = data[data['soil_data'].notna()]
data.soil_data = data.soil_data.astype(int)
同样,这两个问题是 1) 让 nan 不加标签,以及 2) 使标签成为整数。
如果没有完全可重现的示例,很难确定,但我敢打赌:
#annotate data
label = data.dropna(subset='soil_data')
label.apply(lambda x: ax.annotate(text=int(x['soil_data']), xy=x.geometry.centroid.coords[0], color="black", ha='center', fontsize=14,
path_effects=[pe.withStroke(linewidth=3, foreground="white")]), axis=1)
我在处理 csv 中丢失的数据时遇到问题。我希望下面的输出看起来一样,只是没有 nan 标签,但都保留带有缺失数据的州边界。
带有“nan”和小数问题的输出:
此外,我在小数位方面遇到了问题。我不想让这些出现。此外,我只是尝试针对我要绘制的特定数据列执行此操作。下面是我试图解决这两个问题的代码:
csv = pd.read_csv(r'C:\Downloads\Data.csv')
sf = r'C:\Downloads\s_11au16\s_11au16.shp'
US = gpd.read_file(sf)
#Merge them
data = gpd.GeoDataFrame(csv.merge(US))
#set projection
data = data.to_crs(epsg=6923)
#data = data[['NAME', 'soil_data']]
#data = data[data['soil_data'].notna()]
#data.soil_data = data.soil_data.astype(int)
#set up basemap
ax = data.plot(figsize = (12,8), column="soil_data", cmap="Greens", edgecolor='black', linewidth=.5, vmin=0, vmax=100,missing_kwds={"color": "white", "edgecolor": "k", "label": "none"})
#ax.set_title("Topsoil Moisture: Adequate + Surplus %", fontsize=18, fontweight='bold')
ax.set_axis_off()
#annotate data
label = data
label.apply(lambda x: ax.annotate(text=x['soil_data'], xy=x.geometry.centroid.coords[0], color="black", ha='center', fontsize=14,
path_effects=[pe.withStroke(linewidth=3, foreground="white")]), axis=1)
我尝试使用下面的块代码来解决问题,但这没有用。
data = data[['NAME', 'soil_data']]
data = data[data['soil_data'].notna()]
data.soil_data = data.soil_data.astype(int)
同样,这两个问题是 1) 让 nan 不加标签,以及 2) 使标签成为整数。
如果没有完全可重现的示例,很难确定,但我敢打赌:
#annotate data
label = data.dropna(subset='soil_data')
label.apply(lambda x: ax.annotate(text=int(x['soil_data']), xy=x.geometry.centroid.coords[0], color="black", ha='center', fontsize=14,
path_effects=[pe.withStroke(linewidth=3, foreground="white")]), axis=1)