Импорт данных URL попадает под один индекс - Python - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь импортировать данные из Национальной ассоциации океанических и атмосферных исследований.Данные могут быть загружены вручную в формате TXT, но я хочу загрузить их через urlopen Python.После импорта данных все столбцы и строки находятся внутри одного столбца индекса, а скорее стандартного фрейма данных с заголовками.Любая информация будет полезна.

import pandas as pd
from urllib.request import urlopen

url = "https://www.ndbc.noaa.gov/view_text_file.php?filename=42887h2014.txt.gz&dir=data/historical/stdmet/"
#df = pd.read_csv(url, header=NONE, sep='\s+')
data_csv = urlopen(url)
df2014 = pandas.read_csv(data_csv, index_col=0, parse_dates=True)

df2014.head()

Результат:

df2014.head()
Out[26]: 
Empty DataFrame
Columns: []
Index: [#yr  mo dy hr mn degT m/s  m/s     m   sec   sec degT   hPa  degC  degC  degC   mi    ft, 2014 01 01 00 00  61  7.4 99.0  1.12  4.34 99.00 999 9999.0  19.2 999.0  12.5 99.0 99.00, 2014 01 01 00 20  60  7.8 99.0  1.12  4.34 99.00 999 9999.0  19.4 999.0  12.9 99.0 99.00, 2014 01 01 00 40  66  7.8 99.0  1.12  4.34 99.00 999 9999.0  19.3 999.0  13.0 99.0 99.00, 2014 01 01 01 00  76  8.6 99.0  1.18  4.49 99.00 999 9999.0  19.4 999.0  13.3 99.0 99.00]

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

pandas.read_csv использует ',' в качестве разделителя по умолчанию.Ваши столбцы разделены пробелами.Вы можете указать пандам использовать пробелы в качестве разделителя, добавив sep='\s+' (как вы это сделали в закомментированной строке) или delim_whitespace=True в качестве аргумента ключевого слова.Вы можете найти подробное описание обоих аргументов в API: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

0 голосов
/ 08 октября 2018

проблема здесь в том, что источник данных, который вы связали, не разделяет свои данные через запятую, а разделяет их с помощью пробела.По умолчанию метод read_csv в библиотеке pandas считывает данные, используя запятые в качестве разделителя.

Решение состоит в том, чтобы просто установить разделители для пробелов, установив аргумент delim_whitespace в read_csv в True, например:

df2014 = pd.read_csv(data_csv, delim_whitespace=True, index_col=0, parse_dates=True)
...