跳到主要内容Pandas 入门:Python 数据分析实战基础 | 极客日志PythonAI算法
Pandas 入门:Python 数据分析实战基础
Pandas 是 Python 数据分析的核心库,基于 NumPy 提供高效的数据结构。本文涵盖 Pandas 基础操作,包括 DataFrame 与 Series 概念、文件读写、数据概览、列增删改查及数据类型处理。通过实例演示字符串清洗、数值计算和时间序列转换,帮助初学者建立列向思维,掌握数据预处理流程,为后续复杂分析打下基础。
前言
在数据分析领域,掌握 Python 是提升效率的关键。许多初学者能够迅速熟悉 Python 基础语法后,便直接投入《利用 Python 进行数据分析》等经典教材的学习中。然而,单纯阅读理论往往导致实际操作时思路不清、漏洞百出。
学习过程中常见的误区在于'理解不够'与'实践不足',以及容易陷入'举三反一'的困惑状态。例如,在学习 Pandas 时,面对多种构造方式、索引方法及类似效果的实现路径,初学者容易感到无所适从。本文旨在通过梳理和精简核心知识点,帮助读者避开常见坑点,建立清晰的列向思维,从而高效掌握 Pandas 基础。
1. Pandas 简介
Pandas 是基于 NumPy 构建的专业数据分析工具,能够灵活高效地处理各种数据集。它提供了两种核心数据结构:DataFrame 和 Series。
- DataFrame:可理解为 Excel 中的一张表,由行和列组成,适合存储结构化数据。
- Series:可理解为表中某一列的数据,是一维数组。
所有 Pandas 的操作均基于这两种结构展开。与 Excel 或 SQL 相比,Pandas 的核心逻辑一致,都是对源数据进行一系列处理。但在正式处理前,明确分析目标、理清分析思路至关重要,这能显著提升工作效率。
2. 创建、读取和存储
2.1 创建 DataFrame
在 Pandas 中,最常用的创建方式是使用字典配合列表。首先导入库:
data = {
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 28],
'城市': ['北京', '上海', '广州']
}
df = pd.DataFrame(data)
在此结构中,字典的键作为列名,值(列表)作为列数据。列的顺序不影响最终结果,系统会自动生成从 0 开始的默认索引。
2.2 读取数据
实际工作中,更多时候需要读取外部文件。Pandas 支持 CSV 和 Excel 格式。
read_csv('data.csv', encoding='utf-8')
header:指定哪一行作为列名,默认为 0。
sep:CSV 分隔符,默认为逗号。
names:自定义列名。
2.3 存储数据
df.to_csv('output.csv', index=False)
df.to_excel('output.xlsx', index=False)
注意 index=False 参数,通常不需要将行索引写入文件。
3. 快速认识数据
3.1 查看数据头部与尾部
使用 head() 和 tail() 函数查看数据的前后几行:
3.2 数据格式概览
输出包含行列数、内存占用、每列名称、非空值数量及数据类型。这有助于快速发现潜在问题,如类型错误或缺失值过多。
3.3 统计信息概览
针对数值型列,可使用 describe() 获取关键统计指标:
返回结果包括计数(count)、均值(mean)、标准差(std)、最小值(min)、四分位数(25%, 50%, 75%)和最大值(max)。注意,该操作仅针对数值型列,非数值列会被自动忽略。
4. 列的基本处理方式
借鉴 SQL 逻辑,我们将列操作归纳为增、删、选、改。
4.1 增
4.2 删
使用 drop() 删除列,需指定 axis=1 表示按列操作:
df.drop(columns=['列名'], axis=1, inplace=True)
4.3 选
选取单列返回 Series,多列返回 DataFrame:
col_data = df['列名']
multi_col = df[['列名 1', '列名 2']]
4.4 改
df['列名'] = 新值 或 df['列名'].apply(函数)
对于复杂条件筛选修改,建议结合布尔索引或 loc 属性。
5. 常用数据类型及操作
5.1 字符串处理
Pandas 字符串操作需在对象后加 .str 访问器:
df['列名'] = df['列名'].str.strip()
df['列名'] = df['列名'].str.replace('-', '')
注意:info() 中显示的 object 类型通常对应 Python 的 str 类型。
5.2 数值型计算
df['访客数'] += 10000
df['销售额'] = df['访客数'] * df['转化率'] * df['客单价']
常见问题:若出现报错,通常是因为参与运算的列包含非数值字符(如百分号)。需先清洗数据再转换类型:
df['转化率'] = df['转化率'].str.replace('%', '').astype(float) / 100
5.3 时间类型
时间序列处理是数据分析的重点。Pandas 提供 to_datetime() 进行转换:
df['日期'] = pd.to_datetime(df['日期'])
df['剩余天数'] = (pd.Timestamp('2019-12-31') - df['日期']).dt.days
转换为 datetime64 类型后,可直接进行加减运算或提取年月日等信息。
6. 缺失值处理
数据清洗中,缺失值是常见问题。Pandas 提供了完善的处理工具。
6.1 检测缺失值
df.isnull()
df.isnull().sum()
6.2 处理缺失值
df.fillna(0, inplace=True)
df['数值列'].fillna(df['数值列'].mean(), inplace=True)
7. 常见错误与注意事项
- 链式赋值警告:使用
df.loc[...] = ... 时避免复杂的链式赋值,建议使用中间变量或 inplace=True。
- 数据类型陷阱:参与数学运算前务必确认列为数值型,否则会导致错误或隐式转换。
- 索引对齐:在进行列运算时,Pandas 会尝试按索引对齐,若索引不一致可能导致结果错位。
- 性能优化:尽量避免在循环中逐行修改 DataFrame,应优先使用向量化操作。
8. 总结与进阶
本文介绍了 Pandas 的基础操作,涵盖数据结构、IO 读写、数据概览、列操作及类型处理。掌握这些内容是进行高级数据分析的前提。
- 分组聚合:
groupby 与 agg 函数。
- 透视表:
pivot_table 进行多维分析。
- 合并连接:
merge 与 concat 整合多表数据。
- 可视化:结合 Matplotlib 或 Seaborn 展示分析结果。
通过持续实践与案例积累,逐步构建完整的数据分析工作流。
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online