1.3 Pandas核心数据结构预览
Pandas核心数据结构:Series、DataFrame与Index预览 - 中文学习手册
本章节介绍Pandas的核心数据结构:Series(一维标签数组)、DataFrame(二维表格数据)和Index(索引),包括它们的结构、特点、简单示例,以及Series与DataFrame的区别与关联,适合初学者快速入门。
Pandas核心数据结构预览
引言
Pandas 是 Python 中一个强大的数据分析库,广泛应用于数据处理和清洗。其核心包括三种主要数据结构:Series(一维标签数组)、DataFrame(二维表格数据)和 Index(索引)。本章节将对这些结构进行简单预览,帮助新人建立基础概念。
Series(一维标签数组)
结构
Series 是一个一维数组,其中每个元素都有一个唯一的标签,称为索引(Index)。它类似于 Python 的列表或 NumPy 数组,但添加了标签化的特性,使得数据访问更加直观。
特点
- 标签化索引:每个数据点都对应一个索引标签,方便快速查找和引用。
- 数据类型统一:Series 中的所有元素必须是相同的数据类型,例如整数、浮点数或字符串,这保证了数据的一致性。
- 高效运算:支持向量化操作,能够快速进行数学计算和数据变换。
- 与 NumPy 兼容:Series 底层基于 NumPy 数组,继承了其高性能特性。
简单示例
以下代码展示如何创建和操作一个 Series:
import pandas as pd
# 创建一个 Series,指定数据和索引
s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
print("Series 内容:")
print(s)
print("数据类型:", s.dtype)
输出:
Series 内容:
a 10
b 20
c 30
d 40
dtype: int64
数据类型: int64
这个示例创建了一个包含整数的 Series,索引标签为 'a' 到 'd'。
DataFrame(二维表格数据)
结构
DataFrame 是一个二维表格数据结构,由行和列组成。每列是一个 Series,行和列都有标签。它类似于 Excel 表格或 SQL 表,是 Pandas 中最常用的数据结构。
特点
- 表格形式:数据以行(索引)和列(列名)组织,便于处理结构化数据。
- 灵活数据类型:不同列可以有不同的数据类型(如整数、字符串、日期),提高了数据表示的灵活性。
- 丰富的数据操作:支持筛选、排序、分组、合并等高级功能,适合复杂的数据分析任务。
- 易于导入导出:可以轻松从 CSV、Excel、数据库等源加载数据,并导出为多种格式。
简单示例
以下代码展示如何创建和查看一个 DataFrame:
import pandas as pd
# 创建一个 DataFrame,使用字典形式指定数据
data = {
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'城市': ['北京', '上海', '广州']
}
df = pd.DataFrame(data)
print("DataFrame 内容:")
print(df)
print("\n列名:", df.columns.tolist())
输出:
DataFrame 内容:
姓名 年龄 城市
0 张三 25 北京
1 李四 30 上海
2 王五 35 广州
列名: ['姓名', '年龄', '城市']
这个示例创建了一个包含三列的 DataFrame,默认行索引为整数 0、1、2。
Index(索引)
核心作用
Index 是 Pandas 中用于标识数据位置的标签系统。它为 Series 和 DataFrame 提供了高效的访问和操作机制,支持快速查找、筛选和排序。索引可以是行索引(DataFrame 的行标签)或列索引(DataFrame 的列名)。
常见类型预览
- RangeIndex:默认的整数索引,如 0, 1, 2,...,适用于顺序数据。
- DatetimeIndex:基于日期时间的索引,常用于时间序列数据分析。
- CategoricalIndex:用于分类数据的索引,适用于有限类别的数据。
- MultiIndex:多层索引,支持复杂的数据层次结构。
简单示例
以下代码展示如何自定义索引并使用:
import pandas as pd
# 创建一个 DataFrame 并指定自定义行索引
df = pd.DataFrame({
'分数': [85, 90, 95],
'科目': ['数学', '英语', '物理']
}, index=['学生A', '学生B', '学生C'])
print("DataFrame 内容:")
print(df)
print("\n索引信息:")
print("索引类型:", type(df.index))
print("索引值:", df.index.tolist())
输出:
DataFrame 内容:
分数 科目
学生A 85 数学
学生B 90 英语
学生C 95 物理
索引信息:
索引类型: <class 'pandas.core.indexes.base.Index'>
索引值: ['学生A', '学生B', '学生C']
这个示例展示了如何使用自定义字符串索引代替默认整数索引。
Series与DataFrame的区别与关联
区别
- 维度:Series 是一维的(类似于单列),而 DataFrame 是二维的(多行多列)。
- 结构:Series 只包含数据和索引,而 DataFrame 由多个 Series 组成,每列是一个 Series,并有额外的列索引。
- 用途:Series 更适合处理单个变量的数据,DataFrame 则用于处理多变量或表格数据。
关联
- 数据组成:DataFrame 可以看作是由多个 Series 组成的字典,其中列名对应 Series 的名称。
- 共享索引系统:Series 和 DataFrame 使用相同的 Index 类型,索引在两者间可以互通。
- 转换操作:可以从 DataFrame 中提取单列作为 Series,也可以将多个 Series 组合成一个 DataFrame。
示例
以下代码展示 Series 和 DataFrame 之间的相互转换:
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
print("原始 DataFrame:")
print(df)
# 从 DataFrame 提取 Series(列 'A')
s = df['A']
print("\n提取的 Series:")
print(s)
print("类型:", type(s))
# 将多个 Series 组合成新的 DataFrame
s1 = pd.Series([7, 8, 9], name='C')
new_df = pd.concat([df, s1], axis=1)
print("\n组合后的 DataFrame:")
print(new_df)
输出:
原始 DataFrame:
A B
0 1 4
1 2 5
2 3 6
提取的 Series:
0 1
1 2
2 3
Name: A, dtype: int64
类型: <class 'pandas.core.series.Series'>
组合后的 DataFrame:
A B C
0 1 4 7
1 2 5 8
2 3 6 9
总结
本章预览了 Pandas 的核心数据结构:Series、DataFrame 和 Index。Series 提供了一维数据的标签化存储,适合单个变量分析;DataFrame 扩展为二维表格,便于处理多变量数据集;Index 则为数据提供了灵活的标签系统,提升操作效率。理解这些结构是学习 Pandas 的基础,后续章节将深入探讨更多高级功能。通过简单示例,新手可以快速上手,开始数据分析之旅。
提示:在实际应用中,多练习创建和操作 Series 和 DataFrame,熟悉索引的使用,将帮助您更高效地处理数据。