88 lines
2.8 KiB
Python
88 lines
2.8 KiB
Python
import pandas as pd
|
||
|
||
# Загрузка данных из CSV файла
|
||
data = pd.read_csv('test.csv')
|
||
|
||
# Преобразование даты в тип datetime
|
||
data['date'] = pd.to_datetime(data['date'])
|
||
|
||
# Добавление времени суток и дня недели
|
||
data['time_of_day'] = data['date'].dt.hour
|
||
data['day_of_week'] = data['date'].dt.dayofweek
|
||
|
||
# Проверка данных
|
||
print(data.head())
|
||
|
||
|
||
|
||
import matplotlib.pyplot as plt
|
||
|
||
# Группировка по времени суток и анализ средней цены
|
||
price_by_time = data.groupby('time_of_day')['price'].mean()
|
||
|
||
# Группировка по дням недели
|
||
price_by_day = data.groupby('day_of_week')['price'].mean()
|
||
|
||
# Визуализация
|
||
plt.figure(figsize=(12, 6))
|
||
|
||
# График изменения цен по времени суток
|
||
plt.subplot(1, 2, 1)
|
||
plt.plot(price_by_time)
|
||
plt.title('Цены в зависимости от времени суток')
|
||
plt.xlabel('Час дня')
|
||
plt.ylabel('Средняя цена')
|
||
|
||
# График изменения цен по дням недели
|
||
plt.subplot(1, 2, 2)
|
||
plt.plot(price_by_day)
|
||
plt.title('Цены в зависимости от дня недели')
|
||
plt.xlabel('День недели')
|
||
plt.ylabel('Средняя цена')
|
||
|
||
plt.tight_layout()
|
||
plt.show()
|
||
|
||
|
||
|
||
from prophet import Prophet
|
||
|
||
# Подготовка данных для Prophet
|
||
df = data[['date', 'price']].rename(columns={'date': 'ds', 'price': 'y'})
|
||
|
||
# Обучение модели
|
||
model = Prophet()
|
||
model.fit(df)
|
||
|
||
# Прогнозирование на следующие 30 дней
|
||
future = model.make_future_dataframe(periods=30)
|
||
forecast = model.predict(future)
|
||
|
||
# Визуализация прогноза
|
||
model.plot(forecast)
|
||
plt.title('Прогноз цен на следующие 30 дней')
|
||
plt.show()
|
||
|
||
|
||
# Пример использования данных о температуре в качестве регрессора
|
||
data['temperature'] = data['temperature'] # Предположим, что данные о температуре уже добавлены в CSV
|
||
|
||
# Подготовка данных для Prophet с погодными условиями
|
||
df = data[['date', 'price', 'temperature']].rename(columns={'date': 'ds', 'price': 'y', 'temperature': 'temp'})
|
||
|
||
# Обучение модели с дополнительным регрессором
|
||
model = Prophet()
|
||
model.add_regressor('temp')
|
||
model.fit(df)
|
||
|
||
# Прогнозирование
|
||
future = model.make_future_dataframe(periods=30)
|
||
future['temp'] = 22.0 # Предположим, что это прогнозируемая температура
|
||
|
||
forecast = model.predict(future)
|
||
|
||
# График прогноза с учетом погодных условий
|
||
model.plot(forecast)
|
||
plt.title('Прогноз цен с учетом погодных условий')
|
||
plt.show()
|