pin_drop当前位置:知识文库 ❯ 图文
pandas库简介 - Python数据分析入门指南
一、pandas概述
pandas 是 Python 中最强大的数据分析和操作库,由 Wes McKinney 于 2008 年创建。它提供了高性能、易用的数据结构和数据分析工具,是数据科学、金融分析、机器学习等领域的核心工具。pandas 的名字来源于 "panel data"(面板数据),同时也暗示了 Python Data Analysis 的含义。
pandas 的两大核心数据结构是 Series(一维数据)和 DataFrame(二维数据),它们能够处理时间序列、表格数据、矩阵数据等多种数据形式。pandas 构建在 NumPy 之上,与 Matplotlib、Scikit-learn 等库无缝集成,形成了完整的数据科学生态。
二、安装与导入pandas
安装 pandas
在开始使用 pandas 之前,需要先安装它。推荐使用 pip 或 conda 进行安装:
代码示例
# 使用 pip 安装
pip install pandas
# 使用 conda 安装
conda install pandas
# 推荐同时安装 openpyxl 以支持 Excel 文件读写
pip install openpyxl导入 pandas
安装完成后,在代码中导入 pandas。社区约定俗成的做法是使用 pd 作为别名:
代码示例
import pandas as pd
import numpy as np
# 查看 pandas 版本
print(f"pandas 版本: {pd.__version__}")提示:建议使用
import pandas as pd的方式导入,这是 Python 数据科学社区的通用约定。
三、核心数据结构
Series - 一维数据结构
Series 是一个带标签的一维数组,可以存储任何数据类型(整数、浮点数、字符串、Python对象等)。它由两部分组成:数据值和索引标签。
代码示例
# 创建 Series
s = pd.Series(data, index=index)
# 示例
scores = pd.Series([85, 92, 78, 95, 88],
index=['语文', '数学', '英语', '物理', '化学'],
name='成绩')
print(scores)
# 语文 85
# 数学 92
# 英语 78
# 物理 95
# 化学 88
# Name: 成绩, dtype: int64DataFrame - 二维数据结构
DataFrame 是一个二维带标签的表格数据结构,类似于 Excel 表格或 SQL 表。它可以看作是由多个 Series 组成的字典,每个 Series 代表一列。
代码示例
# 创建 DataFrame
df = pd.DataFrame(data, index=index, columns=columns)
# 示例
data = {
'姓名': ['张三', '李四', '王五', '赵六'],
'年龄': [25, 30, 28, 35],
'城市': ['北京', '上海', '广州', '深圳'],
'薪资': [15000, 20000, 18000, 25000]
}
df = pd.DataFrame(data)
print(df)
# 姓名 年龄 城市 薪资
# 0 张三 25 北京 15000
# 1 李四 30 上海 20000
# 2 王五 28 广州 18000
# 3 赵六 35 深圳 25000四、参数说明
pd.Series 参数
pd.DataFrame 参数
五、代码示例
示例1:安装验证与基本导入
代码示例
import pandas as pd
import numpy as np
# 查看 pandas 版本
print(f"pandas 版本: {pd.__version__}")
print(f"NumPy 版本: {np.__version__}")
# 查看 pandas 的配置信息
print(f"显示最大行数: {pd.get_option('display.max_rows')}")
print(f"显示最大列数: {pd.get_option('display.max_columns')}")输出:
代码示例
pandas 版本: 2.1.0
NumPy 版本: 1.24.3
显示最大行数: 60
显示最大列数: 20示例2:创建 Series 和 DataFrame
代码示例
import pandas as pd
# 创建 Series
scores = pd.Series([85, 92, 78, 95, 88], index=['语文', '数学', '英语', '物理', '化学'])
print("=== Series ===")
print(scores)
print(f"\n类型: {type(scores)}")
print(f"索引: {scores.index.tolist()}")
print(f"值: {scores.values}")
# 创建 DataFrame
data = {
'姓名': ['张三', '李四', '王五', '赵六'],
'年龄': [25, 30, 28, 35],
'城市': ['北京', '上海', '广州', '深圳'],
'薪资': [15000, 20000, 18000, 25000]
}
df = pd.DataFrame(data)
print("\n=== DataFrame ===")
print(df)
print(f"\n形状: {df.shape}")
print(f"列名: {df.columns.tolist()}")
print(f"数据类型:\n{df.dtypes}")输出:
代码示例
=== Series ===
语文 85
数学 92
英语 78
物理 95
化学 88
dtype: int64
类型: <class 'pandas.core.series.Series'>
索引: ['语文', '数学', '英语', '物理', '化学']
值: [85 92 78 95 88]
=== DataFrame ===
姓名 年龄 城市 薪资
0 张三 25 北京 15000
1 李四 30 上海 20000
2 王五 28 广州 18000
3 赵六 35 深圳 25000
形状: (4, 4)
列名: ['姓名', '年龄', '城市', '薪资']
数据类型:
姓名 object
年龄 int64
城市 object
薪资 int64
dtype: object示例3:DataFrame 基本信息查看
代码示例
import pandas as pd
import numpy as np
# 创建包含缺失值的 DataFrame
df = pd.DataFrame({
'产品': ['A', 'B', 'C', 'D', 'E'],
'销量': [100, 200, np.nan, 150, 300],
'单价': [10.5, 20.0, 15.0, np.nan, 8.5],
'类别': ['电子', '服装', '电子', '食品', '服装']
})
# 查看基本信息
print("=== 前3行 ===")
print(df.head(3))
print("\n=== 基本信息 ===")
print(df.info())
print("\n=== 描述性统计 ===")
print(df.describe())
print("\n=== 缺失值统计 ===")
print(df.isnull().sum())六、实际应用场景
-
数据清洗与预处理:在机器学习项目中,使用 pandas 读取原始数据,处理缺失值、重复值、异常值,完成特征工程
-
金融数据分析:处理股票行情数据,计算移动平均线、收益率,进行时间序列分析
-
报表自动化:从数据库或 CSV 文件读取数据,进行汇总统计,生成自动化报表
-
Web 日志分析:解析服务器日志文件,统计访问量、用户行为,生成可视化报告
-
科学实验数据处理:整理实验数据,进行分组统计和假设检验
七、注意事项
注意1:pandas 依赖 NumPy,安装时会自动安装。建议同时安装
openpyxl以支持 Excel 文件的读写。
注意2:pandas 2.0 之后移除了对
DataFrame.append()的支持,请使用pd.concat()替代。
注意3:处理大数据集时注意内存使用,可使用
dtype参数指定合适的数据类型以节省内存,或使用chunksize参数分块读取。
八、相关方法对比
九、小结
-
pandas 是 Python 数据分析的核心库,提供 Series 和 DataFrame 两种核心数据结构
-
Series 是一维带标签的数组,DataFrame 是二维带标签的表格数据结构
-
pandas 构建在 NumPy 之上,与数据科学生态无缝集成
-
安装简单,通过
pip install pandas即可完成 -
掌握 pandas 的基本数据结构是后续学习数据操作、分析的基础
十、练习题
练习1
创建一个包含5名学生3门课程成绩的 DataFrame,并使用 info() 和 describe() 方法查看其基本信息和统计摘要。
练习2
创建一个 Series,索引为过去7天的日期(使用 pd.date_range()),值为随机生成的气温数据(15-35度之间),并输出该 Series 的最大值、最小值和平均值。
练习3
对比 pandas DataFrame 与 Python 原生字典列表在数据访问、统计计算和缺失值处理方面的差异,编写代码验证你的结论。
常见问题
pandas 和 NumPy 有什么区别?
pandas 构建在 NumPy 之上,主要区别在于:pandas 支持带标签的索引、可以处理混合数据类型、原生支持缺失值处理、提供丰富的数据操作方法。而 NumPy 更适合纯数值计算和多维数组运算。
Series 和 DataFrame 的关系是什么?
DataFrame 可以看作是由多个 Series 组成的。DataFrame 的每一列就是一个 Series,共享同一个索引。可以通过 df['列名'] 从 DataFrame 中提取出一个 Series。
pandas 能处理多大数据量的数据?
pandas 将数据加载到内存中,一般能处理的数据量取决于可用内存。对于几GB到十几GB的数据,pandas 通常可以胜任。超过这个规模建议考虑 Dask、Polars 或数据库方案。
pandas 2.0 有哪些重要变化?
pandas 2.0 移除了 DataFrame.append() 方法(使用 pd.concat() 替代),引入了可选的 PyArrow 后端以提升性能,并改进了 Nullable 数据类型支持。
本文涉及AI创作
内容由AI创作,请仔细甄别