Ошибка разбора большого JSON файла на Pandas DataFrame в Python из-за ошибки памяти - PullRequest
0 голосов
/ 07 февраля 2020

Я использую следующий код Python3 в PyCharm для анализа идентификатора пользователя и твита из файлов JSON с данными Twitter. Мне удалось успешно создать списки, кадры данных и экспортировать файлы CSV для 13 файлов размером до 57 МБ .

with open(file, 'r', encoding='utf8' , errors='ignore') as json_file:
    data = json.loads("[" + json_file.read().replace("}\n{", "},\n{") +  "]")

user_ids = []
for tweet in data:
    if 'user' in tweet.keys():
        if 'id_str' in tweet["user"].keys():
            user_ids.append(tweet["user"]["id_str"])

tweet_ids = []
for tweet in data:
    if 'id_str' in tweet.keys():
        tweet_ids.append(tweet['id_str'])

data_tuples = list(zip(user_ids, tweet_ids))

df = pd.DataFrame(data_tuples, columns = ['User ID', 'Tweet ID'])

print(df)
print('\nLength is ' + str(len(df)))
df.to_csv(outfile, encoding='utf-8', index=False)

Однако при попытке применить этот код в файле 26 ГБ JSON той же структуры, я получаю следующую ошибку памяти:

Traceback (most recent call last):
  File "C:/Users/taylo/PycharmProjects/TwitterTest/JSON_Flatten.py", line 23, in <module>
    data = json.loads("[" + json_file.read().replace("}\n{", "},\n{") +  "]")
MemoryError

Есть ли способ прочитать этот файл по частям, последовательно добавляя части в файл?

...