《干净的数据——数据清洗入门与实践》(四)

二次信任 提交于 2019-12-09 16:41:27

讲通用语言——数据转换

数据转换时可以作为公共标准的数据类型:JSON、CSV

利用工具的快速转换

针对少量或者中量数据
电子表格->CSV:“另存为”。注意,一个EXCEL文件中的多个表格要分别保存。
电子表格->JSON:方法不太使用
使用phpMyadmin从SQL语句中生成CSV、JSON或者直接使用MySQL命令行

select concat (firstName, " ", lastName) as name, email_id
into outfile 'enronEmployees.csv'
fields terminated by ',' optionally enclosed by '"'
#设置字段分割符,可以是,或者"
lines terminated by '\n'
#设置行分隔符
from employeelist;

使用Python实现数据转换

数据量过大时
CSV->JSON

#csv->json
import json
import csv

#读取CSV文件
with open('F:/data/clean_data/data04.csv') as file:
	file_csv = csv.DictReader(file)
	output = '['
	#处理每一个目录
	for row in file_csv:
		#两个实体之间加入逗号
		output += json.dumps(row) + ','#dumps
	output = output.rstrip(',') + ']'
#把文件写入磁盘中去
f = open('F:/data/clean_data/data04.json','w')
f.write(output)
f.close()

或者直接使用csvkit

JSON->CSV

#json->csv
import json
import csv

with open('F:/data/clean_data/data04.json','r') as f:
	dicts = json.load(f)#json.loads()用于将字符串形式的数据转化为字典
#print(dicts)
out = open('F:/data/clean_data/data04_2.csv','w',newline='')#一个newline参数将使生成的csv文件不包含多余的空行!
writer = csv.DictWriter(out, dicts[0].keys())#以字典的形式写入到csv文件中,第二个参数定义了fileheader是以列表形式定义的文件头(每一列的标识)
writer.writeheader()
writer.writerows(dicts)
out.close()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!