Skip to content

Time Series help to provide insights about seasonality and trend relate

Time Series Decomposition

Decompose your time series data and plot it to uncover seasonality, trends and noise.

  • Seasonality tells you whether the data displays a clear periodic pattern.
  • Trend answers whether the data follow a consistent upwards or downward slope.
  • Noise highlights outlier points or missing values inconsistent with the rest of the data.
# Load packages
import statsmodels.api as sm
import pandas as pd
import matplotlib.pyplot as plt
# Upload your data as CSV and load as the first data frame
df = pd.read_csv(
    "co2.csv",
    parse_dates=["datestamp"],  # Tell pandas which column(s) to parse as dates
    index_col="datestamp",
)  # Use a date column as your index
# Convert numeric columns
df["co2"] = pd.to_numeric(
    df["co2"],  # Tell pandas which column(s) to make numeric
    errors="coerce",  # If ‘coerce’, then invalid parsing will be set as NaN
)

# Fill missing values
df["co2"] = df["co2"].fillna(method="ffill")  # Choose method to fill missing values
df
# Plot settings
%config InlineBackend.figure_format='retina'
plt.style.use("ggplot")
plt.rcParams["figure.figsize"] = 12, 9  # Figure size (width,height)

# Perform time series decompositon
decomposition = sm.tsa.seasonal_decompose(df)

# Plot decomposition
fig = decomposition.plot()

# Specify axis labels
plt.xlabel("Date", fontsize=12)  # Text and size of xlabel
plt.suptitle(
    "CO2 Time-Series Decomposition",  # Text of title
    y=1.05,  # Position of title
    size=15,  # Size of title
)
plt.show()
Spinner
DataFrameas
evas
variable
SELECT 
  date,
  country,
  vehicle,
  duration,
  crew,
  purpose,
  year,
  program,
  MAX(public.evas.duration) AS longest_mission,
  MIN(public.evas.duration) AS shortest_mission
FROM public.evas
WHERE "purpose" IS NOT NULL
GROUP BY 
  date, 
  country, 
  vehicle, 
  duration, 
  crew, 
  purpose, 
  year, 
  program
ORDER BY year DESC