这里有一个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……