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

相关推荐
那个村的李富贵12 小时前
光影魔术师:CANN加速实时图像风格迁移,让每张照片秒变大师画作
人工智能·aigc·cann
腾讯云开发者13 小时前
“痛点”到“通点”!一份让 AI 真正落地产生真金白银的实战指南
人工智能
CareyWYR13 小时前
每周AI论文速递(260202-260206)
人工智能
hopsky14 小时前
大模型生成PPT的技术原理
人工智能
禁默15 小时前
打通 AI 与信号处理的“任督二脉”:Ascend SIP Boost 加速库深度实战
人工智能·信号处理·cann
心疼你的一切15 小时前
昇腾CANN实战落地:从智慧城市到AIGC,解锁五大行业AI应用的算力密码
数据仓库·人工智能·深度学习·aigc·智慧城市·cann
AI绘画哇哒哒15 小时前
【干货收藏】深度解析AI Agent框架:设计原理+主流选型+项目实操,一站式学习指南
人工智能·学习·ai·程序员·大模型·产品经理·转行
数据分析能量站15 小时前
Clawdbot(现名Moltbot)-现状分析
人工智能
那个村的李富贵15 小时前
CANN加速下的AIGC“即时翻译”:AI语音克隆与实时变声实战
人工智能·算法·aigc·cann
二十雨辰15 小时前
[python]-AI大模型
开发语言·人工智能·python