Вот текущий подход, который я использую:
Код: Выделить всё
import csv
with open('large_file.csv', 'r') as infile, open('output_file.csv', 'w', newline='') as outfile:
reader = csv.reader(infile)
writer = csv.writer(outfile)
for row in reader:
# Perform some transformation (e.g., clean data, filter rows)
if int(row[2]) > 1000: # Example filter condition
writer.writerow(row)
Выполнение сценария занимает несколько часов.
Он потребляет много памяти, что иногда приводит к сбоям на моем компьютере. с 8 ГБ ОЗУ.
Чтение файла частями с помощью панд:
Код: Выделить всё
import pandas as pd
chunks = pd.read_csv('large_file.csv', chunksize=10000)
for chunk in chunks:
# Transformation logic here
Экспериментировал с csv.DictReader для более читаемых преобразований, но производительность была такой же.
Мой вопрос: как оптимизировать этот сценарий для более эффективной обработки CSV-файла с точки зрения скорости и использования памяти? Существуют ли библиотеки или методы Python, специально разработанные для обработки таких больших наборов данных?
Подробнее здесь: https://stackoverflow.com/questions/792 ... fficiently
Мобильная версия