1. 项目概述与选题背景
做数据分析的同学应该都有体会,拿到一份数据之后,最想做的第一件事往往不是建模,而是先看看变量之间到底有没有关系。这个“看关系”的动作,在Pandas里就是相关性分析。
我这次在HoRain云服务器上完整跑了一遍Pandas相关性分析的流程,从数据读取、清洗、计算相关系数到可视化输出,整个过程踩了不少坑,也沉淀下来一套可以复用的操作路径。这篇文章就围绕这条路径展开,把每一步的原理、代码和易错点都讲清楚。
先说结论:Pandas做相关性分析,核心就三个函数——corr()、cov()和crosstab(),但真正让分析结果可用的,是前面的数据准备和后面的结果解读。很多教程只教你怎么调corr(),不教你怎么处理数据里的脏值、类型错乱和重复记录,结果你照着跑一遍,出来的相关系数矩阵根本没法看。
这篇文章适合谁看?刚接触Pandas的初学者,想系统梳理相关性分析方法的进阶者,以及需要在服务器环境里跑数据分析任务的从业者。我会从环境搭建讲起,一路讲到热力图可视化,尽量让每个环节都能直接抄作业。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与基础认知
2.1 服务器环境下的Pandas安装策略
这次分析我是在HoRain云的Linux服务器上操作的,系统是Ubuntu 22.04,Python版本3.10。为什么强调Python版本?因为Pandas对Python版本有明确的适配要求,装错了轻则警告,重则直接ImportError。
Python 3.10建议安装Pandas 2.x系列,比如2.0.3或2.1.4,这两个版本在3.10下运行非常稳定。如果你用的是Python 3.8或3.9,那Pandas 1.5.x是更稳妥的选择。不建议用pip直接装最新版,因为最新版Pandas可能已经放弃对旧版Python的支持。
安装命令很直接,但有几个细节值得注意。如果只需要Pandas本身,pip install pandas就够了。但做相关性分析后多半要画图,所以建议把绘图库一起装上:
bash复制pip install pandas openpyxl matplotlib seaborn
这里openpyxl是必须要装的,否则pd.read_excel()读取.xlsx文件时会报Missing optional dependency 'openpyxl'。这个报错很经典,我见过太多人卡在这一步。
如果用国内镜像源加速,可以这样:
bash复制pip install pandas openpyxl matplotlib seaborn -i https://pypi.tuna.tsinghua.edu.cn/simple
装完之后验证一下版本:
python复制import pandas as pd
print(pd.__version__)
2.2 Pandas与NumPy的协作关系
做相关性分析,Pandas和NumPy是离不开的一对。Pandas的corr()方法底层调用的就是NumPy的相关系数计算逻辑,而且Pandas的DataFrame本身就是基于NumPy数组构建的。
举个实际例子,df.corr()算出来的相关系数矩阵,本质上是一个NumPy二维数组外面套了Pandas的索引和列名。所以你在跑相关性分析之前,最好先确认数据里的列都是数值类型,因为NumPy的数组只能存同一种数据类型,如果某列是字符串,计算时要么报错,要么被强制转换导致结果失真。
我常用的检查方式是:
python复制import numpy as np
print(df.dtypes)
print(df.select_dtypes(include=[np.number]).columns.tolist())
先用dtypes看一眼每列的类型,再用select_dtypes筛出数值类型的列,这样后续做相关性计算时,就知道哪些列可以参与、哪些列需要先做类型转换。
2.3 PyCharm与命令行两种操作场景
本地开发我习惯用PyCharm,但在服务器上跑分析任务,基本上就是命令行加Jupyter Notebook的组合。有人问PyCharm里怎么安装pandas包,其实本质和命令行一样,只是入口不同。
在PyCharm里,打开File -> Settings -> Project -> Python Interpreter,点右上角的加号,搜索pandas,选中后点Install Package就行。需要注意的是,PyCharm会根据你当前选择的解释器版本自动匹配合适的Pandas版本,但如果你用的是虚拟环境,要确保包安装到了正确的环境里,否则代码运行时提示ModuleNotFoundError,往往就是装错环境了。
在服务器上我自己的习惯是建一个单独的虚拟环境,避免污染系统Python:
bash复制python3 -m venv pandas_env
source pandas_env/bin/activate
pip install pandas openpyxl matplotlib seaborn
这样即使后面装其他包搞坏了依赖,也不会影响服务器上其他项目。
3. 数据加载与预处理要点
3.1 从Excel和CSV读取数据的正确姿势
相关性分析的第一步是读数据。我这次用的是Excel文件,因为业务方给的原始数据就是.xlsx格式。pd.read_excel()是最常用的读取函数,但有几个参数很值得研究。
python复制import pandas as pd
df = pd.read_excel('sales_data.xlsx', sheet_name='Sheet1', header=0)
sheet_name用来指定工作表,可以传工作表名称也可以传索引,比如sheet_name=0表示第一个工作表。header=0表示第一行作为列名,如果你的数据没有表头,就需要设置header=None,然后自己指定列名。
读取CSV文件时,编码问题是最容易踩的坑。中文数据经常是UTF-8编码,但有些老系统导出的
