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)

  • 相关阅读:
    nginx 的请求处理阶段
    docker 的实践操作
    inno setup 1
    缓存算法
    think in uml-关系
    centos mono
    think in uml 2.1
    TFS 创建分支
    think in uml 1
    WebCast课程列表2
  • 原文地址:https://www.cnblogs.com/FYZHANG/p/11629075.html
Copyright © 2011-2022 走看看