zoukankan      html  css  js  c++  java
  • 转载——使用Python拆分数据量大的CSV文件(亲测有效)

    转载:https://www.cnblogs.com/FYZHANG/p/11629075.html

    一次就运行成功了,感谢博主分享

    #!/usr/bin/env python3
    # -*- coding:utf-8 -*-
    # @FileName :Test.py
    # @Software PyCharm
    
    import os
    import pandas as pd
    
    # filename为文件路径,file_num为拆分后的文件行数
    # 根据是否有表头执行不同程序,默认有表头的
    def Data_split(filename,file_num,header=True):
        if header:
            # 设置每个文件需要有的行数,初始化为1000W
            chunksize=10000
            data1=pd.read_table(filename,chunksize=chunksize,sep=',',encoding='gbk')
            # print(data1)
            # num表示总行数
            num=0
            for chunk in data1:
                num+=len(chunk)
            # print(num)
            # chunksize表示每个文件需要分配到的行数
            chunksize=round(num/file_num+1)
            # print(chunksize)
            # 分离文件名与扩展名os.path.split(filename)
            head,tail=os.path.split(filename)
            data2=pd.read_table(filename,chunksize=chunksize,sep=',',encoding='gbk')
            i=0
            for chunk in data2:
                chunk.to_csv('{0}_{1}{2}'.format(head,i,tail),header=None,index=False)
                print('保存第{0}个数据'.format(i))
                i+=1
        else:
            # 获得每个文件需要的行数
            chunksize=10000
            data1=pd.read_table(filename,chunksize=chunksize,header=None,sep=',')
            num=0
            for chunk in data1:
                num+=len(chunk)
                chunksize=round(num/file_num+1)
    
                head,tail=os.path.split(filename)
                data2=pd.read_table(filename,chunksize=chunksize,header=None,sep=',')
                i=0
                for chunk in data2:
                    chunk.to_csv('{0}_{1}{2}'.format(head,i,tail),header=None,index=False)
                    print('保存第{0}个数据'.format(i))
                    i+=1
    
    filename='文件路径'
    #num为拆分为的文件个数
    Data_split(filename,num,header=True)

    可能因为版本的原因,运行时会提示 read_csv,

    最后一行代码,filename处填上你自己想要拆分的文件地址,num填想要拆分成多少个文件

    ——————————————————————————————————————————————

  • 相关阅读:
    基础排序算法之快速排序(Quick Sort)
    基础排序算法之并归排序(Merge Sort)
    Python中With的用法
    Python中AND-OR的用法
    注解/Annotation
    初识Angular2
    Angular 2 入门二
    Angular2 入门
    asp中将系统货币符号¥改为美国货币符号$的做法
    设计模式总结
  • 原文地址:https://www.cnblogs.com/bravesunforever/p/12075670.html
Copyright © 2011-2022 走看看