python 模块化 处理大文件 tsv csv

2021-05-08 01:27

阅读:463

标签:就是   怎么   https   很多   read   get   tab   指标   老师   

编程婴儿又在编程。

 

男朋友又让我给他处理数据,其中一个数据大小有10g以上,我还需要把这个数据和其他数据进行匹配,然后分组统计得到一些数据。

之前简简单单用一下read_csv不能打开这么大的数据,我在寻找办法。

因为要做匹配,所以我本来打算模块化把数据写进来之后,然后再合并起来做。但是总是不行,报错。最后可能要先分组处理完,再合并。因为这个数据里应该有很多不用的数据,还是有希望。

中间看到有人说可以用dask包处理很大的文件,很轻松。我看了一下,我觉得就算我读入了,我后面很难操作,我还没到能很快学会一个新包的程度。我还是先好好把pandas用好吧。哭了。

 

想和男朋友讨论一下,怎么弄这个事,他说他不管过程,只要结果。我就是想和他说一说,然后把自己的思路梳理清楚,他都不听。他说他老师和他交代这些事,也从来不管过程,给他结果就好了。

怎么这样,我一直觉得我和他的学术地位是平行的,我们是合作关系,现在他都骑到我头上了。缺骂。

1.打开tsv文件

tsv文件其实就是用tab做分隔符的文件

uspatentcitation=pd.read_csv(‘F:/1/uspatentcitation.tsv‘, sep=‘\t‘, 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=‘\t‘,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

标签:就是   怎么   https   很多   read   get   tab   指标   老师   

原文地址:https://www.cnblogs.com/wanghaolu/p/13179744.html


评论


亲,登录后才可以留言!