Как извлечь файл gzip и прочитать его содержимое в фрейме данных в python

#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.