prov_count = list(dict(df['province_name'].value_counts()).items())
# print(df)
print(df['province_name'])
prov_count=[(x, int(y)) for x, y in prov_count]
可以看到数据格式如下:
# prov_count = [('江苏', 43), ('北京', 42), ('浙江省', 31), ('湖南', 28), ('湖北', 25), ('山东', 25), ('陕西', 23), ('四川', 23), ('上海', 23), ('河南', 22), ('广东', 21), ('安徽', 20), ('辽宁', 19), ('福建', 18), ('江西', 17), ('黑龙江', 16), ('重庆', 16), ('广西', 16), ('贵州', 12), ('云南', 12), ('河北', 12), ('天津', 11), ('山西', 10), ('新疆', 10), ('内蒙古', 9), ('吉林', 9), ('甘肃', 9), ('海南', 5), ('宁夏', 5), ('青海', 3), ('西藏', 1)]
print("prov_count:", prov_count) # 打印省份数量列表,确保它包含了正确的数据
然后我们就可以得到答案了。这是由于prov_count的省份数据是简称,而china.json中的数据为全称,导致数据不匹配,出现NaN错误。
所以可以使用下面的json字典对其进行替换
{
"北京市": "北京",
"天津市": "天津",
"河北省": "河北",
"山西省": "山西",
"内蒙古自治区": "内蒙古",
"辽宁省": "辽宁",
"吉林省": "吉林",
"黑龙江省": "黑龙江",
"上海市": "上海",
"江苏省": "江苏",
"浙江省": "浙江",
"安徽省": "安徽",
"福建省": "福建",
"江西省": "江西",
"山东省": "山东",
"河南省": "河南",
"湖北省": "湖北",
"湖南省": "湖南",
"广东省": "广东",
"广西壮族自治区": "广西",
"海南省": "海南",
"重庆市": "重庆",
"四川省": "四川",
"贵州省": "贵州",
"云南省": "云南",
"西藏自治区": "西藏",
"陕西省": "陕西",
"甘肃省": "甘肃",
"青海省": "青海",
"宁夏回族自治区": "宁夏",
"新疆维吾尔自治区": "新疆",
"台湾省": "台湾",
"香港特别行政区": "香港",
"澳门特别行政区": "澳门"
}
# 加载 JSON 文件
with open('../信息办/Data/province_mapping.json', 'r', encoding='utf-8') as f:
province_mapping = json.load(f)
# 将省份简称替换为全称
prov_count_replaced = [(province_mapping.get(province[0], province[0]), province[1]) for province in prov_count]
# 输出替换后的结果
# print("替换后",prov_count_replaced)
替换后:
成功解决问题