文章概要
本文详细介绍 Pandas 库的基础知识,包括:
- Pandas 的基本概念和特点
- 安装和配置方法
- 核心数据结构(Series 和 DataFrame)
- 各种数据类型的处理方法
- 实际应用示例
什么是 Pandas
Pandas 是 Python 中最流行的数据分析库之一,它提供了高性能、易用的数据结构和数据分析工具。Pandas 的名字来源于 “Panel Data”(面板数据),这是一个计量经济学术语,用于描述多维结构化数据集。
Pandas 的主要特点
-
强大的数据结构
- Series:一维带标签数组
- DataFrame:二维表格型数据结构
- Panel:三维数据结构(在新版本中已弃用)
-
灵活的数据处理能力
- 数据清洗和准备
- 数据转换和重塑
- 数据合并和连接
- 数据分组和聚合
-
丰富的数据分析功能
- 统计分析
- 时间序列分析
- 数据可视化集成
-
高性能
- 基于 NumPy 构建
- 优化的 C 语言实现
- 支持大数据集处理
Pandas 与其他数据分析工具的比较
特性 | Pandas | NumPy | Excel |
---|---|---|---|
数据结构 | Series, DataFrame | ndarray | 表格 |
处理速度 | 快 | 非常快 | 较慢 |
内存使用 | 中等 | 低 | 高 |
可视化 | 基础 | 无 | 丰富 |
适用场景 | 数据分析、清洗 | 科学计算 | 简单分析 |
安装与配置
安装 Pandas
使用 pip 安装:
pip install pandas
使用 conda 安装:
conda install pandas
导入 Pandas
在 Python 中导入 Pandas:
import pandas as pd
版本检查
检查 Pandas 版本:
import pandas as pd
print(pd.__version__)
数据结构
Series 数据结构
Series 是 Pandas 中最基本的数据结构,它是一个一维的带标签数组。
创建 Series
# 从列表创建
s1 = pd.Series([1, 3, 5, 7, 9])# 从字典创建
s2 = pd.Series({'a': 1, 'b': 2, 'c': 3})# 指定索引
s3 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
Series 的基本操作
# 访问数据
print(s1[0]) # 通过位置访问
print(s2['a']) # 通过标签访问# 数学运算
print(s1.mean()) # 计算平均值
print(s1.sum()) # 计算总和# 布尔索引
print(s1[s1 > 5]) # 选择大于5的值
Series 的索引和切片
# 位置索引
print(s1[0:3]) # 选择前三个元素# 标签索引
print(s2['a':'c']) # 选择标签从a到c的元素# 条件索引
print(s1[s1 > 5]) # 选择大于5的元素
DataFrame 数据结构
DataFrame 是 Pandas 中最常用的数据结构,它是一个二维的表格型数据结构。
创建 DataFrame
# 从字典创建
df1 = pd.DataFrame({'A': [1, 2, 3],'B': ['a', 'b', 'c']
})# 从列表创建
df2 = pd.DataFrame([[1, 'a'],[2, 'b'],[3, 'c']
], columns=['A', 'B'])# 从 NumPy 数组创建
import numpy as np
df3 = pd.DataFrame(np.random.randn(3, 3))
DataFrame 的基本操作
# 查看数据
print(df1.head()) # 查看前几行
print(df1.tail()) # 查看后几行
print(df1.info()) # 查看数据信息# 选择列
print(df1['A']) # 选择单列
print(df1[['A', 'B']]) # 选择多列# 选择行
print(df1.iloc[0]) # 通过位置选择行
print(df1.loc[0]) # 通过标签选择行
DataFrame 的索引和切片
# 选择特定行和列
print(df1.iloc[0:2, 0:1]) # 选择前两行第一列# 条件选择
print(df1[df1['A'] > 1]) # 选择A列大于1的行# 多条件选择
print(df1[(df1['A'] > 1) & (df1['B'] == 'b')])
数据类型
数值类型
Pandas 支持多种数值类型:
- int64:64位整数
- float64:64位浮点数
- bool:布尔值
# 查看数据类型
print(df1.dtypes)# 转换数据类型
df1['A'] = df1['A'].astype('float64')
字符串类型
Pandas 中的字符串操作:
# 字符串方法
df1['B'] = df1['B'].str.upper() # 转换为大写
df1['B'] = df1['B'].str.lower() # 转换为小写
时间类型
Pandas 提供了强大的时间序列处理功能:
# 创建时间序列
dates = pd.date_range('20230101', periods=3)
df1['date'] = dates# 时间操作
df1['date'] = df1['date'] + pd.Timedelta(days=1)
分类数据
使用分类数据可以节省内存并提高性能:
# 创建分类数据
df1['B'] = df1['B'].astype('category')
缺失值处理
Pandas 提供了多种处理缺失值的方法:
# 检查缺失值
print(df1.isnull())# 删除缺失值
df1.dropna()# 填充缺失值
df1.fillna(0) # 用0填充
df1.fillna(method='ffill') # 用前一个值填充
实际应用示例
示例1:学生成绩分析
# 创建学生成绩数据
scores = pd.DataFrame({'姓名': ['张三', '李四', '王五', '赵六'],'语文': [85, 92, 78, 88],'数学': [92, 88, 95, 82],'英语': [88, 85, 90, 87]
})# 计算平均分
scores['平均分'] = scores[['语文', '数学', '英语']].mean(axis=1)# 按平均分排序
scores_sorted = scores.sort_values('平均分', ascending=False)# 显示结果
print(scores_sorted)
示例2:销售数据分析
# 创建销售数据
sales = pd.DataFrame({'日期': pd.date_range('20230101', periods=5),'产品': ['A', 'B', 'A', 'C', 'B'],'销量': [100, 150, 120, 80, 200],'单价': [10, 15, 10, 20, 15]
})# 计算销售额
sales['销售额'] = sales['销量'] * sales['单价']# 按产品分组统计
product_stats = sales.groupby('产品').agg({'销量': 'sum','销售额': 'sum'
})# 显示结果
print(product_stats)
总结
Pandas 基础部分涵盖了:
- Pandas 的基本概念和特点
- 安装和配置方法
- 核心数据结构(Series 和 DataFrame)
- 各种数据类型的处理方法
- 实际应用示例
这些基础知识是使用 Pandas 进行数据分析的基础,掌握这些内容后,您就可以开始进行更复杂的数据分析工作了。在实际应用中,建议多练习这些基础操作,熟悉各种数据结构的特性和使用方法,为后续的进阶学习打下坚实的基础。