Python keyerror: 0

Viewed 1652

I want to create a correlation matrix from scratch. My code below gives a keyerror when I try to append the covariance to the cov dictionary using cov[k].append(covariance). How should I address the error?

import pandas as pd

df = pd.read_csv('C:/Users/User/Downloads/Admission_Predict.csv')

df = df.sample(frac=1)
mean = df.mean()
cov = {}

for j in range(len(mean)):
    total = 0
    for k in range(len(mean)):
        terms = ((df.iloc[i, j] - mean.iloc[j]) * (df.iloc[i, k] - mean.iloc[k]) for i in range(len(mean)))
        covariance = sum(terms) / len(mean)
        cov[k].append(covariance)

# Coerce the cov list into a dataframe
cov = pd.DataFrame(cov)
print(cov)

> Traceback (most recent call last):   File
> "C:\Users\User\PycharmProjects\algorithms\mod2.py", line 14, in
> <module>
>     cov[k].append(covariance) KeyError: 0
1 Answers

Try changing:

        cov[k].append(covariance)

To:

        cov.setdefault(k, []).append(covariance)

Using setdefault.

Or use this:

    for k in range(len(mean)):
        terms = ((df.iloc[i, j] - mean.iloc[j]) * (df.iloc[i, k] - mean.iloc[k]) for i in range(len(mean)))
        covariance = sum(terms) / len(mean)
        if k in cov:
            cov[k].append(covariance)
        else:
            cov[k] = [covariance]
Related