Time series analysis is used to study data points collected over time. It helps in identifying trends, seasonal variations, and patterns in data. It is widely used in fields like finance, stock market analysis, weather forecasting, sales forecasting, and more.
In this tutorial, we will cover:
Time series data is a sequence of observations recorded at time intervals (e.g., hourly, daily, weekly). Examples include:
We use Pandas for handling time series data. Let's start by loading a dataset and converting a column into a DateTime index.
import pandas as pd
# Load dataset
data = pd.read_csv("sales_data.csv")
# Convert 'date' column to datetime format
data['date'] = pd.to_datetime(data['date'])
data.set_index('date', inplace=True)
# Display first few rows
print(data.head())Resampling helps in changing the frequency of time series data. For example, converting daily data into monthly data.
# Resampling to monthly data (sum of sales per month)
monthly_data = data.resample('M').sum()
print(monthly_data.head())Common resampling options:
'D' → Daily'W' → Weekly'M' → Monthly'Y' → YearlyRolling mean (moving average) smooths fluctuations in time series data.
import matplotlib.pyplot as plt
# Compute 7-day moving average
data['7-day MA'] = data['sales'].rolling(window=7).mean()
# Plot original data and moving average
plt.figure(figsize=(10, 5))
plt.plot(data.index, data['sales'], label="Original Sales")
plt.plot(data.index, data['7-day MA'], label="7-Day Moving Avg", color='red')
plt.legend()
plt.show()Using Seasonal Decomposition to analyze trends, seasonality, and residuals.
from statsmodels.tsa.seasonal import seasonal_decompose
# Decompose the time series
decomposition = seasonal_decompose(data['sales'], model='additive')
# Plot components
decomposition.plot()
plt.show()A basic forecasting technique is Exponential Smoothing:
from statsmodels.tsa.holtwinters import SimpleExpSmoothing
# Apply Simple Exponential Smoothing
model = SimpleExpSmoothing(data['sales']).fit(smoothing_level=0.2, optimized=False)
data['forecast'] = model.fittedvalues
# Plot the forecast
plt.figure(figsize=(10, 5))
plt.plot(data.index, data['sales'], label="Original Sales")
plt.plot(data.index, data['forecast'], label="Forecast", color='red')
plt.legend()
plt.show()Sign in to join the discussion and post comments.
Sign in