• 转载——使用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填想要拆分成多少个文件

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

  • 相关阅读:
    Asp.net获取客户端的IP地址排除::1
    EF 筛选列包含NULL会报错
    layUI关于table编辑列支持方向键功能
    .NET CORE 发布IIS问题收集
    VS2019最新源代码管理工具+附下载地址
    关于Mysql可视化工具Navicat Premium12激活使用【亲测】
    经典SQL 语句
    事务的四种隔离级别 [转载]
    HTML 特殊符号编码对照表
    github本地文件Push到仓库
  • 原文地址:https://www.cnblogs.com/bravesunforever/p/12075670.html
Copyright © 2020-2023  润新知