Я пытаюсь выполнить очистку данных с помощью python. У меня есть некоторые большие файлы (1 - 2gigs) csv
, которые я хочу сортировать по некоторому атрибуту (например, дата, время), а затем выводят еще один файл csv
с этой информацией с целью сделать его пригодным для использования в excel.очистка данных в python с использованием больших (1.7gig) файлов csv
Поскольку я повторяю строки, я сталкиваюсь с некоторыми проблемами с большой памятью. Первоначально я использовал 32-разрядный Idle, который не запускал мой код, а затем переключился на 64-bit Spyder
. Теперь код запускается, но останавливается (как представляется, обрабатывается, память потребляется, но не видели, чтобы она двигалась в последние полчаса) на первой итеративной строке.
Мой код выглядит следующим образом. Процесс останавливается на строке 10 (выделено). Я довольно новичок в python, поэтому я уверен, что мой код очень примитивен, но это лучшее, что я могу сделать! Спасибо за вашу помощь заранее :)
def file_reader(filename):
"function takes string of file name and returns a list of lists"
global master_list
with open(filename, 'rt') as csvfile:
rows = []
master_list = []
rowreader = csv.reader(csvfile, delimiter=',', quotechar='|')
**for row in rowreader:**
rows.append(','.join(row))
for i in rows:
master_list.append(i.replace(' ', '').replace('/2013', ',').split(","))
return master_list
def trip_dateroute(date,route):
dateroute_list = []
for i in master_list:
if str(i[1]) == date and str(i[3]) == route:
dateroute_list.append(i)
return dateroute_list
def output_csv(filename, listname):
with open(filename, "w") as csvfile:
writer = csv.writer(csvfile, delimiter=',', quotechar='|', lineterminator='\n')
for i in listname:
writer.writerow(i)