Matplotlib показывает дату в POSIX времени - PullRequest
0 голосов
/ 20 июня 2019

Мои данные содержат даты заказа и валовые продажи. У меня проблема в том, что xticks показывает время POSIX для X, которое не читается людьми. Есть ли у вас какие-либо идеи, как нарисовать их в удобочитаемом виде? Мне пришлось трансформироваться в POSIX, чтобы соответствовать моей модели.

enter image description here

from sklearn import linear_model

def load_data():
    df = pd.read_csv('data.csv', usecols=['created', 'total_gross'], parse_dates=['created'])
    # The following line could be replaced with parse_dates=['created'] above
    # df['created'] = pd.to_datetime(df.created)
    return df.set_index('created').resample('D').sum().fillna(0)

df = load_data()
df.info()

# Create and Fit a Linear Regression Model
regr = linear_model.LinearRegression()

# convert to POSIX time by dividing by 10**9
X = df.index.astype('int64').values.reshape(-1,1) // 10**9

regr.fit(X, y)
y_predict = regr.predict(X)
plt.plot(X, y_predict)
plt.show()

1 Ответ

0 голосов
/ 20 июня 2019

Чтобы использовать POSIX time и matplotlib, вы можете использовать numpy и datetime

import numpy as np
import datetime as dt

dateconv = np.vectorize(dt.datetime.fromtimestamp)
date = dateconv(X)

Затем вы можете изменить режим печати на:

import matplotlib.dates as dates

fig,ax = plt.subplots()
ax.plot_date(date, y_predict)
xfmt = dates.DateFormatter('%Y-%m-%d %H:%M:%S')
ax.xaxis.set_major_formatter(xfmt)
fig.autofmt_xdate()
plt.show()

Какие повторы:

enter image description here

Я бы посоветовал вам использовать matplotlib для построения временных рядов вместо использования панд df.plot(), потому что временные метки панд и matplotlib теряют популярность, когда вы пытаетесь контролировать форматы дат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...