用python计算csv文件中多列变量的皮尔逊Pearson相关指数并绘制热力图heatmap

这里有一个csv文件:

 

需求:

1. 计算各个变量间的Pearson相关性系数

2. 把Pearson相关性系数绘制成热力图heatmap

代码里的注释很多(都是给自己看的……怕自己再打开就都看不懂是什么东西了),所以就不再解释了(懒……)

完整的代码如下:

import pandas as pd
import seaborn as sns
import matplotlib
import matplotlib.pyplot as plt

# 输入路径可以更改,注意在运行程序的时候csv文件要关上,这里的csv文件是paikuco.csv
# 记得把表格文件看清楚是xls/csv/txt格式,如果怕出错就在Excel里面另存为csv文件
filename = "C:/Users/Windows10/Desktop/pearson/paikuco.csv"
df = pd.read_csv(filename)

# 计算Pearson相关系数
r = df.corr(method="pearson")
print(r)

# 输出路径可以更改,"output3"可以修改为自己想要的文件名
outputfile = "C:/Users/Windows10/Desktop/pearson/output3.csv"
r.to_csv(outputfile, index=False)

# 接下来是画热力图

# 读取刚刚保存的csv文件
dp = pd.read_csv(outputfile)
# 设置中文的字体,不设置的话如果标题是中文的话显示不出来(乱码)
matplotlib.rcParams['font.sans-serif'] = ['SimHei']   # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus'] = False     # 正常显示负号

'''
下面设置图片中的各种参数
df:要绘制的数据框。
cmap:颜色映射。这是一个字符串,表示要使用的颜色映射。你可以使用内置的颜色映射,也可以使用自定义的颜色映射。默认值为"viridis"。
annot:是否在热力图上显示数值。如果为True,则会在每个单元格中显示数值。默认值为False。
fmt:数值格式字符串。这是一个字符串,表示要在注释中使用的格式。默认值为".2g"。
linewidths:单元格之间的线宽度。默认值为0.5。
可以在seaborn文档中查看其他的参数,网址是:https://seaborn.pydata.org/generated/seaborn.heatmap.html
'''

# 调色板cmap颜色还可以更改为:Blues、Greens、Reds、Oranges、Purples、Greys
ax = sns.heatmap(dp, cmap="Purples", annot=True, fmt=".2f", linewidths=0.5)
# 设置标题title和横纵坐标的刻度xticklabels/yticklabels,这里横纵坐标都是用的csv文件的标题行(第一行)
ax.set_title("结冰日与7种气象要素相关性热力图", fontsize=14)   # 标题名称和字号大小
ax.set_xticklabels(dp.columns)
ax.set_yticklabels(dp.columns)


# save一定要放在show前面,不然保存的图片是空白的!!!
# 注意保存路径一定要是完整的,不能只写一个文件名
# 如果嫌麻烦的话,直接就show,然后在弹出的窗口左下角点保存,修改保存路径和文件名
plt.savefig("C:/Users/Windows10/Desktop/pearson/heatmap_Purples.png")
plt.show()

'''
上面的df/r/dp都是自定义的,可以换成自己方便记忆的名称
注意这几个名称不要重复,避免出错
'''

当然还可以更改很多不同的参数,但是我还没学……

最后输出的图片如下:

为什么有两个temp是因为一个是开尔文温度,一个是摄氏度 。

间歇性学代码进度2/1000000000000……

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值