开房数据的数据清洗

2023-10-21 00:59
文章标签 数据 清洗 开房

本文主要是介绍开房数据的数据清洗,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

find使用

举例子:

pos="hellos world".find("gogogo")#找不到=-1
pos="hellos world".find("llo")# 2
初始h的位置为-1,e为0,l为1以此类推find找到符合的位置后的第一个字符开始算

接下来对开房的数据进行数据进行切割,在windows里有两个快捷键一个table可以查看所有数据,一个more可以看当前数据的百分比
在这里插入图片描述
针对下面这个图里面的曹阳这个信息进行切割
在这里插入图片描述

mystr="曹阳,32010619720506042x,F,19720506,-,210005,13770848687,025-842019149,-,cy_qing@163.com,0"
mylist=mystr.split(",") #切割,返回列表
print(mylist) #打印列表
for  data in mylist: #循环列表print(data)

在这里插入图片描述

数据清洗

readfilepath=r"C:\Users\Tsinghua-yincheng\Desktop\yinchengDay1\kaifangX.txt"
writefilegoodpath=r"C:\Users\Tsinghua-yincheng\Desktop\yinchengDay1down\kaifanggood.txt"
writefilebadpath=r"C:\Users\Tsinghua-yincheng\Desktop\yinchengDay1down\kaifangbad.txt"readfile=open(readfilepath,"r",errors="ignore")
goodwritefile=open(writefilegoodpath,"w",errors="ignore") #打开文件
badwritefile=open(writefilebadpath,"w",errors="ignore") #打开文件while True:line=readfile.readline()mylist=line.split(",")#数据切割。if  len(mylist)>2:#判断长度if  len(mylist[1])==18:#判断身份证号码合法goodwritefile.write(line)else:badwritefile.write(line)else:badwritefile.write(line)if  not line:break
readfile.close()#关闭文件
goodwritefile.close() #关闭
badwritefile.close() #关闭

在这里插入图片描述
但是身份证的信息是有区域的划分的,因此

area=[[1,"华北"],[2,"东北"],[3,"华东"],[4,"中南"],[5,"西南"],[6,"西北"]]
filelist=[]#列表存储文件对象
for  areatext  in area:savepath="C:\\Users\\Tsinghua-yincheng\\Desktop\\yinchengDay1down\\区域\\"writefilepath=savepath+areatext[1]+".txt" #生成路径,6个路径writefile=open(writefilepath,"w")#创建一个文件对象filelist.append(writefile) #加入文件对象列表readfilepath=r"C:\Users\Tsinghua-yincheng\Desktop\yinchengDay1down\kaifanggood.txt"
readfile=open(readfilepath,"r",errors="ignore")
alllist=readfile.readlines()#全部读取到内存
for  line in alllist:#遍历每一行linelist=line.split(",")#切割#linelist[1]身份证#linelist[1][0]#取出的身份证第一位for i   in  range(len(area)): #遍历区域,1 华北,2,东北if str(area[i][0])==linelist[1][0]:filelist[i].write(line) #写入break
readfile.close()#关闭文件
for  file in filelist: #批量关闭文件file.close()

但是对于内存消耗太大,改成硬盘存储,就一行的差别

area=[[1,"华北"],[2,"东北"],[3,"华东"],[4,"中南"],[5,"西南"],[6,"西北"]]
filelist=[]#列表存储文件对象
for  areatext  in area:savepath="C:\\Users\\Tsinghua-yincheng\\Desktop\\yinchengDay1down\\区域disk\\"writefilepath=savepath+areatext[1]+".txt" #生成路径,6个路径writefile=open(writefilepath,"w")#创建一个文件对象filelist.append(writefile) #加入文件对象列表readfilepath=r"C:\Users\Tsinghua-yincheng\Desktop\yinchengDay1down\kaifanggood.txt"
readfile=open(readfilepath,"r",errors="ignore")
while  True:line=readfile.readline()if  not line: #处理最后一行breaklinelist = line.split(",")  # 切割# linelist[1]身份证# linelist[1][0]#取出的身份证第一位for i in range(len(area)):  # 遍历区域,1 华北,2,东北if str(area[i][0]) == linelist[1][0]:filelist[i].write(line)  # 写入breakreadfile.close()#关闭文件
for  file in filelist: #批量关闭文件file.close()

因此还可以加上省份的划分

area=[[11,"北京"],[12,"天津"],[13,"河北"],[14,"山西"],[15,"内蒙古"],[21,"辽宁"],[22,"吉林"],[23,"黑龙江"],[31,"上海"],[32,"江苏"],[33,"浙江"],[34, "安徽"],[35,"福建"],[36,"江西"],[37,"山东"],[41,"河南"],[42,"湖北"],[43, "湖南"],[44,"广东"],[45,"广西"],[46,"海南"],[50,"重庆"],[51, "四川"],[52,"贵州"],[53,"云南"],[54,"西藏"],[61,"陕西"],[62, "甘肃"],[63,"青海"],[64,"宁夏"],[65,"新疆"],[71,"台湾"],[81, "香港"],[82,"澳门"]]filelist=[]#列表存储文件对象
for  areatext  in area:savepath="C:\\Users\\Tsinghua-yincheng\\Desktop\\yinchengDay1down\\省份\\"writefilepath=savepath+areatext[1]+".txt" #生成路径,6个路径writefile=open(writefilepath,"w")#创建一个文件对象filelist.append(writefile) #加入文件对象列表readfilepath=r"C:\Users\Tsinghua-yincheng\Desktop\yinchengDay1down\kaifanggood.txt"
readfile=open(readfilepath,"r",errors="ignore")
alllist=readfile.readlines()#全部读取到内存
for  line in alllist:#遍历每一行linelist=line.split(",")#切割#linelist[1]身份证#linelist[1][0]#取出的身份证第一位for i   in  range(len(area)): #遍历区域,1 华北,2,东北if str(area[i][0])==linelist[1][0:2]:filelist[i].write(line) #写入breakreadfile.close()#关闭文件
for  file in filelist: #批量关闭文件file.close()

因此按照年龄、月份、某天都是可行的。

这篇关于开房数据的数据清洗的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/250854

相关文章

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

pandas数据的合并concat()和merge()方式

《pandas数据的合并concat()和merge()方式》Pandas中concat沿轴合并数据框(行或列),merge基于键连接(内/外/左/右),concat用于纵向或横向拼接,merge用于... 目录concat() 轴向连接合并(1) join='outer',axis=0(2)join='o

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口