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.UserInfo_20.notnull().all()]#Length of values does not match length of index

#用此方法的时候,当把序列里面的单个缺失值拿出来的时候,不能判断是否为缺失值,因此转化为字符串判断 == ‘nan’

defdelete_shi(s):

str_s=str(s)if str_s=='nan': #AttributeError: 'str' object has no attribute 'isnull'

returnselse:if str_s[-1]=='市':return str_s[0:-1]else:returns

UserInfoData1.UserInfo_20= UserInfoData1.UserInfo_20.apply(lambdas: delete_shi(s))

UserInfoData1.UserInfo_8= UserInfoData1.UserInfo_20.apply(lambda s: delete_shi(s))

4. 查看一下UserInfo_2为非缺失值时的情况

#UserInfo_2 为非缺失值

index=UserInfoData1[UserInfoData1.UserInfo_2.notnull() & UserInfoData1.UserInfo_4.isnull() & UserInfoData1.UserInfo_8.isnull() &UserInfoData1.UserInfo_20.isnull()].index

UserInfoData1[UserInfoData1.UserInfo_2.notnull()& 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. 统一格式,去掉省份变量后缀

#处理省份变量

defdelete_postfix1(s,str):if s[-1]==str:return s[0:-1]else:returnsdefdelete_postfix2(s,str):if s[0]=='内':return s[0:3]elif s[-3:]==str:return s[0:2]else:returns

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. 格式统一好后,导入之前处理好的 城市-省份 对应字典

因为,字典中的城市并不全,且名称与数据中有出入,所以用数据更新字典

importpickle

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 inzip(UserInfoData1.UserInfo_4,UserInfoData1.UserInfo_7):if str(p)=='nan':pass

else:

province=my_list2.get(p)if c inprovince:

i= UserInfoData1[UserInfoData1.UserInfo_4==c].index

UserInfoData1.UserInfo_8[i]= UserInfoData1.UserInfo_4[i]

当然,这个方法处理这个问题也不是特别合适,但如果遇到需要用城市判断省份,用县城判断城市,省份的时候还是大有可为的。

python创建身份证城市_python构建 城市和省份字典 的实例应用相关推荐

  1. python创建脚本文件_python创建文件备份的脚本

    制作文件备份 打开原文件 old_f_name = input("请输入备份的文件路径:") old_f = open(old_f_name, "r") 打开新 ...

  2. python创建数组类_python创建数组

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! java创建二维数组我门来看看java创建二维数组的格式:type arrayn ...

  3. python创建一个列表_Python创建一个元素都为0的列表实例

    Python创建一个元素都为0的列表实例 实现创建一个元素都为0的列表: l=10 lis=[0]*l lis 输出结果: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 以上这篇Pyt ...

  4. python字典存储省份与城市_python实现城市和省份字典(根据城市判断属于哪个省份)...

    首先,在网上拿到一份数据,省份和城市的对应表: 第一张图是省份以及对应的ID 第二张图是省份和城市,以及分别对应的ID 基本的思路是:实现一个字典,省份作为键,省份包含的城市作为值,举个例子:{&qu ...

  5. python创建excel表格_python使用VBA:Excel创建图表(转)

    # -*- coding: utf-8 -*- """ Created on Thu Mar 06 11:22:03 2014 @author: Administrato ...

  6. python创建文件夹_Python学习第71课-本地建立repository仓库

    [每天几分钟,从零入门python编程的世界!] 我们在本地建立一个repository(仓库),这个repository(仓库)就是用来对我们的文件版本进行跟踪的.repository(仓库)就是通 ...

  7. python创建一个字符串_Python字符串基本操作

    一.任务描述 本实验任务主要对Python字符串进行一些基本操作,通过完成本实验任务,要求学生熟练掌握Python字符串的基本操作,并对Python字符串基本操作进行整理并填写工作任务报告. 二.任务 ...

  8. python创建空文本文件_Python干货:「文件处理整合」 创建、打开、写入和删除...

    什么是Python文件处理? Python文件处理就是如何在python中创建.打开.读取.写入和删除文件的示例.从文件(EXCELSheet.doc文件.文本文件.cv等)或Add中读取数据.是一个 ...

  9. python创建一个集合_python如何创建一个集合

    创建集合 创建集合可以使用大括号{}来创建,元素间用逗号分隔,但是不能用它来创建空集合,因为{}创建的是空字典.如 set1 = {1,2,3} 也可以使用set()函数来创建集合,其中的参数为可迭代 ...

  10. python创建excel图表_Python:使用图表创建Excel工作表

    它有点复杂(和/或邪恶),但类似的东西可以跨平台(包括在Linux下)使用JPype来包装SmartXLSExcel Java库. 此示例使用SmartXLS中的简单图表创建(在Charts/Char ...

最新文章

  1. Excution failed for task ':app:transformClassWithDexForDebug'
  2. 安卓超过两行就加省略号_CSS文本超出2行就隐藏并且显示省略号
  3. 【扫盲帖】Java、JavaScript、JSP、JScript 的区别与联系
  4. mysql drop库_Mysql 删除数据库drop database详细介绍
  5. MATLAB 程序出现错误总结
  6. 数据库设计时设计标识字段的一些思考
  7. Nginx系列一:Nginx介绍与Nginx工作原理分析
  8. java之上三角矩阵,判断上三角矩阵
  9. PSX 610G 使用说明书
  10. mac charles代理设置
  11. 鼠标指针下总出现一个滚动条似的方框,怎么办?有图
  12. 计算机EI检索论文,EI检索论文
  13. 软技能入门《质量》系列 -- 密切追踪
  14. (python) 1200000有多少个约数(只计算正约数)
  15. 【愚公系列】2022年10月 微信小程序-电商项目-小微商户支付后端功能实现(node版)
  16. 全国高等教师资格证考试复习笔记-高等教育学(1)-教育学概述
  17. 信息碎片化爆炸时代,我们究竟失去的是什么?
  18. flyme7 android彩蛋,Flyme 7内置彩蛋功能:520教你如何脱颖而出
  19. 苹果处理器性能突破天际,安卓已望尘莫及
  20. Android 获取手机通讯录联系人列表(仅供学习)

热门文章

  1. 计算机无法自动矫正时间,怎么设置电脑上的时间自动同步进行校正
  2. Electron 打包时下载 xxx-electron-v1.6.8-arch-x64.zip 文件出错
  3. 虚拟机Ubuntu设置屏幕分辨率
  4. pdfplumber和pdfminer.six提取PDF中文本行内容及对应坐标
  5. 手把手教你搭建微信小程序服务器(HTTPS)
  6. Spyder单步调试
  7. abaqus截面惯性矩_各种截面的惯性矩怎么计算?
  8. ppt矩形里面的图片怎么放大缩小_PPT5题目要求-矩形放大缩小
  9. 使用mqtt.fx连接腾讯云IoT Cloud——超详细
  10. 前端工程师月薪上万的秘密