!pip install numpy
!pip install matplotlib
!pip install pandas
!pip install pandas_datareader
!pip install datetime
!pip install seaborn
# Some initial setup
from matplotlib import pyplot as plt
import numpy as np
#plt.style.use('seaborn-darkgrid')
plt.style.use('seaborn-v0_8-darkgrid')
import pandas as pd
import pandas_datareader.data as web
import datetime
import seaborn as snsRequirement already satisfied: numpy in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (2.2.6)
Requirement already satisfied: matplotlib in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (3.10.5)
Requirement already satisfied: contourpy>=1.0.1 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from matplotlib) (1.3.2)
Requirement already satisfied: cycler>=0.10 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from matplotlib) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from matplotlib) (4.59.2)
Requirement already satisfied: kiwisolver>=1.3.1 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from matplotlib) (1.4.9)
Requirement already satisfied: numpy>=1.23 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from matplotlib) (2.2.6)
Requirement already satisfied: packaging>=20.0 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from matplotlib) (25.0)
Requirement already satisfied: pillow>=8 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from matplotlib) (11.3.0)
Requirement already satisfied: pyparsing>=2.3.1 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from matplotlib) (3.2.3)
Requirement already satisfied: python-dateutil>=2.7 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from matplotlib) (2.9.0.post0)
Requirement already satisfied: six>=1.5 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from python-dateutil>=2.7->matplotlib) (1.17.0)
Requirement already satisfied: pandas in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (2.3.2)
Requirement already satisfied: numpy>=1.22.4 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from pandas) (2.2.6)
Requirement already satisfied: python-dateutil>=2.8.2 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from pandas) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from pandas) (2025.2)
Requirement already satisfied: tzdata>=2022.7 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from pandas) (2025.2)
Requirement already satisfied: six>=1.5 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)
Requirement already satisfied: pandas_datareader in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (0.10.0)
Requirement already satisfied: lxml in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from pandas_datareader) (6.0.1)
Requirement already satisfied: pandas>=0.23 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from pandas_datareader) (2.3.2)
Requirement already satisfied: requests>=2.19.0 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from pandas_datareader) (2.32.5)
Requirement already satisfied: numpy>=1.22.4 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from pandas>=0.23->pandas_datareader) (2.2.6)
Requirement already satisfied: python-dateutil>=2.8.2 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from pandas>=0.23->pandas_datareader) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from pandas>=0.23->pandas_datareader) (2025.2)
Requirement already satisfied: tzdata>=2022.7 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from pandas>=0.23->pandas_datareader) (2025.2)
Requirement already satisfied: six>=1.5 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from python-dateutil>=2.8.2->pandas>=0.23->pandas_datareader) (1.17.0)
Requirement already satisfied: charset_normalizer<4,>=2 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from requests>=2.19.0->pandas_datareader) (3.4.3)
Requirement already satisfied: idna<4,>=2.5 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from requests>=2.19.0->pandas_datareader) (3.10)
Requirement already satisfied: urllib3<3,>=1.21.1 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from requests>=2.19.0->pandas_datareader) (2.5.0)
Requirement already satisfied: certifi>=2017.4.17 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from requests>=2.19.0->pandas_datareader) (2025.8.3)
Collecting datetime
Downloading DateTime-5.5-py3-none-any.whl.metadata (33 kB)
Collecting zope.interface (from datetime)
Downloading zope_interface-8.0-cp310-cp310-macosx_11_0_arm64.whl.metadata (44 kB)
Requirement already satisfied: pytz in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from datetime) (2025.2)
Requirement already satisfied: setuptools in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from zope.interface->datetime) (80.9.0)
Downloading DateTime-5.5-py3-none-any.whl (52 kB)
Downloading zope_interface-8.0-cp310-cp310-macosx_11_0_arm64.whl (207 kB)
Installing collected packages: zope.interface, datetime
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2/2 [datetime]
Successfully installed datetime-5.5 zope.interface-8.0
Requirement already satisfied: seaborn in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (0.13.2)
Requirement already satisfied: numpy!=1.24.0,>=1.20 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from seaborn) (2.2.6)
Requirement already satisfied: pandas>=1.2 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from seaborn) (2.3.2)
Requirement already satisfied: matplotlib!=3.6.1,>=3.4 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from seaborn) (3.10.5)
Requirement already satisfied: contourpy>=1.0.1 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (1.3.2)
Requirement already satisfied: cycler>=0.10 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (4.59.2)
Requirement already satisfied: kiwisolver>=1.3.1 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (1.4.9)
Requirement already satisfied: packaging>=20.0 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (25.0)
Requirement already satisfied: pillow>=8 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (11.3.0)
Requirement already satisfied: pyparsing>=2.3.1 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (3.2.3)
Requirement already satisfied: python-dateutil>=2.7 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from pandas>=1.2->seaborn) (2025.2)
Requirement already satisfied: tzdata>=2022.7 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from pandas>=1.2->seaborn) (2025.2)
Requirement already satisfied: six>=1.5 in /opt/anaconda3/envs/DemARK/lib/python3.10/site-packages (from python-dateutil>=2.7->matplotlib!=3.6.1,>=3.4->seaborn) (1.17.0)
# Import Quarterly data from Fred using Data Reader
start = datetime.datetime(1947, 1, 1) #beginning of series
start1 = datetime.datetime(1956, 10, 1) #beginning of series
end = datetime.datetime(2018, 4, 1) #end of series
PCDG = web.DataReader('PCDG', 'fred', start, end) #loads your durable goods quarterly series data
PCND= web.DataReader('PCND', 'fred', start, end) #Loads your non durable goods quarterly series data
PCDG1 = web.DataReader('PCDG', 'fred', start1, end) #loads your durable goods quarterly series data, helps in having time series of identical length
PCND1= web.DataReader('PCND', 'fred', start1, end) #Loads your non durable goods quarterly series data, , helps in having time series of identical length# Constructing PCDG and PCND growth series ()
z1=PCDG.pct_change(periods=40)# 10*4
z2=PCND.pct_change(periods=40)#10*4
z3=PCDG1.pct_change(periods=1)#
z4=PCND1.pct_change(periods=1)#
s1=z1*100 #(In percentage terms)
s2=z2*100 #(In percentage terms)
s3=z3*100 #(In percentage terms)
s4=z4*100 #(In percentage terms)# Plotting the growth rates
plt.figure(figsize=((14,8))) # set the plot size
plt.title('Durables vs Non Durables Growth 10 year vs Quarterly')
plt.xlabel('Year')
plt.ylabel(' Growth (Percentage Terms)')
plt.plot(s1,label="PCDG 10 year growth")
plt.plot(s2,label="PCND 10 year growth")
plt.plot(s3,label="PCDG quarterly growth")
plt.plot(s4,label="PCND quarterly growth")
plt.legend()
plt.show()
# Drops the missing NAN observations
a1=s1.dropna()#Drops the missing values from s1 series
a2=s2.dropna()#Drops the missing values from s2 series
a3=s3.dropna()#Drops the missing values from s3 series
a4=s4.dropna()#Drops the missing values from s4 series# concatate (merge) the two series
c1=pd.concat([a1, a2], axis=1)
c2=pd.concat([a3, a4], axis=1)#Pairwise Plotting for the 10 year growth series
sns.pairplot(c1)
plt.suptitle('10 Year Growth Rates')
plt.show()
#Pairwise Plotting for the quarterly growth series
sns.pairplot(c2)
plt.suptitle('1 Quarter Growth Rates')
plt.show()
For each frequency [quarterly|10-year] each moment of time would correspond to a single point (x=nondurables growth, y=durables growth). Such a plot shows that at the 10 year frequency, there is a very strong relationship between the two growth rates, and at the 1 quarter frequency, much much less.