Я чувствую, что это очень глупый вопрос, но я больше не могу думать о проблеме.Индексирование очень больших файлов csv в Python
У меня есть очень большое количество данных (60 + GB) в формате CSV заказанного ID:
id, "{data}"
id2, "{data}"
...
У меня есть другой набор данных, который должен быть объединен с этими данными в словаре формата (в настоящее время распались над некоторыми маринованные файлов):
{player_id: {rating, [ids]}, player_id2: {rating, [ids]}, ... }
Где идентификаторы в данных CSV соответствуют идентификаторам в указанных списках. Я хотел бы поместить данные для каждого идентификатора в эти данные из данных csv, то есть я должен взять идентификатор, искать его в данных csv, а затем записать его в этот формат словаря. Таким образом, большое узкое место - это поиск данных в файлах csv по идентификатору и чтение его с диска.
Мое текущее решение состоит в том, чтобы разбить данные csv на множество небольших файлов (1-2 МБ) и индексировать, какие файлы содержат идентификаторы, так что поиск данных намного быстрее, чем анализ всех данных csv, но по-прежнему не постоянна и по-прежнему требует открытия файла csv на каждом шаге.
Есть ли более быстрый способ сделать это? Я чувствую, что я очень глуп, и есть более быстрый способ, так как мое решение с многопроцессорностью все равно займет 2 недели, чтобы закончить.
С удовольствием уточняю, неясен ли мой вопрос. Благодарю.
Использование CSV для 60 ГБ данных - не очень хорошая идея именно по тем причинам, которые вы здесь находите. Можно ли переместить его в базу данных [NoSQL] (https://en.wikipedia.org/wiki/NoSQL)? – Tim
являются идентификаторами всегда последовательными? (1,2, ..., N)? и вы просто пытаетесь найти один (с id X?) –
Может быть, попробуйте pandas pandas.pydata.org –