人工智能之数据分析 Pandas:第四章 常用函数

人工智能之数据分析 Pandas

第四章 常用函数


文章目录


前言

本文将Pandas 中最常用、最核心的函数与操作 进行系统性整合与分类整理 ,涵盖 数据创建、查看、筛选、排序、聚合、变换、合并、缺失值处理、字符串/时间操作 等全链路分析场景。内容结构清晰、示例简洁,便于学习与速查。


一、数据创建与读取

功能 函数/方法 示例
创建 DataFrame pd.DataFrame() pd.DataFrame({'A': [1,2], 'B': ['x','y']})
从字典创建 同上 pd.DataFrame(dict)
从 CSV 读取 pd.read_csv() pd.read_csv('data.csv', encoding='utf-8')
写入 CSV df.to_csv() df.to_csv('out.csv', index=False)
从 Excel 读取 pd.read_excel() pd.read_excel('file.xlsx', sheet_name='Sheet1')
写入 Excel df.to_excel() df.to_excel('out.xlsx', index=False)
从 JSON 读取 pd.read_json() pd.read_json('data.json')

二、数据基本信息查看

功能 函数/属性 说明
前几行 df.head(n=5) 快速预览
后几行 df.tail(n=5) 查看末尾
形状 df.shape (行数, 列数)
列名 df.columns 返回 Index 对象
行索引 df.index 默认 RangeIndex
数据类型 df.dtypes 每列 dtype
内存与非空统计 df.info() 包含缺失值、内存占用
描述性统计 df.describe() 数值列的均值、std、分位数等
唯一值数量 df.nunique() 每列去重计数
全表转置 df.T 行列互换

三、数据选择与筛选

功能 方法 示例
选列(Series) df['col'] df['姓名']
选多列(DataFrame) df[['col1', 'col2']] 注意双括号
按标签选行/列 .loc[row, col] df.loc[0, '姓名'], df.loc[df['年龄']>30, ['姓名','工资']]
按位置选行/列 .iloc[row, col] df.iloc[0:2, 0:2]
布尔索引 df[condition] df[df['工资'] > 10000]
条件查询(推荐) df.query() df.query('工资 > 10000 and 部门 == "技术"')
是否包含 df.isin() df[df['部门'].isin(['技术','产品'])]

⚠️ 避坑 :避免链式赋值(如 df[cond]['col'] = x),应使用 .loc[cond, 'col'] = x


四、排序(Sorting)

功能 函数 示例
按值排序 df.sort_values() df.sort_values('工资', ascending=False)
多列排序 同上 df.sort_values(['部门', '工资'], ascending=[True, False])
按索引排序 df.sort_index() df.sort_index(), df.sort_index(axis=1)
自定义顺序 pd.Categorical 见下文
自定义排序示例:
python 复制代码
df['部门'] = pd.Categorical(df['部门'], categories=['技术', '产品', '销售'], ordered=True)
df.sort_values('部门')

五、缺失值处理

功能 函数 说明
判断缺失 df.isnull() / pd.isna() 返回布尔 DataFrame
非缺失判断 df.notnull() 取反
删除缺失行 df.dropna() axis=0(默认)
删除缺失列 df.dropna(axis=1)
填充缺失值 df.fillna(value) value 可为标量、字典、method
向前/后填充 df.fillna(method='ffill') 时间序列常用
替换特定值为 NaN df.replace(to_replace, np.nan)

六、去重与唯一值

功能 函数 示例
删除重复行 df.drop_duplicates() 全行比较
按列去重 df.drop_duplicates(subset=['姓名'])
值频次统计 s.value_counts() Series 方法
百分比频次 s.value_counts(normalize=True)

七、分组与聚合(GroupBy + Agg)

1. 基础聚合

python 复制代码
df.groupby('部门')['工资'].mean()
df.groupby('部门').agg({'工资': 'mean', '姓名': 'count'})

2. 命名聚合(推荐)

python 复制代码
df.groupby('部门', as_index=False).agg(
    平均工资=('工资', 'mean'),
    人数=('姓名', 'count'),
    最高薪=('工资', 'max')
)

3. 常用聚合函数

函数 说明
'sum', 'mean', 'median' 求和、均值、中位数
'min', 'max' 极值
'std', 'var' 标准差、方差
'count' 非空计数
'nunique' 唯一值数量
'first', 'last' 首/末值

4. 高级方法

方法 用途
.transform() 返回与原表同 shape,用于组内标准化
.apply() 自定义复杂逻辑(性能较低)
.filter() 过滤满足条件的组(如 lambda g: len(g) > 5

八、数据变换与应用

功能 方法 示例
列向量化运算 直接操作 df['新工资'] = df['工资'] * 1.1
应用函数(列/行) df.apply(func, axis=0/1) df.apply(np.sum, axis=0)
Series 映射 s.map(dict_or_func) s.map({'A':1, 'B':2})
条件赋值 np.where() np.where(df['工资']>10000, '高', '低')
分箱离散化 pd.cut() / pd.qcut() pd.cut(s, bins=3)
特征工程 assign()(链式) df.assign(年薪=df['工资']*12)

九、字符串与时间操作

字符串(.str 访问器)

python 复制代码
df['姓名'].str.lower()          # 转小写
df['邮箱'] = df['姓名'].str + '@company.com'
df[df['城市'].str.contains('京')]  # 正则匹配
df['首字'] = df['姓名'].str[0]

时间序列(.dt 访问器)

python 复制代码
df['日期'] = pd.to_datetime(df['日期'])
df['年'] = df['日期'].dt.year
df['月份'] = df['日期'].dt.month
df['工作日'] = df['日期'].dt.dayofweek < 5

十、数据合并与重塑

功能 函数 说明
上下拼接 pd.concat([df1, df2]) axis=0(默认)
左右拼接 pd.concat([df1, df2], axis=1)
类 SQL JOIN pd.merge(df1, df2, on='key', how='left') 支持 inner/left/right/outer
透视表 pd.pivot_table() 多维汇总
宽变长 df.melt() 逆透视
长变宽 df.pivot()

透视表示例:

python 复制代码
pd.pivot_table(df, values='工资', index='部门', columns='性别', aggfunc='mean', fill_value=0)

十一、性能与工程建议

场景 推荐做法
避免循环 用向量化操作替代 iterrows()
内存优化 astype('category')int32 替代 int64
大文件处理 pd.read_csv(..., chunksize=10000)
链式编程 使用 assign()pipe() 提高可读性
安全赋值 始终用 .loc 赋值,避免 SettingWithCopyWarning
类型安全 整数列含缺失 → 用 'Int64'(注意大写 I)

十二、高频函数速查表(一张图掌握)

类别 核心函数
创建/读取 DataFrame(), read_csv(), to_excel()
查看 head(), info(), describe(), shape
筛选 .loc, .iloc, query(), isin()
排序 sort_values(), sort_index()
缺失值 isnull(), dropna(), fillna()
去重 drop_duplicates(), value_counts()
聚合 groupby().agg(), transform(), pivot_table()
变换 apply(), map(), assign(), np.where()
字符串 .str.lower(), .str.contains()
时间 pd.to_datetime(), .dt.year
合并 concat(), merge()

✅ 总结

Pandas 的强大在于其一致性设计丰富生态

  • Series 和 DataFrame 是基石
  • 向量化操作是性能关键
  • groupby + agg 是分析核心
  • .loc / .str / .dt 是安全高效访问的保障

后续

python过渡项目部分代码已经上传至gitee,后续会逐步更新。

资料关注

公众号:咚咚王

gitee:https://gitee.com/wy18585051844/ai_learning

《Python编程:从入门到实践》

《利用Python进行数据分析》

《算法导论中文第三版》

《概率论与数理统计(第四版) (盛骤) 》

《程序员的数学》

《线性代数应该这样学第3版》

《微积分和数学分析引论》

《(西瓜书)周志华-机器学习》

《TensorFlow机器学习实战指南》

《Sklearn与TensorFlow机器学习实用指南》

《模式识别(第四版)》

《深度学习 deep learning》伊恩·古德费洛著 花书

《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》

《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》

《自然语言处理综论 第2版》

《Natural-Language-Processing-with-PyTorch》

《计算机视觉-算法与应用(中文版)》

《Learning OpenCV 4》

《AIGC:智能创作时代》杜雨+&+张孜铭

《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》

《从零构建大语言模型(中文版)》

《实战AI大模型》

《AI 3.0》

相关推荐
xinlianyq16 分钟前
2026企业流量破局:四大主流短视频矩阵获客系统深度解析与选型指南
人工智能·矩阵
workflower1 小时前
用硬件换时间”与“用算法降成本”之间的博弈
人工智能·算法·安全·集成测试·无人机·ai编程
Cx330❀2 小时前
一文吃透Linux System V共享内存:原理+实操+避坑指南
大数据·linux·运维·服务器·人工智能
OPHKVPS2 小时前
Anthropic 为 Claude Code 推出“自动模式”:AI 编码工具迈向更高自主性
网络·人工智能·安全·ai
Allen_LVyingbo2 小时前
斯坦福HAI官网完整版《2025 AI Index Report》全面解读
人工智能·数学建模·开源·云计算·知识图谱
金融小师妹2 小时前
基于AI通胀预期建模与能源冲击传导机制的政策分析:高频信号下的风险再评估
人工智能·svn·能源
胡摩西2 小时前
当大模型遇上毫米级定位:机器人将拥有“空间思维”?
人工智能·机器人·slam·gps·室内定位·roomaps
志栋智能2 小时前
超自动化运维的终极目标:让系统自治运行
运维·网络·人工智能·安全·自动化
彬鸿科技3 小时前
bhSDR Studio/Matlab入门指南(九):FMCW雷达测距实验界面全解析
人工智能·matlab·软件定义无线电
补三补四3 小时前
Prompt工程实践指南:从基础概念到高级应用
人工智能·chatgpt·prompt