python 数据清洗代码分享

分享一下近期用python做数据清洗汇总的相关代码。不得不说,python代码是真的非常友好,在R上可能就需要写好几句代码才能实现的功能,在python上可能就简单一句话。这里我们用到的python包有pandas、numpy、os等

数据读入与写出

csv

针对csv格式的数据,最简单的一种方法是用pandas中的read_csv方法,具体代码如下。其中第一个参数为待读入数据的路径,一个实用小技巧为./表示当前文件夹,../表示上层文件夹。这样如果待读入文件与代码文件在同一个文件夹下,可以节省掉很多层文件路径的输入。另外两个我较常用的参数为encoding和sep,其中encoding可指定数据UTF编码,sep为指定数据分隔符,默认为,,但我经常遇到以\t为分隔符的数据。如果你遇到了类似这样的报错ParserError: Error tokenizing data. C error: Expected 1 fields in line 57, saw 3,可以考虑下是不是分隔符不对。

import pandas as pd
pd.read_csv('*.csv',encoding='gbk',sep='\t')

此外,有时候一个文件太大。其分别存储在不同文件中,甚至分开存储在不同文件夹下,这时就需考虑批量读取了。
在展示代码前,先介绍一下数据背景。现在我有一个叫obj的文件夹,其中存储了一系列以’job_id='开头的文件夹,在每个文件夹中又存储了一系列以’job_id='开头的csv的文件。这些文件存储的都是同一种数据,目前我的任务是读入这一批数据,并合并成一个数据框。

file_dir=glob.glob('./obj/job_id=*')
df = pd.DataFrame()
for i in file_dir:
    file=glob.glob(os.path.join(i, "job_id=*.csv"))
    file.sort()
    a = pd.read_csv(file[0])
    for f in file[1:]:
        b = pd.read_csv(f,header=None)
        b.columns = a.columns
        a = pd.concat([a,b],ignore_index=True)
    df = pd.concat([df,tmc],ignore_index=True)

glob.glob:返回匹配的文件列表。
os.path.join:拼接文件路径。
file.sort():对文件按文件名进行排序,主要我读取的文件,按文件名排序第一的文件数据有列名,其他文件没有列名,这里就需介绍一下pd.read_csv的参数header,若header=None,则表明文件第一行非列名,否则将以列名读入python。
除了读入数据,另一个需要考虑的就是读出数据了。第一个参数指定读出的文件路径以及文件名。python中如果该文件已经存在,则直接覆盖。若

  • 2
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值