Есть ли способ чтения в определенных строках файла .csv при использовании функции csv.DictReader в Python?
Например, если вы хотите загрузить только 10-20 строки файла .csv без загрузки всего набора данных сначала.
У меня есть несколько файлов .csv с 200 миллионами строк в каждом, содержащих 10 записей данных field_name - поэтому я использую DictReader, а не простой csv.read ().
Вот простой пример моего текущего метода:
import csv
from tqdm import tqdm
field_names = ['A','B','C']
IDs = []
with open(file_1) as f:
reader = csv.DictReader(f,field_names,delimiter=',')
row_count = 0
for row in tqdm(reader):
row_count+=1
ID = row['A']
if ID not in IDs == True:
IDs.append(ID)
Вы можете понять, почему это будет слишком медленным для 200 миллионов строк, и все дальнейшие условия или обработка внутри цикла просто сильно его замедляют.
Так что имеет смысл перебирать группы строк, а затем многопоточность их, чтобы сэкономить время.
Вещи, которые я рассмотрел:
- Использование программы чтения pandas csv (вам все равно нужно загрузить
весь набор данных в начале)
- Итерация по строкам, как в моем примере
код, ведение журнала количества строк, а затем перезагрузка строк в многопоточном
партии.
- Использование генератора, а не итератора (например, см. ThreadPool и Pool для параллельной обработки )
Заранее большое спасибо!