python构建城市和省份字典的实例应用

阅读: 评论:0

python构建城市省份字典的实例应⽤
1. ⾸先导⼊数据
UserInfoData1 = pd.read_csv('data.csv',encoding = 'GBK')
UserInfoData1.head()
数据长这个样⼦:
3. 统⼀格式,去掉后缀
# 去掉城市名称中的 “市”
# UserInfoData1.UserInfo_20 = [x[0:-1] for x in UserInfoData1.UserInfo_20 if UserInfoData1.ull().all()]
# Length of values does not match length of index
# ⽤此⽅法的时候,当把序列⾥⾯的单个缺失值拿出来的时候,不能判断是否为缺失值,因此转化为字符串判断 == ‘nan’
def delete_shi(s):
str_s = str(s)
if str_s=='nan':          # AttributeError: 'str' object has no attribute 'isnull'
return s
else:
if str_s[-1]=='市':
return str_s[0:-1]
else:北戴河必玩的景点
return s
UserInfoData1.UserInfo_20 = UserInfoData1.UserInfo_20.apply(lambda s: delete_shi(s))
UserInfoData1.UserInfo_8 = UserInfoData1.UserInfo_20.apply(lambda s: delete_shi(s))
4. 查看⼀下UserInfo_2为⾮缺失值时的情况
# UserInfo_2 为⾮缺失值
新乡万仙山景区index=UserInfoData1[UserInfoData1.ull() & UserInfoData1.UserInfo_4.isnull() & UserInfoData1.UserInfo_8.isnull() & UserInfoData1.UserInfo_20.isnull()].index UserInfoData1[UserInfoData1.ull() & UserInfoData1.UserInfo_4.isnull() & UserInfoData1.UserInfo_8.isnull() & UserInfoData1.UserInfo_20.isnull()]
输出如下:
可以看到,在UserInfo_2为⾮缺失值时,其他数据有不同程度缺失
4. 我们以UserInfo_2填充UserInfo_4
# 填补UserInfo_4缺失值
UserInfoData1.UserInfo_4[index]=UserInfoData1.UserInfo_2[index]
5. 统⼀格式,去掉省份变量后缀
# 处理省份变量
def delete_postfix1(s,str):象山旅游攻略自驾二日游
if s[-1]==str:重庆万盛黑山谷图片
return s[0:-1]
else:东山岛图片
return s
def delete_postfix2(s,str):
if s[0]=='内':
return s[0:3]
elif s[-3:]==str:
return s[0:2]
else:
return s
UserInfoData1.UserInfo_19 = UserInfoData1.UserInfo_19.apply(lambda s:delete_postfix2(s,'⾃治区'))
UserInfoData1.UserInfo_19 = UserInfoData1.UserInfo_19.apply(lambda s:delete_postfix1(s,'省'))
UserInfoData1.UserInfo_19 = UserInfoData1.UserInfo_19.apply(lambda s:delete_postfix1(s,'市'))
6. 格式统⼀好后,导⼊之前处理好的城市-省份对应字典
海南琼海疫情最新情况因为,字典中的城市并不全,且名称与数据中有出⼊,所以⽤数据更新字典
import pickle
pickle_file = open('dicts.pkl', 'rb')
my_list2 = pickle.load(pickle_file)
pickle_file.close()
my_list2.update({'⼭东':['济南','青岛','淄博','枣庄','东营','烟台','潍坊','济宁','泰安','威海','⽇照','莱芜',
'临沂','德州','聊城','滨州','荷泽','菏泽']})
my_list2.update({'内蒙古':['呼和浩特','包头','乌海','⾚峰','通辽','鄂尔多斯','呼伦贝尔','巴彦淖尔','乌兰察布',
'兴安盟','锡林郭勒盟','阿拉善盟','巴彦淖尔盟','乌兰察布盟']})
my_list2.update({'贵州':['贵阳','六盘⽔','遵义','安顺','铜仁地区','黔西南布依族苗族⾃治州','毕节地区',
'黔东南苗族侗族⾃治州','黔南布依族苗族⾃治州','黔南','黔东南','毕节','铜仁']})
my_list2.update({'新疆':['乌鲁⽊齐','克拉玛依','吐鲁番地区','哈密地区','昌吉回族⾃治州','博尔塔拉蒙古⾃治州','巴⾳郭楞蒙古⾃治州','阿克苏地区','克孜勒苏柯尔克孜⾃治州',
'喀什地区','和⽥地区','伊犁哈萨克⾃治州','塔城地区','阿勒泰地区','⽯河⼦','阿拉尔','图⽊舒克','五家渠','哈密','阿克苏']})
7. 根据UserInfo_4,UserInfo_7的数据填充UserInfo_8的数据
思路是:UserInfo_4是城市,UserInfo_7是省份,如果UserInfo_4属于UserInfo_7,那么认为UserInfo_8(城市)跟UserInfo_4⼤概率为⼀个城市
for c,p in zip(UserInfoData1.UserInfo_4,UserInfoData1.UserInfo_7):
if str(p)=='nan':
pass
else:
province = (p)
if c in province:
i = UserInfoData1[UserInfoData1.UserInfo_4==c].index
UserInfoData1.UserInfo_8[i] = UserInfoData1.UserInfo_4[i]
当然,这个⽅法处理这个问题也不是特别合适,但如果遇到需要⽤城市判断省份,⽤县城判断城市,省份的时候还是⼤有可为的。

本文发布于:2023-07-05 21:18:59,感谢您对本站的认可!

本文链接:http://www.035400.com/whly/3/514106.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:治州   省份   城市   判断   缺失   字典   时候   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2024-2030 Comsenz Inc.Powered by © 文化旅游网 滇ICP备2022007236号-403 联系QQ:1103060800网站地图