#python #dataframe #hadoop #gzip
#python #фрейм данных #hadoop #gzip
Вопрос:
У меня много файлов gzip, которые мне нужно извлечь. Имя файла выглядит следующим образом — FGT6HD3917800515 [root].2020-07-03-13-20-35. tlog.1593759574.csv
Все эти файлы имеют по одному файлу CSV каждый. Я хочу прочитать содержимое этих CSV-файлов в фрейме данных на Python. Данные в CSV выглядят следующим образом —
NTP 1593759574 принимает несканируемый порт Индии 10 1x.1xx.xx.xxx 123 1593779419 181 17 Порт Индии 1xx.xxx.1xx.1xx 42338 1xx.1xx.xxx.xx 123 1xx.1xx.xxx.x 42338
Это то, что я пробовал —
import gzip
import pandas as pd
import numpy as np
import os
list = os.listdir(r'C:UsersSAKSHI SHARMA.spyder-py3filter data')
print(list);
a = np.empty((0))
for i in list:
with gzip.open(r'C:UsersSAKSHI SHARMA.spyder-py3filter data/' i) as f: #why do I have to give /
features_train = pd.read_csv(f)
a = np.append(a,features_train)
del features_train
final_data = pd.concat(a, axis=0, ignore_index=True)
print(final_data)
Я получаю следующую ошибку TypeError: cannot concatenate object of type '<class 'str'>'; only Series and DataFrame objs are valid
Кто-то предложил мне включить Hadoop, поскольку я работаю с ~ 40 ГБ данных. Однако мне нужно многому научиться и поработать над Python, и переход на новое программное обеспечение, такое как Hadoop, усложнил бы для меня ситуацию. Может кто-нибудь, пожалуйста, помогите мне, как читать эти типы архивированных файлов и читать содержимое в фрейме данных. Спасибо!
Ответ №1:
Проверьте библиотеку Dask следующим образом, которая считывает много файлов в один df
>>> import dask.dataframe as dd
>>> df = dd.read_csv('data*.csv')
Прочитайте их документы https://examples.dask.org/dataframes/01-data-access.html#Read-CSV-files
Комментарии:
1. Этот шаг будет полезен после извлечения файлов CSV.