如何使用pandas读取大型多csv文件?

i7uq4tfw  于 2023-06-04  发布在  其他
关注(0)|答案(1)|浏览(226)

我试图读取一个大的CSV文件(aprox. 4 GB)在Pandas和我得到一个内存错误:
我有大约20-30 CSV文件在那里,每一个文件约277738行.

import glob
import pandas

folder_path = 'train/operations-data'
file_list = glob.glob(folder_path + "/*.csv")
main_df=pd.DataFrame(pd.read_csv(file_list[0]))

for i in range(1, len(file_list)):
    data = pd.read_csv(file_list[1])
    df=pd.DataFrame(data)
    main_dataframe = pd.concat([main_df,df],axis = 1)
    
print(main_df)

有人帮忙吗?

kt06eoxx

kt06eoxx1#

处理大型CSV文件时,如果尝试一次将整个文件加载到内存中,可能会出现内存错误。要避免这种情况,请修改代码,以较小的块读取和处理CSV文件。
pd.read_csv()中使用chunksize参数的示例:

import glob
import pandas as pd

folder_path = 'train/operations-data'
file_list = glob.glob(folder_path + "/*.csv")

# Initialize an empty list to store the chunked dataframes
dfs = []

for file in file_list:
    # Read the CSV file in chunks
    reader = pd.read_csv(file, chunksize=10000)  # Adjust the chunksize as per your memory capacity
    
    # Iterate through each chunk and append it to the list
    for chunk in reader:
        dfs.append(chunk)

# Concatenate all the chunks into a single dataframe
main_df = pd.concat(dfs, ignore_index=True)

print(main_df)

chunk-size参数设置为(例如,10000),它适合您的内存容量。根据您的可用资源调整此值。
pd.read_csv()不是一次将整个CSV文件加载到内存中,而是分块读取文件。
每个块都存储在dfs列表中。
pd.concat()用于将所有块连接到单个 Dataframe (main_df)中。

相关问题