数据挖掘中常用统计函数

整理一下平时生产中数据探索(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-profilingProfileReport(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

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐