init
This commit is contained in:
parent
40c9520274
commit
01d05083dd
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…
Reference in New Issue
Block a user