数据挖掘中常用统计函数

整理一下平时生产中数据探索(EDA)阶段常用的一些函数及其用法,以便自己和大家学习。


创作码字不易 ,希望你在文章中可以解决你的疑惑,不错的话就点个赞吧!


数据挖掘中数据探索(EDA)常用函数整理

工具组合建议

import pandas as pd
import seaborn as sns  # 可视化辅助

数据探索(EDA)工具链详解

EDA核心流程
数据质量检查
单变量分析
多变量分析
自动化报告
缺失值检测
异常值检测
数值型分布
类别型统计
相关性分析
交互可视化

1. 基础信息查看

函数 场景 示例
df.head(n) 查看前n行数据 df.head(5)
df.tail(n) 查看后n行数据 df.tail(3)
df.shape 获取数据维度(行,列) print(df.shape)
df.columns 查看所有列名 df.columns.tolist()
df.dtypes 查看每列数据类型 df.dtypes
df.info() 综合信息(类型/非空值) df.info()

2. 统计描述函数

函数 场景 示例 注意事项
df.describe() 数值列统计摘要(均值/分位数等) df.describe()
df.describe(include='all') 包含非数值列的统计 df.describe(include='object') 忽略非数值列,需单独处理类别型
df.mean() / df.median() 计算均值/中位数 df['收入'].mean()
df.mode() 计算众数(最频繁值) df['性别'].mode()
df.std() / df.var() 计算标准差/方差 df['年龄'].std()
df.skew() / df.kurt() 计算偏度/峰度 df['收入'].skew()
df.quantile(q) 计算分位数(q=0.25,0.5,0.75) df['收入'].quantile(0.9) 箱线图法则检测异常值(右偏数据建议用对数变换后再检测)
df.duplicated() 检测重复行 需指定subset关键字段
df.isnull().sum() 统计每列缺失值数量 注意NaN的多种表现形式(如"NA"、-1等)

3. 数据分布与频次分析

函数 场景 示例
df.value_counts() 统计分类变量频次 df['性别'].value_counts()
df.value_counts(normalize=True) 统计占比(归一化) df['学历'].value_counts(normalize=True)
df.unique() 查看唯一值列表 df['城市'].unique()
df.nunique() 统计唯一值数量 df['产品ID'].nunique()
pd.crosstab() 交叉频数统计 pd.crosstab(df['性别'], df['是否购买'])

4. 缺失值与异常检测

函数 场景 示例
df.isnull().sum() 统计每列缺失值数量 df.isnull().sum()
df.dropna() 删除缺失值 df.dropna(subset=['收入'])
df.fillna(value) 填充缺失值 df['年龄'].fillna(df['年龄'].median())
df.duplicated() 检测重复行 df[df.duplicated()]
df.drop_duplicates() 删除重复行 df.drop_duplicates()

5. 数据关系分析

函数 场景 示例
df.corr() 计算数值列相关系数(Pearson) df.corr()
df.corr(method='spearman') 计算Spearman相关系数 df.corr(method='spearman')
df.groupby() 分组聚合分析 df.groupby('性别')['收入'].mean()
pd.pivot_table() 透视表分析 pd.pivot_table(df, values='收入', index='性别', columns='学历')

6. 数据抽样与筛选

函数 场景 示例
df.sample(n) 随机抽样n行 df.sample(100)
df.sample(frac=0.1) 按比例抽样 df.sample(frac=0.1)
df.query() 条件筛选 df.query("收入 > 50000 and 年龄 < 30")
df.nlargest(n, columns) 取某列最大的n行 df.nlargest(5, '收入')
df.nsmallest(n, columns) 取某列最小的n行 df.nsmallest(5, '年龄')

7. 数据类型转换

函数 场景 示例
df.astype() 强制类型转换 df['年龄'].astype(float)
pd.to_datetime() 转换为日期格式 df['日期'] = pd.to_datetime(df['日期'])
pd.cut() 数值分箱(离散化) pd.cut(df['年龄'], bins=[0,18,35,60,100])
pd.get_dummies() 独热编码(One-Hot) pd.get_dummies(df['性别'])

8. 自动化工具

工具 最佳实践 局限 适用场景
pandas-profiling ProfileReport(df, minimal=True) 大数据集内存消耗高 快速生成初步报告
ydata-profiling 支持时序数据自动分析 自定义规则能力弱 交互式探索
Great Expectations 定义数据质量校验规则 学习曲线陡峭 生产环境监控
Sweetviz 对比两个数据集差异 可视化定制性差 A/B测试数据对比

9. 多变量分析

函数/工具 典型用法 注意事项 可视化配套
df.corr() 计算相关系数矩阵 默认Pearson系数,非线性用method='spearman' sns.heatmap(corr, annot=True)
pd.crosstab() 生成交叉频次表 normalize='index'计算比例 sns.heatmap(crosstab)
sns.pairplot() 散点图矩阵 大数据集需抽样或调小plot_kws={'s':1} sns.pairplot(diag_kind='kde')
df.groupby().agg() 分组聚合分析 避免多级索引导致可读性下降 sns.lineplot(x,y,hue)

总结:在实际生产过程中,需要按步骤和按场景选择函数

  1. 快速了解数据head(), info(), describe()
  2. 统计分布value_counts(), mean(), skew()
  3. 缺失值处理isnull(), fillna(), dropna()
  4. 关系分析corr(), groupby(), pivot_table()
  5. 数据清洗drop_duplicates(), astype(), query()

以上就是目前我在实际生产时自己常用的一些函数仅供大家参考,若有纰漏麻烦海涵

若本文章对你有所帮助 麻烦点个赞 点个关注
收到你的赞和收藏关注我会更加有动力!

以下是一些在自己写的数据挖掘系列的文章 希望对你有所帮助
随机森林算法分块实现讲解和注意事项(Jupyter Notebook可直接使用)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐