小Z的科研日常 2024-03-07 12:35 采纳率: 100%
浏览 8
已结题

Pyhon如何读取超大CSV文件?

我现在有一组数据,共11个CSV文件。
数据总共20G左右。
现在我是每个文件赋值给一个变量,每个变量都是使用pandas的pd.read_csv()函数进行读取。
但是在运行过程中,会面临内核终止的问题。

然后,在服务器(内存90G,16核CPU)同样上述操作,依旧面临同样的问题。

请问各位,这种该如何处理?我想将这11个文件全部读取进行合并,进行后续的数据清洗和模型(XGBoodt)训练。

非常感谢!

  • 写回答

6条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-07 12:35
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题解答: 首先,面对大规模数据的读取,建议采用分段读取的方式,对数据进行拆分,多进程运行代码。可以利用Pandas的chunksize参数来将CSV文件分段读取,然后用for循环逐个处理每一块数据,最终将处理完的数据合并。 其次,建议对代码进行优化,尽可能减少资源占用,如避免使用不必要的循环和变量等。 最后,也可以考虑使用Dask等大数据处理框架,能够将数据分块处理并行执行。 案例代码:
    import pandas as pd
    import os
    # 读取CSV文件路径
    file_dir = './data'
    files = os.listdir(file_dir)
    csv_files = [os.path.join(file_dir, f) for f in files if f.endswith('.csv')]
    # 分块读取和处理CSV文件
    chunk_size = 100000
    data_lst = []
    for csv_file in csv_files:
        for chunk in pd.read_csv(csv_file, chunksize=chunk_size):
            # 处理该块数据
            # ...
            # 将处理结果加入列表
            data_lst.append(chunk_result)
        # 释放该文件的内存
        del chunk
    # 合并处理结果
    final_data = pd.concat(data_lst, axis=0)
    # 进一步处理和训练模型
    # ...
    

    这段代码首先读取CSV文件路径,然后使用pd.read_csv()函数分块读取每个CSV文件,对每一块数据进行处理并将结果加入列表,最终使用pd.concat()函数将处理结果合并。其中,循环结束后使用del语句释放内存空间,避免内存溢出问题。最后,可以对合并后的数据进行进一步的处理和模型训练。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 3月22日
  • 已采纳回答 3月14日
  • 创建了问题 3月7日

悬赏问题

  • ¥15 NRF24L01能发送但是不能接收
  • ¥15 想问一下这种情况怎么解决呢(关键词-file)
  • ¥15 python Flassk 模块部署 服务器时报错
  • ¥15 Opencv(C++)异常
  • ¥15 VScode上配置C语言环境
  • ¥15 汇编语言没有主程序吗?
  • ¥15 这个函数为什么会爆内存
  • ¥15 无法装系统,grub成了顽固拦路虎
  • ¥15 matlab有关债券凸性久期的代码
  • ¥15 lvgl v8.2定时器提前到来