Pandas 中文手册

1.3 Pandas核心数据结构预览

Pandas核心数据结构:Series、DataFrame与Index预览 - 中文学习手册

Pandas 中文手册

本章节介绍Pandas的核心数据结构:Series(一维标签数组)、DataFrame(二维表格数据)和Index(索引),包括它们的结构、特点、简单示例,以及Series与DataFrame的区别与关联,适合初学者快速入门。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

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,熟悉索引的使用,将帮助您更高效地处理数据。

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包