python从100个城市中找出两个指标相关性系数最大且显著的城市并画图
时间: 2024-03-23 18:39:46 浏览: 58
可以按照以下步骤使用Python找出两个指标相关性系数最大且显著的城市,并画出它们的散点图:
1. 导入所需的库:
```python
import pandas as pd
from scipy.stats import pearsonr
import matplotlib.pyplot as plt
```
2. 读取数据并计算相关系数:
```python
data = pd.read_csv('data.csv') # 读取数据
# 假设数据中第一列为城市名称,第二列为指标1,第三列为指标2
cities = data.iloc[:, 0] # 获取城市名称
x = data.iloc[:, 1] # 获取指标1的数据
y = data.iloc[:, 2] # 获取指标2的数据
r, p = pearsonr(x, y) # 计算整个数据集的相关系数及其显著性水平
print('整个数据集的相关系数 r = {:.2f}'.format(r))
print('整个数据集的显著性水平 p = {:.2f}'.format(p))
```
其中,r表示整个数据集的相关系数,p表示整个数据集的显著性水平。
3. 遍历所有城市,计算相关系数并找出最大值:
```python
max_r = 0 # 最大相关系数
max_p = 0 # 最大相关系数对应的显著性水平
max_city1 = '' # 相关系数最大的城市1
max_city2 = '' # 相关系数最大的城市2
for i in range(len(cities)):
for j in range(i+1, len(cities)):
x1 = x[i]
x2 = x[j]
y1 = y[i]
y2 = y[j]
r, p = pearsonr([x1, x2], [y1, y2])
if p < 0.05 and abs(r) > abs(max_r):
max_r = r
max_p = p
max_city1 = cities[i]
max_city2 = cities[j]
print('相关系数最大的城市对为 {}、{},相关系数为 {:.2f},显著性水平为 {:.2f}'.format(max_city1, max_city2, max_r, max_p))
```
4. 画出相关性最大的两个城市的散点图:
```python
x1 = x[cities == max_city1]
x2 = x[cities == max_city2]
y1 = y[cities == max_city1]
y2 = y[cities == max_city2]
plt.scatter(x1, y1, label=max_city1)
plt.scatter(x2, y2, label=max_city2)
plt.xlabel('指标1')
plt.ylabel('指标2')
plt.legend()
plt.show()
```
其中,我们根据相关系数最大的两个城市的名称,从原始数据中提取它们对应的指标1和指标2的数据,然后使用matplotlib库画出它们的散点图。
希望以上内容能够帮助到你!
阅读全文