簡體   English   中英

如何讀取 CSV 文件並將大量數據數據以 python 中的塊的形式寫入新的 CSV 文件

[英]How to read a CSV file and write a huge data data to a new CSV file in chunks in python

我正在使用 csv 模塊(讀取)讀取一個 csv 文件,並將其處理為超過 60 GB 的大文件。然后使用 csv 模塊(寫入)將其寫入另一個 csv。讀取數據很好,但是在處理數據之后.它變得超過百萬條記錄。所以在運行代碼時它顯示 memory 錯誤。所以我試圖把它寫成塊。 我沒有使用 pandas,因為它很慢 我在需要幾天才能完成之前嘗試過它..所以我正在使用 csv 模塊進行讀寫。 我不知道如何分塊寫入 csv 文件以避免 memory 問題。

我想分塊寫入 csv 文件。 我首先讀取 csv header 並先寫入,然后將其他正文數據循環到同一個 csv 文件。 如何使用 csv 模塊而不是 pandas 以塊的形式寫入此主體數據。

with open("input.csv", "r") as f:
    reader = csv.reader(f)
    writer = csv.writer(open("out.csv.csv","a", newline=""))
    header = next(reader)
    writer.writerow(header+["modified"])
    for r in reader:
        to_change = r[2]
        if "[" not in to_change:
            writer.writerow(r+[to_change])
        else:    
         static = to_change[:to_change.index("[")]
         make = to_change[len(static)+1:-1].split("/") 
         modify = getmodified(make)
         for each in modify:
            modified = r+[static+each]
            writer.writerow(modified) 

輸入文件:輸入

輸出文件: Output

在 getmodified(make) function 中,我在將其寫入 CSV 后添加所有 im 獲取錯誤的范圍。它能夠寫入 2.7GB 數據..然后它顯示 memory 錯誤

# import required modules 
import pandas as pd 
import numpy as np 
import time 

# time taken to read data 
s_time = time.time() 
df = pd.read_csv("gender_voice_dataset.csv") 
e_time = time.time() 

print("Read without chunks: ", (e_time-s_time), "seconds") 
  
# data 
df.sample(10)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM