Python拆分大型CSV文件(亲测拆分178G)注释超全
Posted fyzhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python拆分大型CSV文件(亲测拆分178G)注释超全相关的知识,希望对你有一定的参考价值。
程序
1 #!/usr/bin/env python3 2 # -*- coding:utf-8 -*- 4 # @FileName :Test.py 5 # @Software PyCharm 6 7 import os 8 import pandas as pd 9 10 # filename为文件路径,file_num为拆分后的文件行数 11 # 根据是否有表头执行不同程序,默认有表头的 12 def Data_split(filename,file_num,header=True): 13 if header: 14 # 设置每个文件需要有的行数,初始化为1000W 15 chunksize=10000 16 data1=pd.read_table(filename,chunksize=chunksize,sep=‘,‘,encoding=‘gbk‘) 17 # print(data1) 18 # num表示总行数 19 num=0 20 for chunk in data1: 21 num+=len(chunk) 22 # print(num) 23 # chunksize表示每个文件需要分配到的行数 24 chunksize=round(num/file_num+1) 25 # print(chunksize) 26 # 分离文件名与扩展名os.path.split(filename) 27 head,tail=os.path.split(filename) 28 data2=pd.read_table(filename,chunksize=chunksize,sep=‘,‘,encoding=‘gbk‘) 29 i=0 30 for chunk in data2: 31 chunk.to_csv(‘0_12‘.format(head,i,tail),header=None,index=False) 32 print(‘保存第0个数据‘.format(i)) 33 i+=1 34 else: 35 # 获得每个文件需要的行数 36 chunksize=10000 37 data1=pd.read_table(filename,chunksize=chunksize,header=None,sep=‘,‘) 38 num=0 39 for chunk in data1: 40 num+=len(chunk) 41 chunksize=round(num/file_num+1) 42 43 head,tail=os.path.split(filename) 44 data2=pd.read_table(filename,chunksize=chunksize,header=None,sep=‘,‘) 45 i=0 46 for chunk in data2: 47 chunk.to_csv(‘0_12‘.foemat(head,i,tail),header=None,index=False) 48 print(‘保存第0个数据‘.format(i)) 49 i+=1 50 51 filename=‘文件路径‘ 52 #num为拆分为的文件个数 53 Data_split(filename,num,header=True)
以上是关于Python拆分大型CSV文件(亲测拆分178G)注释超全的主要内容,如果未能解决你的问题,请参考以下文章
如何按百分比将 CSV 数据集拆分为训练集和测试集,并将拆分后的数据集与 pandas 一起保存到本地文件夹中? [复制]