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

相关推荐
皮皮学姐分享-ppx3 小时前
政府绿色采购数据库(2015-2024.3)
大数据·网络·数据库·人工智能·制造
GIS数据转换器3 小时前
基于3D GIS的监控视频精准标定平台
人工智能·物联网·3d·音视频·无人机·知识图谱
专注VB编程开发20年4 小时前
AI 生成C# WinForm 窗体 = 目前就是垃圾
开发语言·人工智能·c#
深小乐4 小时前
Claude Fable5 尝鲜,效果挺不错
人工智能
Nayxxu4 小时前
Gemini + RAG 企业知识库教程:从文档切片到答案生成
运维·人工智能
冬奇Lab4 小时前
真正的 AI-Native Workflow 是什么?——四个判断测试
人工智能·agent
冬奇Lab4 小时前
每日一个开源项目(第128篇):Agent Skills - 给 AI 编程 Agent 装上工程纪律
人工智能·开源·资讯
Deepoch5 小时前
Deepoc VLA开发板:采摘机器人的环境鲁棒作业与不确定性应对
人工智能·机器人·采摘机器人·deepoc
云栖梦泽在5 小时前
AI安全专项:AI人脸识别的安全风险与防护
人工智能·安全