February 8, 2025

Time Series Forecasting with Prophet in Python

Prophet is an open-source forecasting tool developed by Facebook that is specifically designed for time series data. It is particularly useful for data with strong seasonal effects and for forecasting data with missing values. Prophet is easy to use and provides a straightforward way to create accurate forecasts.

1. Installing Prophet

First, you need to install the prophet library. You can install it using pip:

pip install prophet
    

2. Basic Usage

Here is a step-by-step guide to using Prophet for time series forecasting:

2.1. Import Required Libraries

import pandas as pd
from prophet import Prophet
    

2.2. Prepare Your Data

Prophet requires data in a specific format: a DataFrame with two columns named ds (date) and y (value). Ensure that your dates are in datetime format:

# Example DataFrame
data = {
    'ds': ['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04', '2024-01-05'],
    'y': [10, 15, 13, 17, 20]
}
df = pd.DataFrame(data)
df['ds'] = pd.to_datetime(df['ds'])
    

2.3. Fit the Model

Create an instance of the Prophet class and fit it to your data:

model = Prophet()
model.fit(df)
    

2.4. Make Forecasts

To make forecasts, create a DataFrame with future dates for which you want to predict values:

# Create a DataFrame with future dates
future = model.make_future_dataframe(periods=7)

# Make predictions
forecast = model.predict(future)

# View the forecasted values
print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail())
    

2.5. Plot the Forecast

Prophet provides built-in plotting functions to visualize the forecast:

import matplotlib.pyplot as plt

# Plot the forecast
fig = model.plot(forecast)

# Display the plot
plt.show()
    

3. Customizing the Model

Prophet allows for customization to handle various aspects of time series data:

3.1. Adding Holidays

You can add holidays or special events to improve the forecast:

3.2. Adjusting Seasonality

Prophet automatically detects yearly and weekly seasonality, but you can adjust or add custom seasonalities:

model = Prophet(yearly_seasonality=True, weekly_seasonality=True, daily_seasonality=False)
    

4. Conclusion

Prophet is a powerful tool for time series forecasting, especially when dealing with seasonal data or missing values. Its ease of use and flexibility make it a popular choice for analysts and data scientists. By following the steps above, you can quickly set up and use Prophet to forecast time series data and visualize the results.