【Python数据分析利器】Pandas从入门到实战:核心数据结构DataFrame与Series全解析

在数据科学和大数据开发领域,Pandas 无疑是最璀璨的明星工具之一。它底层基于 NumPy 构建,提供了高性能、易用的数据结构和丰富的数据分析函数,极大地简化了数据清洗、转换与统计分析的开发流程。

⚠️ 环境准备 :

注意在 Python 环境中使用 pip 安装(而非 npm):

bash 复制代码
pip install pandas

🎯 什么是 DataFrame 与 Series?

Pandas 的世界主要由两大核心数据结构支撑:

  1. DataFrame:表格型的数据结构,就像一张 Excel 表格或 SQL 表,既有行索引(Index),也有列索引(Columns)。
  2. Series:一维标记数组,就像表格中的单独一列。

核心关系:DataFrame 是由多个具有相同索引的 Series 组成的二维容器;从 DataFrame 中抽取任意一列,拿到的就是一个 Series。


🚀 实战案例:统计班级各科成绩

业务需求

统计某班级学员在"语文"、"数学"、"英语"三门课程中的最高分 、最低分 与平均分。

代码实现

python 复制代码
import pandas as pd

# 1. 构造 DataFrame 数据集
df = pd.DataFrame([
    {'姓名': '张三', '语文': 85, '数学': 92, '英语': 78},
    {'姓名': '李四', '语文': 78, '数学': 88, '英语': 95},
    {'姓名': '王五', '语文': 92, '数学': 96, '英语': 89},
    {'姓名': '赵六', '语文': 85, '数学': 90, '英语': 90},
    {'姓名': '孙七', '语文': 72, '数学': 59, '英语': 66},
    {'姓名': '周八', '语文': 80, '数学': 76, '英语': 68},
])

# 2. 统计计算(调用单列 Series 聚合函数)
print(f"语文 -> 最高分: {df['语文'].max()}, 最低分: {df['语文'].min()}, 平均分: {df['语文'].mean():.2f}")
print(f"数学 -> 最高分: {df['数学'].max()}, 最低分: {df['数学'].min()}, 平均分: {df['数学'].mean():.2f}")
print(f"英语 -> 最高分: {df['英语'].max()}, 最低分: {df['英语'].min()}, 平均分: {df['英语'].mean():.2f}")

🔥 进阶小技巧 :

如果想快速查看所有数值列的统计指标,可以直接使用 df.describe(),计数、均值、极值、分位数一览无余!


🛠️ 核心进阶:DataFrame 的常用构建方式

在实际项目中,数据来源多种多样,Pandas 提供了极具弹性的构造方式:

方式 1:列表嵌套字典(按行解析)

每个字典代表一行数据,字典的 key 自动作为列名:

python 复制代码
df1 = pd.DataFrame([
    {'姓名': '张三', '语文': 85, '数学': 92, '英语': 78},
    {'姓名': '李四', '语文': 78, '数学': 88, '英语': 95},
    {'姓名': '王五', '语文': 92, '数学': 96, '英语': 89}
])

方式 2:字典嵌套列表(按列解析,最推荐)

每个 key 是列名,对应的 list 为该列的所有取值:

python 复制代码
df2 = pd.DataFrame({
    '姓名': ['张三', '李四', '王五'],
    '语文': [85, 78, 92],
    '数学': [92, 88, 96],
    '英语': [78, 95, 89]
})

方式 3:元组列表 + columns 参数

传入二维元组列表,并通过 columns 参数定义表头:

python 复制代码
df3 = pd.DataFrame([
    ('张三', 85, 92, 78),
    ('李四', 78, 88, 95),
    ('王五', 92, 96, 89)
], columns=['姓名', '语文', '数学', '英语'])

方式 4:二维列表 + columns + index

在定义数据和列名的同时,显式指定行索引(index):

python 复制代码
df4 = pd.DataFrame([
    ['张三', 85, 92, 78],
    ['李四', 78, 88, 95],
    ['王五', 92, 96, 89]
], columns=['姓名', '语文', '数学', '英语'], index=['a', 'b', 'c'])

🛠️ 核心进阶:Series 的常用构建方式

Series 是一维标记数组,常见构建方式如下:

python 复制代码
import pandas as pd

# 1. 普通列表构建(默认自动生成 0, 1, 2... 数字索引)
s1 = pd.Series([10, 20, 30, 40, 50])

# 2. 元组构建并指定自定义标签索引(index)
s2 = pd.Series((10, 20, 30, 40, 50), index=['a', 'b', 'c', 'd', 'e'])

# 3. 字典构建(字典 key 自动转化为 Series 的 index)
s3 = pd.Series({'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': 50})

# 4. 从已有的 DataFrame 中抽取某列
s4 = df1['语文']
s5 = df1['数学']

📋 必备速查:DataFrame 与 Series 常见属性

熟练掌握基础属性,能让你在处理数据清洗和维度变换时更加游刃有余:

属性名称 作用说明 适用对象 示例输出
xx.shape 获取数据维度(行数, 列数) DataFrame / Series (6, 4)
xx.columns 获取所有列名/列标签 DataFrame 特有 Index(['姓名', '语文', ...])
xx.index 获取行标签/行索引 DataFrame / Series RangeIndex(start=0, stop=6)
xx.values 获取纯数据底层表示(NumPy ndarray) DataFrame / Series array([[...], [...]])
xx.dtype 获取单列的数据类型 Series 特有 int64 / object
xx.dtypes 获取各列对应的数据类型 DataFrame 特有 各字段类型列表
xx.size 获取数据元素的总个数(行 × 列) DataFrame / Series 24

示例代码

python 复制代码
# 查看 DataFrame 的维度与字段名
print(df.shape)    # (6, 4)
print(df.columns)  # Index(['姓名', '语文', '数学', '英语'], dtype='object')

# 查看 Series 的类型与值
print(df['语文'].dtype)   # int64
print(df['语文'].values)  # [85 78 92 85 72 80]

💡 总结与回顾

  1. 基本模型 :Pandas 的基石是 Series(一维序列)和 DataFrame(二维表格)。
  2. 统计计算 :借助 .max()、.min()、.mean() 等聚合函数,能秒级完成批量统计。
  3. 数据感知 :通过 .shape 查维度、.columns 查表头、.index 查索引、.values 探底层,是数据探查的第一步。
相关推荐
码云数智-大飞1 小时前
新手写 Python 代码,如何规范命名、减少 Bug
开发语言·python·php
天天被压力1 小时前
【别再到处找免费股票数据API了:官方204个接口,32篇一次讲透 #06】Python实时行情总报错?五档盘口+逐笔一次跑通
java·人工智能·python
智能RPA1 小时前
农业与矿业行业智能体自动化平台对比评测(计量与巡检场景)
运维·人工智能·python·自动化·agent·rpa
溪语流沙1 小时前
Django + Vue电商项目第005讲:后端骨架|Django初始化、配置分层与DRF接入
vue.js·后端·python·django
代码方舟1 小时前
Python数据工程:利用天远全能消金报告优化消费金融合规体验
人工智能·python
TomEval1 小时前
【测AI】第05篇:Python 爬虫进阶 —— 动态页面爬取与 Scrapy 框架
人工智能·爬虫·python·scrapy·自动化
用户019027581611 小时前
如何用 Python 回测 MACD 金叉死叉策略?(真实收益与频繁交易的代价)
python
huisheng_qaq2 小时前
【Python基础篇-07】深入理解python的面向对象编程
python·多态·继承·面向对象编程·封装
FanetheDivine2 小时前
学习python 2.语法速览
python