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填想要拆分成多少个文件

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

  • 相关阅读:
    vue2 v-model/v-text 中使用过滤器的方法示例
    HTML5游戏开发案例教程合集
    Docker实战案例视频课程
    Java项目框架架构与优化教程
    Linux云计算-虚拟化技术视频教程
    udl
    Chloe官网及基于NFine的后台源码毫无保留开放
    抽象类存在的意义和作用
    Shell 脚本语法
    Github 高级搜索功能
  • 原文地址:https://www.cnblogs.com/bravesunforever/p/12075670.html
Copyright © 2011-2022 走看看