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

相关推荐
菩提树下的凡夫31 分钟前
Yolov11的空标注负样本技术在模型训练中的应用
人工智能·深度学习·yolo
夕小瑶33 分钟前
DeepSeek V3.2的隐藏更新,却意外暴露了MiniMax
人工智能
kebijuelun33 分钟前
Nemotron-Flash: Towards Latency-Optimal Hybrid Small Language Models
人工智能·语言模型·自然语言处理
三炭先生34 分钟前
计算机视觉算法--第一章:概述
人工智能·算法·计算机视觉
唯道行37 分钟前
计算机图形学·21 梁友栋-Barsky直线裁剪算法与三维直线裁剪
人工智能·算法·机器学习·计算机视觉·计算机图形学·opengl
阿杰学AI38 分钟前
AI核心知识32——大语言模型之多模态语音(简洁且通俗易懂版)
人工智能·ai·语言模型·自然语言处理·aigc·语音识别·多模态语音
九河云40 分钟前
智能家居生态数字化:设备联动场景化编程与用户习惯学习系统建设
人工智能·学习·智能家居
阿恩.77042 分钟前
国际会议:评职称、申博、考研的硬核加分项
人工智能·经验分享·笔记·计算机网络·能源
严文文-Chris43 分钟前
【机器学习三大范式对比总结】
人工智能·机器学习