Series与DataFrame的区别有什么?

Pandas Series 与 DataFrame:核心定义、区别与使用场景

Pandas 是基于 NumPy 构建的数据分析库,核心数据结构是 Series(一维标签数组)DataFrame(二维表格数据),二者均支持标签索引、缺失值处理和高效数据操作,是数据分析的基石。

一、Series:一维“带标签的数组”

核心定义

Series 是 一维、同构 的数据容器,可理解为“Python 列表 + 标签索引”或“NumPy 一维 ndarray + 自定义索引”,每个元素对应唯一标签(索引)。

关键特性

  • 结构组成:由 values(数据区,本质是 ndarray)和 index(标签索引,默认是 0 开始的整数索引,可自定义)两部分组成。
  • 数据类型:列内数据必须同构(如全 int、全 str、全 float),支持 int32/64float32/64object(字符串/混合)、category(分类)等 dtype。
  • 核心优势:支持标签索引(如按名称取值)、缺失值(NaN)自动识别、向量化运算(同 NumPy)。

简单示例

import pandas as pd
import numpy as np

# 1. 基础创建(默认整数索引)
s1 = pd.Series([10, 20, 30, 40])
# 输出:
# 0    10
# 1    20
# 2    30
# 3    40
# dtype: int64

# 2. 自定义索引(标签可重复,非唯一)
s2 = pd.Series([10, 20, 30], index=["a", "b", "c"])
s2["b"]  # 按标签取值,输出 20

# 3. 从字典创建(键为索引,值为数据)
s3 = pd.Series({"北京": 20, "上海": 25, "广州": 28})

二、DataFrame:二维“带标签的表格”

核心定义

DataFrame 是 二维、异构 的表格数据结构,可理解为“多个 Series 按列拼接而成”,既有行索引(index)也有列索引(columns),对应 Excel 表格、SQL 表或数据库中的一张表。

关键特性

  • 结构组成:由多个列(每列是一个 Series,同构)、行索引(index)、列索引(columns)组成,数据存储为列级 ndarray 集合(列内连续,列间独立)。
  • 数据类型:列间可异构(如一列 int、一列 str、一列 float),列内必须同构,支持 dtype 单独优化(如某列字符串用 category 类型)。
  • 核心优势:支持表格级操作(筛选、分组、合并、透视)、缺失值灵活处理、与 NumPy/列表/字典无缝转换,是数据分析的核心载体。

简单示例

# 1. 从字典创建(键为列名,值为 Series/列表)
data = {
    "姓名": ["张三", "李四", "王五"],
    "年龄": [25, 30, 35],
    "城市": ["北京", "上海", "广州"]
}
df = pd.DataFrame(data, index=["a", "b", "c"])  # 自定义行索引

# 2. 核心操作(示例)
df["年龄"]  # 取一列(返回 Series)
df.loc["b"]  # 按行标签取一行
df[df["年龄"] > 28]  # 按条件筛选行
df["年龄"] = df["年龄"] + 1  # 列级向量化运算

三、Series 与 DataFrame 的核心区别

特性 Series DataFrame
维度 一维(1D) 二维(2D)
索引 仅行索引(index) 行索引(index)+ 列索引(columns)
数据同构性 列内(唯一列)必须同构 列内同构,列间可异构
核心定位 单一变量数据(如“某城市温度序列”) 多变量表格数据(如“用户信息表”)
操作重点 一维数组运算(排序、统计) 表格级操作(筛选、分组、合并)
转换关系 可作为 DataFrame 的一列/一行 可通过 df["列名"] 提取 Series

四、核心使用场景

  • Series:存储单一维度的序列数据(如时间序列、某指标的数值序列),适合一维数据的统计分析(均值、标准差、排序)。
  • DataFrame:存储多维度关联数据(如用户信息、销售数据、实验数据),适合复杂数据分析流程(数据清洗→探索性分析→建模准备)。

需要我补充 Series/DataFrame 的核心操作对比(如筛选、缺失值处理),或结合之前的内存模型讲解如何优化 DataFrame 的内存占用吗?

posted @ 2025-11-25 12:05  wangya216  阅读(126)  评论(0)    收藏  举报