Преобразование даты для плавания для линейной регрессии в кадре данных Pandas

Похоже, что для линейной регрессии OLS хорошо работать в Pandas, аргументы должны быть плавающими. Я начинаю с csv (называемый «gameAct.csv») формы:

date, city, players, sales 2014-04-28,London,111,1091.28 2014-04-29,London,100,1100.44 2014-04-28,Paris,87,1001.33 ... 

Я хочу выполнить линейную регрессию того, как продажи зависят от даты (по мере продвижения вперед, как продвигаются продажи?). Проблема с моим кодом ниже кажется, что даты не являются значениями float. Я был бы признателен за помощь в решении этой проблемы с индексацией в Pandas.

Мой текущий (нерабочий, но компилирующий код):

 import pandas as pd from pandas import DataFrame, Series import statsmodels.formula.api as sm df = pd.read_csv('gameAct.csv') df.columns = ['date', 'city', 'players', 'sales'] city_data = df[df['city'] == 'London'] result = sm.ols(formula = 'sales ~ date', data = city_data).fit() 

Поскольку я изменяю значение города, я получаю результаты R ^ 2 = 1, что неверно. Я также попытался index_col = 0, parse_dates == True' в определении dataframe df , но безуспешно.

Я подозреваю, что есть лучший способ читать в таких файлах csv для выполнения базовой регрессии по датам, а также для более общего анализа временных рядов. Помощь, примеры и ресурсы приветствуются!

Обратите внимание, что с приведенным выше кодом, если я преобразую индекс даты (для данного города) в массив, значения в этом массиве имеют вид:

 '\xef\xbb\xbf2014-04-28' 

Как произвести анализ AIC по всем непродажным параметрам? (например, результат может заключаться в том, что продажи зависят максимально линейно от даты и города).

2 Solutions collect form web for “Преобразование даты для плавания для линейной регрессии в кадре данных Pandas”

Для такого рода регрессии я обычно конвертирую даты или временные метки в целое число дней с момента начала данных.

Это делает трюк красиво:

 df = pd.read_csv('test.csv') df['date'] = pd.to_datetime(df['date']) df['date_delta'] = (df['date'] - df['date'].min()) / np.timedelta64(1,'D') city_data = df[df['city'] == 'London'] result = sm.ols(formula = 'sales ~ date_delta', data = city_data).fit() 

Преимущество этого метода заключается в том, что вы уверены в единицах, участвующих в регрессии (дни), тогда как автоматическое преобразование может неявно использовать другие единицы, создавая запутанные коэффициенты в вашей линейной модели. Он также позволяет объединять данные из нескольких рекламных кампаний, которые начинались в разное время, в регрессию (например, вы заинтересованы в эффективности кампании как функции дней в кампании). Вы также можете выбрать 1-го января, как ваш 0, если вы хотите измерить тренд дня года. Выбор вашей даты 0 дает вам контроль над всем этим.

Есть также свидетельства того, что statsmodels поддерживает тайм-ауты от панд. Вы также можете применить это к линейным моделям: http://statsmodels.sourceforge.net/stable/examples/generated/ex_dates.html

Кроме того, быстрое примечание. Вы должны иметь возможность читать имена столбцов непосредственно из csv автоматически, как в примере кода, который я разместил. В вашем примере я вижу, что между запятыми есть пробелы в первой строке файла csv, в результате чего имена столбцов похожи на «дата». Удалите пробелы, и автоматическое чтение заголовков CSV должно работать.

Я не уверен в специфике statsmodels, но в этом сообщении перечислены все преобразования даты и времени для python. Они не всегда индивидуальны, поэтому я часто использую ссылку 😉

  • Может ли группа pandas группироваться в список, а не суммировать, понимать и т. Д.?
  • проверьте, является ли переменная dataframe
  • Копирование файлов данных MultiIndex с помощью pd.read_clipboard?
  • Pandas - Разбивка штабелированной гистограммы
  • Как выбрать подмножество значений с именованного уровня столбца в DataFrame?
  • SettingWithCopy Предупреждение при использовании .loc
  • Pandas - пересечение двух кадров данных на основе записей столбцов
  • Как сделать участок мозаики в Matplotlib
  • Python Pandas - изменение некоторых типов столбцов по категориям
  • Есть ли способ в Pandas использовать предыдущее значение строки в dataframe.apply, когда предыдущее значение также вычисляется в приложении?
  • Ошибка утверждения в столбцах в DataFrame с иерархической индексацией
  •  
    Interesting Posts for Van-Lav

    Concurrent.futures vs Multiprocessing в Python 3

    Каков хороший способ отслеживать переменные экземпляра класса в Python?

    Django: значение параметра отображения

    Как читать JSON из сокета в python? (Инкрементный синтаксический анализ JSON)

    webbrowser python запускает IE вместо стандартного для Windows 7

    Поддержка языковой поддержки ОС для использования в Python

    Использование памяти продолжает расти с помощью многопроцессорной системы Python.

    Невозможно импортировать модуль

    подсчет количества черных пикселей в изображении в Python с OpenCV

    Ошибка брандмауэра SSL при использовании OpenSSL

    решения для решения питона для неизвестной переменной

    Для печати в кольцевой печати памяти класса вместо списка

    Как полностью перезагрузить Python stdlib logging module в сеансе ipython?

    Как я могу отсортировать список координат для прямоугольника против часовой стрелки?

    Почему easy_install извлекает некоторые яйца python, а не другие?

    Python - лучший язык программирования в мире.