python 模块化 处理大文件 tsv csv
Posted haolemao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 模块化 处理大文件 tsv csv相关的知识,希望对你有一定的参考价值。
编程婴儿又在编程。
男朋友又让我给他处理数据,其中一个数据大小有10g以上,我还需要把这个数据和其他数据进行匹配,然后分组统计得到一些数据。
之前简简单单用一下read_csv不能打开这么大的数据,我在寻找办法。
因为要做匹配,所以我本来打算模块化把数据写进来之后,然后再合并起来做。但是总是不行,报错。最后可能要先分组处理完,再合并。因为这个数据里应该有很多不用的数据,还是有希望。
中间看到有人说可以用dask包处理很大的文件,很轻松。我看了一下,我觉得就算我读入了,我后面很难操作,我还没到能很快学会一个新包的程度。我还是先好好把pandas用好吧。哭了。
想和男朋友讨论一下,怎么弄这个事,他说他不管过程,只要结果。我就是想和他说一说,然后把自己的思路梳理清楚,他都不听。他说他老师和他交代这些事,也从来不管过程,给他结果就好了。
怎么这样,我一直觉得我和他的学术地位是平行的,我们是合作关系,现在他都骑到我头上了。缺骂。
1.打开tsv文件
tsv文件其实就是用tab做分隔符的文件
uspatentcitation=pd.read_csv(‘F:/1/uspatentcitation.tsv‘, sep=‘ ‘, nrows=2,usecols=[‘patent_id‘, ‘citation_id‘, ‘date‘])
和csv唯一的区别就是sep参数
nrows=2 #就是打开前两行看一下,我想知道这个数据里有什么指标,是否有一些指标不需要。
usecols=[‘patent_id‘, ‘citation_id‘, ‘date‘] #只取其中三列看看
参考:https://blog.csdn.net/shuihupo/article/details/85283240#pandas%E5%8F%82%E6%95%B0%E8%AF%B4%E6%98%8E
2.看看文件有多少行
我已经试了一些方法,都不能打开这个大文件,我决定先看一眼这个文件有多少行。对后面模块化处理文件心里有个数。
with open(‘F:/1/uspatentcitation.tsv‘, ‘rb‘) as f: print(len(f.readlines()))
‘rb’是因为之前用‘r’出现以下编码错误:“UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xb2 in position 6311: illegal multibyte sequence”
但是没想到这个数据这么顽劣,想看看有多少行都不行,给我报‘MemoryError’
烦死人。
换了个办法,没想到看看有多少行,也得模块。
path1 = ‘F:/1/uspatentcitation.tsv‘ file1 = open(path1) uspatentcitation = pd.read_csv(path1, sep=‘ ‘,usecols=[‘patent_id‘, ‘citation_id‘, ‘date‘], iterator=True) count = 0 loop = True while loop: try: user = uspatentcitation.get_chunk(100000) count += user.shape[0] except StopIteration: break print(count)
结果:108913836
一亿条数据,无语。
不干了,明天再说吧。
3.决定模块化匹配,并统计
以上是关于python 模块化 处理大文件 tsv csv的主要内容,如果未能解决你的问题,请参考以下文章
札记Python处理TSV文件以及144790个英语单词的注音释义例句的.sql和.tsv文件下载
札记Python处理TSV文件以及144790个英语单词的注音释义例句的.sql和.tsv文件下载
札记Python处理TSV文件以及144790个英语单词的注音释义例句的.sql和.tsv文件下载