我想从头开始计算协方差。协方差升高
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 error.
我应该改变什么才能使代码正常工作
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
似乎{}(类似于[k,i])是问题所在。有关选项,请参见iloc reference
根据你的
DataFrame
我想你想要访问位置[I,j]和[I,k]的值,对吗? 因此,您可以使用.iloc[i]
获取行i
,然后访问所需的列。下面是一个简单的示例,用于检索用于执行计算的一个值相关问题 更多 >
编程相关推荐