Предположим, я имею дело с очень большим CSV файлом. Таким образом, я могу только читать данные по частям в память. Ожидаемый поток событий должен быть следующим:
1) Считать порцию (например: 10 строк) данных из CSV, используя панд.
2) Обратный порядок данных
3) Скопируйте каждую строку в новый CSV файл в обратном порядке. Таким образом, каждый блок (10 строк) записывается в CSV с начала в обратном порядке.
В конце файл csv должен быть в обратном порядке, и это должно быть сделано без загрузки всего файла в память для ОС Windows.
Я пытаюсь сделать прогноз временных рядов, мне нужны данные от старых к последним (1-я строка, самая старая запись). Я не могу загрузить весь файл в память. Я ищу способ сделать это каждый блок за раз, если это возможно.
Набор данных, который я попробовал на train.csv
набора данных Россмана из kaggle. Вы можете получить его из этого github repo
Моя попытка не копирует строки в новый CSV файл должным образом.
Показать ниже мой код:
import pandas as pd
import csv
def reverse():
fields = ["Store","DayOfWeek","Date","Sales","Customers","Open","Promo","StateHoliday",
"SchoolHoliday"]
with open('processed_train.csv', mode='a') as stock_file:
writer = csv.writer(stock_file,delimiter=',', quotechar='"',
quoting=csv.QUOTE_MINIMAL)
writer.writerow(fields)
for chunk in pd.read_csv("train.csv", chunksize=10):
store_data = chunk.reindex(index=chunk.index[::-1])
append_data_csv(store_data)
def append_data_csv(store_data):
with open('processed_train.csv', mode='a') as store_file:
writer = csv.writer(store_file,delimiter=',', quotechar='"',
quoting=csv.QUOTE_MINIMAL)
for index, row in store_data.iterrows():
print(row)
writer.writerow([row['Store'],row['DayOfWeek'],row['Date'],row['Sales'],
row['Customers'],row['Open'],row['Promo'],
row['StateHoliday'],row['SchoolHoliday']])
reverse()
Заранее спасибо