This commit is contained in:
VictoriaPresnyakova 2024-10-02 15:31:25 +04:00
parent 40c9520274
commit 01d05083dd

87
analysis/main.py Normal file
View 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()