当前位置: 首页 > news >正文

深入解析 Pandas 核心数据结构:Series 与 DataFrame

在数据分析和科学计算领域,Pandas 是 Python 生态中最受欢迎的库之一。它提供了高效、灵活且易于使用的数据结构,使得数据清洗、转换和分析变得更加便捷。Pandas 的核心数据结构包括 Series 和 DataFrame,它们为处理结构化数据提供了强大的支持。本文将深入探讨这些数据结构的特点、创建方式、常用操作以及实际应用场景,帮助读者全面掌握 Pandas 的核心功能。

1. Pandas 简介

Pandas 是由 Wes McKinney 于 2008 年开发的 Python 库,旨在提供高性能、易用的数据结构和数据分析工具。它的名字来源于“Panel Data”(面板数据),强调了其在多维数据操作方面的能力。Pandas 构建于 NumPy 之上,因此能够高效地处理数值计算任务,同时增加了数据标签、缺失值处理等高级功能。

Pandas 的主要优势包括:

  • 灵活的数据结构(Series 和 DataFrame)。

  • 强大的数据清洗能力(处理缺失值、去重、数据转换等)。

  • 高效的数据分析工具(分组、聚合、时间序列分析等)。

  • 与其他库的无缝集成(NumPy、Matplotlib、Scikit-learn 等)。

接下来,我们将重点介绍 Pandas 的两种核心数据结构:Series 和 DataFrame

2. Series:一维带标签数组

2.1 什么是 Series?

Series 是 Pandas 中最基本的数据结构,类似于 Python 的列表或 NumPy 的数组,但具有额外的索引功能。它由两部分组成:

  • 数据值(Values):可以是整数、浮点数、字符串、布尔值等。

  • 索引(Index):用于标识数据的标签,类似于字典的键。

Series 可以看作是一个带标签的一维数组,这使得它比普通数组更加强大,因为我们可以通过索引快速访问数据。

2.2 创建 Series

Series 可以通过多种方式创建:

(1)从列表创建
import pandas as pddata = [10, 20, 30, 40]
s = pd.Series(data)
print(s)

输出:

0    10
1    20
2    30
3    40
dtype: int64

默认情况下,索引是 0 开始的整数,但我们可以自定义索引:

s = pd.Series(data, index=['a', 'b', 'c', 'd'])
print(s)

输出:

a    10
b    20
c    30
d    40
dtype: int64
(2)从字典创建

字典的键会自动成为 Series 的索引:

data = {'a': 10, 'b': 20, 'c': 30}
s = pd.Series(data)
print(s)

输出:

a    10
b    20
c    30
dtype: int64
(3)从 NumPy 数组创建
import numpy as nparr = np.array([1, 2, 3])
s = pd.Series(arr, index=['x', 'y', 'z'])
print(s)

输出:

x    1
y    2
z    3
dtype: int64

2.3 Series 的常用操作

(1)访问数据
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s['a'])  # 输出 10
print(s[0])    # 输出 10(默认位置索引仍然可用)

(2)切片操作

print(s['a':'c'])  # 输出 a:10, b:20, c:30

(3)数学运算

Series 支持向量化运算:

s1 = pd.Series([1, 2, 3])
s2 = pd.Series([4, 5, 6])
print(s1 + s2)  # 输出 5, 7, 9
(4)缺失值处理

Pandas 使用 NaN(Not a Number)表示缺失值:

s = pd.Series([1, 2, None, 4])
print(s.isna())  # 检查缺失值
s.fillna(0, inplace=True)  # 填充缺失值

2.4 Series 的应用场景

  • 单变量数据分析(如股票价格、温度变化)。

  • 作为 DataFrame 的列(DataFrame 的每一列都是一个 Series)。

  • 快速数据计算(如统计、聚合)。

3. DataFrame:二维表格型数据结构

3.1 什么是 DataFrame?

DataFrame 是 Pandas 中最常用的数据结构,类似于 Excel 表格或 SQL 数据库中的表。它由多个 Series 组成,每一列可以有不同的数据类型(整数、字符串、浮点数等),并且具有行和列的标签。

DataFrame 的核心特点:

  • 二维结构(行和列)。

  • 列可以有不同的数据类型

  • 支持索引和切片

  • 提供丰富的数据操作方法(如合并、分组、透视表等)。

3.2 创建 DataFrame

(1)从字典创建

字典的键会成为列名:

data = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'City': ['New York', 'London', 'Tokyo']
}
df = pd.DataFrame(data)
print(df)

输出:

      Name  Age      City
0    Alice   25  New York
1      Bob   30    London
2  Charlie   35     Tokyo
(2)从列表创建
data = [['Alice', 25, 'New York'],['Bob', 30, 'London'],['Charlie', 35, 'Tokyo']
]
df = pd.DataFrame(data, columns=['Name', 'Age', 'City'])
print(df)

(3)从 CSV 文件读取

df = pd.read_csv('data.csv')

3.3 DataFrame 的常用操作

(1)查看数据
df.head()  # 查看前 5 行
df.tail()  # 查看后 5 行
df.info()  # 查看数据结构
df.describe()  # 统计摘要

(2)选择数据

# 选择列
df['Name']  # 返回 Series
df[['Name', 'Age']]  # 返回 DataFrame# 选择行
df.loc[0]  # 按标签选择
df.iloc[0]  # 按位置选择# 条件筛选
df[df['Age'] > 30]

(3)修改数据

# 新增列
df['Salary'] = [50000, 60000, 70000]# 修改值
df.loc[0, 'Age'] = 26# 删除列
df.drop('City', axis=1, inplace=True)

(4)数据聚合

df.groupby('City')['Age'].mean()  # 按城市分组计算平均年龄

3.4 DataFrame 的应用场景

  • 数据清洗与预处理(处理缺失值、去重、数据转换)。

  • 数据分析与统计(聚合、分组、透视表)。

  • 机器学习数据准备(特征工程、数据标准化)。

4. Index 与 MultiIndex(分层索引)

4.1 Index 对象

DataFrame 和 Series 的索引是不可变的,支持高效查找:

df.index  # 查看行索引
df.columns  # 查看列索引

4.2 MultiIndex(分层索引)

适用于多维数据分析:

index = pd.MultiIndex.from_tuples([('A', 1), ('A', 2), ('B', 1)],names=['Group', 'ID']
)
df = pd.DataFrame({'Value': [10, 20, 30]}, index=index)
print(df)

输出:

           Value
Group ID       
A     1       102       20
B     1       30

5. 总结

Pandas 的 Series 和 DataFrame 是数据分析的核心工具:

  • Series:一维带标签数组,适合单变量分析。

  • DataFrame:二维表格,适合结构化数据处理。

  • Index/MultiIndex:提供灵活的数据访问方式。

掌握这些数据结构后,可以高效地进行数据清洗、分析和可视化,为更复杂的数据科学任务打下坚实基础。

相关文章:

  • 重读《人件》Peopleware -(15)Ⅱ 办公环境 Ⅷ 撑伞之步:构建理想办公环境(下)
  • 【C++系列】智能指针自定义析构
  • 6.5 自学测试 数据库基础 Day5
  • C++11 右值引用
  • 第十八章 归档与备份
  • python打卡训练营打卡记录day48
  • JS的数据类型分类
  • 自动交换两个文件的文件名 VSB脚本技巧 电脑技巧
  • java面试:JAVA并发篇
  • 《双指针》题集
  • Codeforces Educational 179(ABCDE)
  • 聊聊集群间数据复制和持久化机制
  • 联邦学习与边缘计算结合
  • Ubuntu 上安装 Git LFS
  • 算法打卡17天(补)
  • Docker知识五:服务编排(Docker Compose概念)
  • HTML前端开发:JavaScript的条分支语句if,Switch
  • 矩阵详解:从基础概念到实际应用
  • 对F1分数的基本认识
  • 深入理解 Spring Cache 及其核心注解
  • 阿里巴巴国际站靠谱吗/百度快速查询
  • 南昌做网站要多少钱/百度搜索使用方法
  • 织梦网站做自动生成地图/沈阳百度推广排名优化
  • 武安企业做网站推广/北京百度搜索优化
  • 衡水seo_衡水网站建设-燕丰收/免费seo免费培训
  • 福州网站建站建设/百度一下首页登录入口