NameError: name 'correlation' is not defined
时间: 2024-11-20 09:40:15 浏览: 5
`NameError: name 'correlation' is not defined` 这个错误通常发生在尝试访问未定义的变量 `correlation` 时。在之前的示例中,如果你忘记在计算相关性之前定义它,就会遇到这个问题。
确保你在计算完相关系数之后才引用它。这里是完整且修正过的代码片段:
```python
import pandas as pd
import numpy as np
from scipy.stats import pearsonr
import matplotlib.pyplot as plt
# 读取 Excel 文件
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 筛选数据
df_filtered = df[df['KC1'] == '高等数学']
# 确保有数据才能继续
if not df_filtered.empty:
# 提取需要的列数据
cj1_data = df_filtered['CJ1'].values
ywk2_data = df_filtered['YWK2'].values
# 计算皮尔逊相关系数
correlation, _ = pearsonr(cj1_data, ywk2_data)
print(f"CJ1和YWK2列的相关性为:{correlation}")
# 可视化相关性
if not correlation is None:
plt.scatter(cj1_data, ywk2_data)
plt.xlabel('CJ1')
plt.ylabel('YWK2')
plt.title(f"CJ1与YWK2的相关性:{correlation:.2f}")
plt.show()
else:
print("筛选后的数据为空,无法计算相关性")
```
在这个修正版中,我们在计算相关性之后才赋值给 `correlation` 变量,避免了 NameError 的发生。
阅读全文