zoukankan      html  css  js  c++  java
  • pandas读取大量数据的分块处理

    数据分块

    csv 格式是一种易储存, 易更改并且用户易读取的格式。 pandas 有read_csv ()方法来上传数据,存储为CSV 格式。当遇到CSV 文件过大,导致内存不足的问题该怎么办呢?试试强大的pandas 工具吧!我们先把整个文件拆分成小块。这里,我们把拆分的小块称为chunk。

    一个chunk 就是我们数据的一个小组。 Chunk 的大小主要依据我们内存的大小,自行决定。

    过程如下:

    1.读取一块数据。

    2.分析数据。

    3.保存该块数据的分析结果。

    4.重复1-3步骤,直到所有chunk 分析完毕。

    5.把所有的chunk 合并在一起。


    1、指定chunksize分块读取文件

    read_csv 和 read_table 有一个 chunksize 参数,用以指定一个块大小(每次读取多少行),返回一个可迭代的 TextFileReader 对象。
    代码如下:

    table=pd.read_table(path+'kuaishou.txt',sep='	',chunksize=1000000)
    df_list=[]
    for df in table:
        #1.对每一个分块df处理
        #2.添加每一个df(df_list.apend(df))
        #print(type(df),df.shape)打印看一下信息
    df = pd.concat(df_list, ignore_index=True)

    2、指定iterator=True

    iterator=True同样返回的是TextFileReader对象

    import pandas as pd
    
    f = open('./data/ows-raw.txt',encoding='utf-8')
    reader = pd.read_table(f, sep=',', iterator=True, error_bad_lines=False) #跳过报错行
    loop = True
    chunkSize = 1000
    chunks = []
    while loop:
      try:
        chunk = reader.get_chunk(chunkSize)
        chunks.append(chunk)
      except StopIteration:
        loop = False
        print("Iteration is stopped.")
    df = pd.concat(chunks, ignore_index=True)
  • 相关阅读:
    Vue基础
    Document
    Document
    Document
    Document
    Document
    Document
    Document
    Document
    Document
  • 原文地址:https://www.cnblogs.com/-wenli/p/12581064.html
Copyright © 2011-2022 走看看