zoukankan      html  css  js  c++  java
  • 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}_{1}{2}'.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}_{1}{2}'.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)

  • 相关阅读:
    Object.defineProperty方法 使用
    Linux常用命令--网终设置
    Linux常用命令--文件操作、权限设置
    Linux常用命令
    vue之双绑实现
    【Objective-C学习记录】第二十九天
    【Objective-C学习记录】第二十八天
    【Objective-C学习记录】第二十四天
    【Objective-C学习记录】第二十三天
    【Objective-C学习记录】第二十二天
  • 原文地址:https://www.cnblogs.com/FYZHANG/p/11629075.html
Copyright © 2011-2022 走看看