2024-10-02 15:31:25 +04:00

88 lines
2.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()