首页 > 编程语言 >Python:处理大数据量文件心得

Python:处理大数据量文件心得

时间:2024-02-15 10:11:44浏览次数:28  
标签:文件 数据量 Python df str file path csv 心得

完成大文件按规则拆解。使用python实现将5个多g,总共五千万行数据的csv文件进行按照某个特殊时属性进行拆解。
问题难点:文件过大,服务器内存资源不足,需要分块读入内存并处理。之前想着一次性全部读入,然后再根据分类条件写入对应文件,但是总会出现内存溢出(因为一次性读入之后需要分类排序)或者执行效率过低(因为需要一条条的分类然后一条条的插入文件)的问题。
解决方案:使用pandas分块读取文件内容,然后依次分类处理。其中补充了较多的日志信息,便于查看。
因为是脚本执行,所以使用命令行将日志导入到log文件中去。python 脚本.py >> log.log 2>&1 代码如下: import pandas as pd from pathlib import Path # 批量分块读取csv并处理 success # 读取原始 CSV 文件 input_file_path = '你自己的文件.csv' chunk_size = 100000 # 每次读取的行数 num = 0 # 遍历文件,逐块读取 for chunk in pd.read_csv(input_file_path, chunksize=chunk_size): # 根据 terminalId 拆分数据框 grouped_df = chunk.groupby('terminalId') print("大块数量:" + str(len(grouped_df)) + "==========================") # 遍历每个分组,保存为单独的 CSV 文件 for terminal_id, group_df in grouped_df: # 指定保存路径和文件名,可以根据需要自定义 output_file_path = f'/home/user/tstar/handleCsv/data/batch/{terminal_id}.csv' # output_file_path = f'{terminal_id}.csv' print("tId:" + str(terminal_id) + ",group.size = "+ str(len(group_df)) + "=====") num += len(group_df) print("num:" + str(num)) # 判断文件是否存在,如果已经存在,则将该部分写入已经存在的文件中 file_path = Path(output_file_path) # 如果文件存在,则将数据追加到文件末尾 if file_path.exists(): print(str(terminal_id) + "存在") group_df.to_csv(output_file_path, mode='a', header=False, index=False) else: # 该文件不存在,则保存分组数据框,保持表头相同 print(str(terminal_id) + "文件不存在") group_df.to_csv(output_file_path, index=False) print("全部读取完成:num=" + str(num))

标签:文件,数据量,Python,df,str,file,path,csv,心得
From: https://www.cnblogs.com/BananaMan666/p/18015987

相关文章

  • python基础学习6-第三方模块
    自定义模块优先级大于系统模块模块分为系统模块,自定义模块,第三方模块导入方式import模块名称[as别名]from模块名称import变量/函数/类*包的导入import包名.模块名as别名form包名import模块名as别名form包名.模块名import函数/变量/类*主程序运行i......
  • Python 中 print 函数的用法
    在Python中,可以使用print函数来打印一个变量或者一个字符串:print("MynameisAlice")print(i)如果需要字符串格式化来打印一句话中包含变量的内容,有几种常用的方法:使用格式化字符串(f-string):在字符串前面加上字母"f",然后在字符串中使用大括号{}包裹变量名。示例代码如下:......
  • Ubuntu 中通过源码安装 Python3.x 环境
    最近在个人前后端分离项目时候,后端接口程序fastapi,在部署的时候,需要Pyhton3.8以上的环境,但ubuntu默认的是2.7于是想通过源码安装的方式进行环境搭建.下载官网下载二进制源码安装包:https://www.python.org/downloads/source/wegthttps://www.python.org/ftp/......
  • Python--列表
    Python--列表列表是什么列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;在python中使用([])来表示列表,并且使用逗号来分割其中的元素.bicycles=['trek','cannondale','redline','specialized']print(bicycles)#......
  • Python之禅 (Although practicality beats purity.)的理解
    TheZenofPython,byTimPeters摘其中一句谈谈我的理解Althoughpracticalitybeatspurity.实用性有时比理论上的完美更重要。python看起来是不太完美,比如,很长时间都没有编译时的类型检查,开始时候认为这个是语言设计者的一个bug,但后来发现,过早的把精力放到类型上去,对于程......
  • Python之发送邮件
    https://www.runoob.com/python/python-email.html#!/usr/bin/python#-*-coding:UTF-8-*-importsmtplibfromemail.mime.textimportMIMETextfromemail.headerimportHeader#第三方SMTP服务mail_host="smtp.XXX.com"#设置服务器mail_user="XXXX&q......
  • Python语法笔记
    url中含有中文的处理Python编程:URL网址链接中的中文编码与解码Python进行URL解码fromurllib.requestimportquote... defstart_requests(self):keywords=['手机','笔记本电脑','键鼠套装']forkeywordinkeywords:url=r'https://s.taobao.......
  • Python基本笔记
    导入库的顺序:先导标准库空行再导第三方库空行最后导自己的库库之间按字母顺序导macpycharncode-优化导入工具:可自动帮调整顺序,将没有用到的库名删除查看安装了什么第三方库:piplist或pipfreezepipfreeze>requirements.txt将输出重定向到requirements.txtpipi......
  • 第一章 Python概述
     第一章、Python概述 1.Python是什么 2.Python语言的特点 3.Python语言的缺点 4.Python程序的执行过程 5.安装Python 2.1通过Python官网安装包来安装 2.2使用pip安装第三方库 2.3通过anaconda安装Python 2.4两种Python安装方式比较 6.运行Python......
  • Python语言程序设计入门教程
      目  录第一章、概述    1.Python是什么    2.Python语言的特点    3.Python语言的缺点    4.Python程序的执行过程10   5.安装Python11  6.运行Python程序17        7.Python集成开发环境21  第二章、......