数据处理小谈CSV

来源:互联网 发布:群发qq消息软件 编辑:程序博客网 时间:2024/06/14 23:11

数据处理小谈CSV

在处理数据的时候,我总习惯于将数据先写到本地文件中。

首先本地读写速度快,其次数据操作简单,代码量少,兼之不会遇到连接断开等等问题,写到本地后还能修改一番——实在是不得不选的必要操作!

在工作中我遇到的数据量还不是特别大,基本上在几个G的大小。这个体量的数据,常见的操作是最后存入MySQL中。

这里就要好好讲讲MySQL和csv了。(Linux Python开发环境下)

首先当前较好用的连接MySQL的第三方包是pymysql,而MySQL-python是不支持 python3.5 的。操作很简单,看看官方实例就好了,也没有什么特别的参数。但是对于大批量的数据导入,就需要自己编写导入的SQL语句(这很烦,无疑很考虑代码设计的鲁棒性)。

如果是写成CSV文件后直接导入,快速又方便。说到这里,介绍一个CSV read的小诀窍。

import csvdata_list = []with open('./data.csv', 'r') as csv_file:    datas = csv.reader(csv_file)    for data in datas:        data_list.append(data)

一般来说,需要我们新建一个list,因为csv读取的数据是一个被包裹的对象,不能直接读取。

但是有个小技巧,可以直接讲数据化为一个list:

import csvdata_list = []with open('./data.csv', 'r') as csv_file:    datas = csv.reader(csv_file)    datas = list(datas)

这样我们可以直接讲数据放入datas中。

另外,在csv文件导入数据库的时候,常常会有数据项错位的情况。究其原因是数据项中有逗号字符或其他特殊字符。就算我们使用¥$ 这样的特殊字符作为delimiter,也没法逃过错位的命运(我就被这个数据折磨了三天)。

怎么办?

这时候需要注意到一个不起眼的地方:

这里写图片描述

你以为是分隔符选项吗?

不!是在角落里那个 文本分隔符 这个默认选择好的选择项。

这个双引号的作用是:如果数据项中有特殊符号如逗号等,它会将这个数据项作为一个文本来看待,这样在入库的时候设置了文本分隔符,我们就可以将需要的数据准确得送到每一个栏位。

在Python的csv模块中,有一个参数叫quoting。就是这个参数,决定了要不要使用双引号来将每个数据项包裹起来。

在这三天里,我每天被这堆数据折磨,三天里尝试了各种不同的方法,林林总总写下的代码能有几千行,涉及的技术总有十七八种。总算解脱后,回头发现自己对于数据处理又迈上了一个台阶。也是一个很好的经历。

原创粉丝点击