чтение в файле tar.z как pandas фрейм данных в python 3.7.4? - PullRequest
0 голосов
/ 04 августа 2020

Я хочу загрузить набор данных из репозитория UCI.

Набор данных находится в формате tar.Z, и в идеале я бы хотел прочитать его как pandas фрейм данных.

Я проверил распаковку файла tar.Z с помощью python? , который предложил библиотеку zgip, поэтому из https://docs.python.org/3/library/gzip.html я попытался использовать приведенный ниже код но я получил сообщение об ошибке.

Спасибо за любую помощь!

import gzip
with gzip.open('https://archive.ics.uci.edu/ml/machine-learning-databases/diabetes/diabetes-data.tar.Z', 'rb') as f:
file_content = f.read()  

ERROR MESSAGE:
OSError: [Errno 22] Invalid argument: 'https://archive.ics.uci.edu/ml/machine-learning-databases/diabetes/diabetes-data.tar.Z'

1 Ответ

0 голосов
/ 04 августа 2020

Я не думаю, что вы можете прочитать данные .Z с помощью любого модуля в Python; вы можете просмотреть Pypi и посмотреть, есть ли модуль для расширения .Z. Однако вы можете использовать командную строку для обработки данных.

import subprocess
from io import StringIO

data = subprocess.run(
    """curl https://archive.ics.uci.edu/ml/machine-learning-databases/diabetes/diabetes-data.tar.Z | 
    tar -xOvf diabetes-data.tar.Z --wildcards 'Diabetes-Data/data-*' """,
    shell=True,
    capture_output=True,
    text=True,
).stdout


df = pd.read_csv(StringIO(data), sep="\t", header=None)

df.head()

        0       1        2  3
0   04-21-1991  9:09    58  100
1   04-21-1991  9:09    33  009
2   04-21-1991  9:09    34  013
3   04-21-1991  17:08   62  119
4   04-21-1991  17:08   33  007

Вы можете прочитать эту электронную книгу , чтобы узнать больше о параметрах командной строки.

...