Импорт и анализ файла .data - PullRequest
0 голосов
/ 18 декабря 2018

есть файл, который я пытался импортировать и безопасный как pandas df.На первый взгляд кажется, что это уже упорядоченные столбцы и строки, но в конце концов мне пришлось сделать кучу вещей, чтобы создать pandas df.Не могли бы вы проверить, есть ли гораздо более быстрый способ управлять этим?

url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data'

Мой способ сделать это:

import requests
import pandas as pd

r = requests.get(url)

file = r.text    

step_1 = file.split('\n')

for n in range(len(step_1)):                 # remove empty strings
    if bool(step_1[n]) == False:                 
        del(step_1[n])

step_2 = [i.split('\t') for i in step_1]

cars_names = [i[1] for i in step_2]

step_3 = [i[0].split(' ') for i in step_2]

for e in range(len(step_3)):         # remove empty strings in each sublist
    step_3[e] = [item for item in step_3[e] if item != '']


mpg        = [i[0] for i in step_3]
cylinders  = [i[1] for i in step_3]
disp       = [i[2] for i in step_3]
horsepower = [i[3] for i in step_3]
weight     = [i[4] for i in step_3]
acce       = [i[5] for i in step_3]
year       = [i[6] for i in step_3]
origin     = [i[7] for i in step_3]


list_cols = [cars_names, mpg, cylinders, disp, horsepower, weight, acce, year, origin]

# list_labels written manually:
list_labels = ['car name', 'mpg', 'cylinders', 'displacement', 'horsepower', 'weight', 'acceleration', 'model year', 'origin']

zipped = list(zip(list_labels, list_cols))

data = dict(zipped)

df = pd.DataFrame(data)

1 Ответ

0 голосов
/ 19 декабря 2018

Когда вы заменили \t на пробел, вы можете использовать read_csv, чтобы прочитать его.Но вам нужно обернуть текст, потому что первый параметр в read_csv - это filepath_or_buffer, для которого требуется объект с методом read () (например, дескриптор файла или StringIO).Тогда ваш вопрос можно преобразовать в read_csv неправильно читает имена столбцов в этом файле?

import requests
import pandas as pd
from io import StringIO

url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data'
r = requests.get(url)

file = r.text.replace("\t"," ")

# list_labels written manually:
list_labels = ['mpg', 'cylinders', 'displacement', 'horsepower', 'weight', 'acceleration', 'model year', 'origin','car name']

df = pd.read_csv(StringIO(file),sep="\s+",header = None,names=list_labels)

with pd.option_context('display.max_rows', None, 'display.max_columns', None):
    print(df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...