module_analysis #2
87
analysis/main.py
Normal file
87
analysis/main.py
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
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()
|
Loading…
x
Reference in New Issue
Block a user