In this article, we will learn how to create A Time Series Plot With Seaborn And Pandas. Let’s discuss some concepts :
- Pandas is an open-source library that’s built on top of NumPy library. It’s a Python package that gives various data structures and operations for manipulating numerical data and statistics. It’s mainly popular for importing and analyzing data much easier. Pandas is fast and it’s high-performance & productive for users.
- Seaborn is a tremendous visualization library for statistical graphics plotting in Python. It provides beautiful default styles and color palettes to form statistical plots more attractive. It’s built on the highest of matplotlib library and also closely integrated to the info structures from pandas.
- A timeplot (sometimes called a statistic graph) displays values against the clock. They’re almost like x-y graphs, but while an x-y graph can plot a spread of “x” variables (for example, height, weight, age), timeplots can only display time on the x-axis. Unlike the pie charts and bar charts, these plots don’t have categories. Timeplots are good for showing how data changes over time. For instance, this sort of chart would work well if you were sampling data randomly times.
Steps Needed
- Import packages
- Import / Load / Create data.
- Plot the time series plot over data using lineplot (as tsplot was replaced with lineplot since Sep 2020).
Examples
Here, we create a rough data for understanding the time series plot with the help of some examples. Let’s create the data :
Python3
# importing packages import pandas as pd # creating data df = pd.DataFrame({ 'Date' : [ '2019-10-01' , '2019-11-01' , '2019-12-01' , '2020-01-01' , '2020-02-01' , '2020-03-01' , '2020-04-01' , '2020-05-01' , '2020-06-01' ], 'Col_1' : [ 34 , 43 , 14 , 15 , 15 , 14 , 31 , 25 , 62 ], 'Col_2' : [ 52 , 66 , 78 , 15 , 15 , 5 , 25 , 25 , 86 ], 'Col_3' : [ 13 , 73 , 82 , 58 , 52 , 87 , 26 , 5 , 56 ], 'Col_4' : [ 44 , 75 , 26 , 15 , 15 , 14 , 54 , 25 , 24 ]}) # view dataset display(df) |
Output:
Example 1: Simple time series plot with single column using lineplot
Python3
# importing packages import seaborn as sns import pandas as pd # creating data df = pd.DataFrame({ 'Date' : [ '2019-10-01' , '2019-11-01' , '2019-12-01' , '2020-01-01' , '2020-02-01' , '2020-03-01' , '2020-04-01' , '2020-05-01' , '2020-06-01' ], 'Col_1' : [ 34 , 43 , 14 , 15 , 15 , 14 , 31 , 25 , 62 ], 'Col_2' : [ 52 , 66 , 78 , 15 , 15 , 5 , 25 , 25 , 86 ], 'Col_3' : [ 13 , 73 , 82 , 58 , 52 , 87 , 26 , 5 , 56 ], 'Col_4' : [ 44 , 75 , 26 , 15 , 15 , 14 , 54 , 25 , 24 ]}) # create the time series plot sns.lineplot(x = "Date" , y = "Col_1" , data = df) plt.xticks(rotation = 25 ) |
Output :
Example 2: (Simple time series plot with multiple columns using line plot)
Python3
# importing packages import seaborn as sns import pandas as pd # creating data df = pd.DataFrame({ 'Date' : [ '2019-10-01' , '2019-11-01' , '2019-12-01' , '2020-01-01' , '2020-02-01' , '2020-03-01' , '2020-04-01' , '2020-05-01' , '2020-06-01' ], 'Col_1' : [ 34 , 43 , 14 , 15 , 15 , 14 , 31 , 25 , 62 ], 'Col_2' : [ 52 , 66 , 78 , 15 , 15 , 5 , 25 , 25 , 86 ], 'Col_3' : [ 13 , 73 , 82 , 58 , 52 , 87 , 26 , 5 , 56 ], 'Col_4' : [ 44 , 75 , 26 , 15 , 15 , 14 , 54 , 25 , 24 ]}) # create the time series plot sns.lineplot(x = "Date" , y = "Col_1" , data = df) sns.lineplot(x = "Date" , y = "Col_2" , data = df) plt.ylabel( "Col_1 and Col_2" ) plt.xticks(rotation = 25 ) |
Output :
Example 3: Multiple time series plot with multiple columns
Python3
# importing packages import seaborn as sns import pandas as pd import matplotlib.pyplot as plt # creating data df = pd.DataFrame({ 'Date' : [ '2019-10-01' , '2019-11-01' , '2019-12-01' , '2020-01-01' , '2020-02-01' , '2020-03-01' , '2020-04-01' , '2020-05-01' , '2020-06-01' ], 'Col_1' : [ 34 , 43 , 14 , 15 , 15 , 14 , 31 , 25 , 62 ], 'Col_2' : [ 52 , 66 , 78 , 15 , 15 , 5 , 25 , 25 , 86 ], 'Col_3' : [ 13 , 73 , 82 , 58 , 52 , 87 , 26 , 5 , 56 ], 'Col_4' : [ 44 , 75 , 26 , 15 , 15 , 14 , 54 , 25 , 24 ]}) # create the time series subplots fig,ax = plt.subplots( 2 , 2 , figsize = ( 10 , 8 )) sns.lineplot( x = "Date" , y = "Col_1" , color = 'r' , data = df, ax = ax[ 0 ][ 0 ]) ax[ 0 ][ 0 ].tick_params(labelrotation = 25 ) sns.lineplot( x = "Date" , y = "Col_2" , color = 'g' , data = df, ax = ax[ 0 ][ 1 ]) ax[ 0 ][ 1 ].tick_params(labelrotation = 25 ) sns.lineplot(x = "Date" , y = "Col_3" , color = 'b' , data = df, ax = ax[ 1 ][ 0 ]) ax[ 1 ][ 0 ].tick_params(labelrotation = 25 ) sns.lineplot(x = "Date" , y = "Col_4" , color = 'y' , data = df, ax = ax[ 1 ][ 1 ]) ax[ 1 ][ 1 ].tick_params(labelrotation = 25 ) fig.tight_layout(pad = 1.2 ) |
Output :