人工智能之数据分析 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》

相关推荐
丝斯201111 分钟前
AI学习笔记整理(63)——大模型对齐与强化学习
人工智能·笔记·学习
延凡科技4 小时前
无人机低空智能巡飞巡检平台:全域感知与智能决策的低空作业中枢
大数据·人工智能·科技·安全·无人机·能源
2501_941329724 小时前
YOLOv8-SEAMHead改进实战:书籍检测与识别系统优化方案
人工智能·yolo·目标跟踪
晓翔仔5 小时前
【深度实战】Agentic AI 安全攻防指南:基于 CSA 红队测试手册的 12 类风险完整解析
人工智能·安全·ai·ai安全
百家方案5 小时前
2026年数据治理整体解决方案 - 全1066页下载
大数据·人工智能·数据治理
北京耐用通信6 小时前
工业自动化中耐达讯自动化Profibus光纤链路模块连接RFID读写器的应用
人工智能·科技·物联网·自动化·信息与通信
小韩博7 小时前
一篇文章讲清AI核心概念之(LLM、Agent、MCP、Skills) -- 从解决问题的角度来说明
人工智能
沃达德软件8 小时前
人工智能治安管控系统
图像处理·人工智能·深度学习·目标检测·计算机视觉·目标跟踪·视觉检测
奥特曼_ it8 小时前
【数据分析+机器学习】基于机器学习的招聘数据分析可视化预测推荐系统(完整系统源码+数据库+开发笔记+详细部署教程)✅
笔记·数据挖掘·数据分析
高工智能汽车8 小时前
爱芯元智通过港交所聆讯,智能汽车芯片市场格局加速重构
人工智能·重构·汽车