Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Simple Time Series | Time Series Visualization
Time Series Analysis

book
Simple Time Series

The role of visualization in time series analysis has already been demonstrated to you in the previous section. An expert's glance at the chart may be enough to understand whether the data is stationary or not, what main patterns are present in it, etc.

Despite this, it is important to remember that an expert's assessment is not accurate, and we still recommend using formal methods (tests) to analyze your data.

You already know how to implement 2D visualization:

python
import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(11, 9))
ax.plot(dataset["Date"], dataset["NO2"])
ax.set_xlabel("Date")
ax.set_ylabel("NO2")
plt.show()

But let's take as an example a situation where we need to take into account 2 or 3 variables that change over time. For example, you have an online store and a pricing task for which you use competitor pricing data. You take on your 2 main competitors. See how you can put several time series on one graph at once:

python
plt.figure(figsize=(11, 9))
dataset.plot(label="dataset", color=["orange", "blue"])
plt.ylabel("Price")
plt.xlabel("Date")
plt.legend()

What the data looks like in the dataset:

python
dataset.head()

Also, you can implement it in the following way through a loop:

python
date = pd.to_datetime(dataset.index)

for i in dataset.columns:
plt.plot(date, dataset[i])

plt.show()

If you have a large amount of data (for example, you want to explore more than 20 competitors), you may have problems with the analysis of the resulting graph:

Then, you can use the seaborn library, which allows you to compare multiple graphs with each other:

import seaborn as sns

sns.set_theme(style="dark")
flights = sns.load_dataset("flights")

g = sns.relplot(
data=flights,
x="month", y="passengers", col="year", hue="year",
kind="line", palette="crest", linewidth=4, zorder=5,
col_wrap=3, height=2, aspect=1.5, legend=False,
)

for year, ax in g.axes_dict.items():
ax.text(.8, .85, year, transform=ax.transAxes, fontweight="bold")
sns.lineplot(
data=flights, x="month", y="passengers", units="year",
estimator=None, color=".7", linewidth=1, ax=ax,
)

ax.set_xticks(ax.get_xticks()[::2])
g.set_axis_labels("", "Passengers")
g.tight_layout()
12345678910111213141516171819202122
import seaborn as sns sns.set_theme(style="dark") flights = sns.load_dataset("flights") g = sns.relplot( data=flights, x="month", y="passengers", col="year", hue="year", kind="line", palette="crest", linewidth=4, zorder=5, col_wrap=3, height=2, aspect=1.5, legend=False, ) for year, ax in g.axes_dict.items(): ax.text(.8, .85, year, transform=ax.transAxes, fontweight="bold") sns.lineplot( data=flights, x="month", y="passengers", units="year", estimator=None, color=".7", linewidth=1, ax=ax, ) ax.set_xticks(ax.get_xticks()[::2]) g.set_axis_labels("", "Passengers") g.tight_layout()
copy
Taak

Swipe to start coding

Plot the flights.csv dataset, which contains flight data from 1949 to 1960, every month.

  1. Save months names within the all_months variable. Months names are df column names.
  2. Iterate over each available year in the data. Years are indexes of the df dataframe.
  3. Within the loop, filter to iterated year data (using the .iloc[] property and the n variable), and save them within the year_row variable.
  4. Within the loop, initialize a line plot with months labels (all_months) on the x-axis, respective data (year_row) on the y-axis, and set label parameter to iterated year.
  5. Display the legend of the plot.

Oplossing

# Importing libraries
import pandas as pd
import matplotlib.pyplot as plt

# Reading the data
df = pd.read_csv("https://codefinity-content-media.s3.eu-west-1.amazonaws.com/943e906e-4de6-4694-a1df-313ceed7cfe7/flights.csv", index_col = 0)

# Months labels
all_months = df.columns
n = 0 # Variable-counter

# Iterate over years
for year in df.index:
# Filter to specific year data
year_row = df.iloc[n]
# Initialize a line plot
plt.plot(all_months, year_row, label=year)
n += 1 # Increment variable n

# Display the legend and plot
plt.legend(bbox_to_anchor=(1.0, 1.0))
plt.show()

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 1
single

single

# Importing libraries
import pandas as pd
import matplotlib.pyplot as plt

# Reading the data
df = pd.read_csv("https://codefinity-content-media.s3.eu-west-1.amazonaws.com/943e906e-4de6-4694-a1df-313ceed7cfe7/flights.csv", index_col = 0)

# Months labels
all_months = df.___
n = 0 # Variable-counter

# Iterate over years
for year in df.___:
# Filter to specific year data
year_row = df.___[___]
# Initialize a line plot
plt.plot(___, ___, label=___)
n += 1 # Increment variable n

# Display the legend and plot
plt.___(bbox_to_anchor=(1.0, 1.0))
plt.show()

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

some-alt