#python #pandas #statsmodels
#python #pandas #statsmodels
Вопрос:
Я пытаюсь загрузить набор данных statsmodels, как я видел в руководстве, но я продолжаю получать ошибку.
import statsmodels as sm
import pandas as pd
data = sm.datasets.co2.load_pandas()
co2 = data.data
co2['ds'] = co2.index
co2.rename(columns={'co2': 'y'}, inplace=True)
co2.tail()
Это ошибка, которую я получаю:
Ошибка типа: new() получил неожиданный аргумент ключевого слова ‘format’
Комментарии:
1. На github есть открытая проблема с этой ошибкой. У меня здесь сработал обходной путь.
Ответ №1:
похоже, проблема связана с оригинальной функцией «load_pandas», параметр «формат» больше не существует в новой версии pd.DatetimeIndex, для получения подробной информации, пожалуйста, обратитесь к https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas .DatetimeIndex.html
def load_pandas():
data = load()
# pandas <= 0.12.0 fails in the to_datetime regex on Python 3
index = pd.DatetimeIndex(start=data.data['date'][0].decode('utf-8'),
periods=len(data.data), format='%Y%m%d',
freq='W-SAT')
dataset = pd.DataFrame(data.data['co2'], index=index, columns=['co2'])
#NOTE: this is how I got the missing values in co2.csv
#new_index = pd.DatetimeIndex(start='1958-3-29', end=index[-1],
# freq='W-SAT')
#data.data = dataset.reindex(new_index)
data.data = dataset
return data
итак, мое решение для решения этой проблемы приведено ниже:
-
загрузите данные в фрейм данных pandas
co2 = pd.DataFrame(sm.datasets.co2.load().data)
-
преобразуйте байты в строку, а затем datetime
co2['date'] = pd.to_datetime(co2.date.apply(lambda x: x.decode("utf-8")))
-
установите дату в качестве индекса
co2.set_index('date',inplace=True)