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: int64

DataFrame - 二维数据结构

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 参数

参数 类型 说明
data array-like, Iterable, dict, scalar Series 的数据,可以是列表、字典、标量值等
index array-like, Index 索引标签,默认为 RangeIndex(0, 1, ..., n-1)
dtype str, numpy.dtype 数据类型,若未指定则自动推断
name str Series 的名称
copy bool 是否复制输入数据,默认为 False

pd.DataFrame 参数

参数 类型 说明
data 各种格式 DataFrame 的数据源
index Index, array-like 行索引
columns Index, array-like 列标签
dtype str, numpy.dtype 数据类型
copy bool 是否从输入复制数据,默认为 False

五、代码示例

示例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 参数分块读取。


八、相关方法对比

特性 Series DataFrame NumPy ndarray
维度 一维 二维 N维
索引 支持自定义标签 支持行列标签 仅整数索引
数据类型 可混合 列内同类型 必须同类型
缺失值处理 原生支持 原生支持 不支持
适用场景 单列数据 表格数据 数值计算

九、小结

  • 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 数据类型支持。

标签: pandas 数据分析 Series DataFrame Python入门 数据科学

本文涉及AI创作

内容由AI创作,请仔细甄别

list快速访问

上一篇: NumPy数组拼接与分割 - concatenate/stack/split 下一篇: pandas Series创建与操作 - 一维数据结构详解

poll相关推荐