【发布时间】:2021-09-11 17:44:07
【问题描述】:
我想从头开始计算协方差。 协方差升高
ValueError(ValueError: 基于位置的索引只能有 [integer, 整数切片(起始点为 INCLUDED,END 点为 EXCLUDED), listlike of integers, boolean array] 类型错误。
我应该改变什么才能使代码正常工作?
import pandas as pd
import math
df = pd.read_csv('C:/Users/User/Downloads/Admission_Predict.csv')
df = df.sample(frac=1)
# Create a list for each column of the dataframe
for col in df:
col_list = df[col].tolist()
# Mean
sums = 0
for a in range(len(col_list)):
sums += df.iloc[a]
mean = sums / len(col_list)
mean = [m for m in pd.to_numeric(mean, errors='coerce')]
# Standard deviation
for mean in range(len(col_list)):
sd = math.sqrt(mean)
# Correlation matrix
cov = []
for j in range(mean):
for k in range(mean):
# Random variables
var = ((df.iloc[i, j] - str(range(mean))) * (df.iloc[i, k] - str(range(mean))) for i in str(range(mean)))
# Covariance
covariance = sum(var) / (mean - 1)
print(covariance)
追溯
> Traceback (most recent call last): File
> "C:\Users\User\PycharmProjects\algorithms\Fibonacci recursive.py",
> line 31, in <module>
> covariance = sum(var) / (mean - 1) File "C:\Users\User\PycharmProjects\algorithms\Fibonacci recursive.py",
> line 28, in <genexpr>
> var = ((df.iloc[i, j] - str(range(mean))) * (df.iloc[i, k] - str(range(mean))) for i in str(range(mean))) File
> "C:\Users\User\PycharmProjects\algorithms\venv\lib\site-packages\pandas\core\indexing.py",
> line 889, in __getitem__
> return self._getitem_tuple(key) File "C:\Users\User\PycharmProjects\algorithms\venv\lib\site-packages\pandas\core\indexing.py",
> line 1450, in _getitem_tuple
> self._has_valid_tuple(tup) File "C:\Users\User\PycharmProjects\algorithms\venv\lib\site-packages\pandas\core\indexing.py",
> line 725, in _has_valid_tuple
> raise ValueError( ValueError: Location based indexing can only have [integer, integer slice (START point is INCLUDED, END point is
> EXCLUDED), listlike of integers, boolean array] types
>
> Process finished with exit code 1
【问题讨论】:
标签: python pandas types statistics covariance