Pandas入门与数据结构

Pandas入门与数据结构

2026年9月20日·#编程学习/python学习笔记Python/数据分析·1284 字 6 分钟
浏览量加载中...
AI 摘要- DeepSeek

Pandas 的 DataFrame 与 Series 是什么、四种构建方式和常用属性(index/columns/values/shape 等)

封面图
Pandas入门与数据结构 - 封面图

Pandas 是什么#

Pandas 是一个功能强大的结构化数据分析工具集,底层基于 Numpy 构建,在数据分析和大数据开发场景中都有显著优势。

官网:https://pandas.pydata.org

安装(注意是 pip,不是 npm):

Terminal window
pip install pandas
Warning

课程 PPT 上写的 npm install pandas 是笔误——npm 是 Node.js 的包管理器,Python 用 pip。

两个核心数据结构#

结构是什么类比
DataFrame表格型的数据结构,有行有列一张 Excel 表格
Series一列数据DataFrame 中的单独一列

概念对应关系:index(索引,行号或行标签)、column(列名)、row(一行)。

初体验:统计各科成绩#

需求:基于 Pandas 统计班级学员各科成绩的最高分、最低分、平均分。

import pandas as pd
# 构造 DataFrame —— 创建数据集(学员成绩信息)
df = pd.DataFrame([
{"姓名": "小王", "语文": 90, "数学": 80, "英语": 70},
{"姓名": "小李", "语文": 80, "数学": 90, "英语": 80},
{"姓名": "小张", "语文": 70, "数学": 80, "英语": 90},
])
# 统计计算
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}")

:.2f 表示保留两位小数。取出一列后,max() / min() / mean() 这些统计方法直接就能用。

DataFrame 的四种构建方式#

import pandas as pd
# 1. 列表套字典:每个字典是一行
df1 = pd.DataFrame([
{'姓名': '王林', '语文': 80, '英语': 90, '数学': 88},
{'姓名': '李慕婉', '语文': 92, '英语': 81, '数学': 93},
])
# 2. 字典套列表:键是列名,值是该列的数据
df2 = pd.DataFrame({
'姓名': ['王林', '李慕婉'],
'语文': [80, 92],
'英语': [90, 81],
'数学': [88, 93],
})
# 3. 列表套元组 + columns 指定列名
df3 = pd.DataFrame([
('王林', 80, 90, 88),
('李慕婉', 92, 81, 93),
], columns=['姓名', '语文', '英语', '数学'])
# 4. 在 3 的基础上再指定自定义行索引
df4 = pd.DataFrame([
('王林', 80, 90, 88),
('李慕婉', 92, 81, 93),
], columns=['姓名', '语文', '英语', '数学'], index=['a', 'b'])

DataFrame 常见属性#

属性作用
df.index获取行索引
df.columns获取列名(DataFrame 特有)
df.values获取值(二维数组)
df.size获取单元格的数量
df.dtypes获取每一列的数据类型
df.shape获取数据维度(行, 列)

Series 的构建与属性#

import pandas as pd
s1 = pd.Series([10, 20, 30, 40, 50]) # 列表
s2 = pd.Series((10, 20, 30, 40, 50), index=['a', 'b', 'c', 'd', 'e']) # 元组 + 自定义索引
s3 = pd.Series({'a': 10, 'b': 20, 'c': 30}) # 字典
s4 = df1['语文'] # 从 DataFrame 里取一列
属性作用
s.index获取索引
s.values获取值
s.dtype获取数据类型(Series 是单数 dtype)
s.size获取数据个数
s.shape获取数据维度(行,)——只有一个维度
Tip

记法:DataFrame 有 columns、类型是 dtypes(复数);Series 没有 columns、类型是 dtype(单数)。

相关#

练习题#

一、知识回顾(读完直接做下面的实践题)#

  1. Pandas 是结构化数据分析工具集,底层基于 Numpy 构建
  2. 两个核心结构:DataFrame 像一张 Excel 表格;Series 像表格中的一列
  3. 安装命令:pip install pandas
  4. DataFrame 取列名用 df.columns、取维度用 df.shape、取单元格数量用 df.size、取每列类型用 df.dtypes
  5. Series 取数据类型用 s.dtype(单数),DataFrame 用 df.dtypes(复数)
  6. df['语文'].mean() 求平均分;max() 求最大值、min() 求最小值
  7. 构造 DataFrame 时用参数 columns 指定列名,用参数 index 指定行索引

二、裸写题#

  • 2-1 构造 DataFrame 用”字典套列表”的方式造一个 3 名学员的成绩表(列:姓名、语文、数学),打印 shape 和 columns。

    提示(先自己想,实在想不出再点开)

    一级 · 思路:列名当字典的键,每列的数据当值 二级 · 方法:pd.DataFrame({...}) 三级 · 骨架:df = pd.DataFrame({"姓名": [...], "语文": [...], "数学": [...]})

    参考答案(做完再点开)
    # 2-1
    import pandas as pd
    df = pd.DataFrame({
    "姓名": ["小王", "小李", "小张"],
    "语文": [90, 80, 70],
    "数学": [80, 90, 80],
    })
    print(df.shape) # (3, 3)
    print(df.columns.tolist()) # ['姓名', '语文', '数学']
  • 2-2 取属性 对上面造出的表,分别打印:行索引、列名、值、单元格数量、每列类型、维度。

    提示(先自己想,实在想不出再点开)

    一级 · 思路:六个属性各一行 二级 · 方法:index / columns / values / size / dtypes / shape 三级 · 骨架:print(df.index.tolist())(转成列表看得更清楚)

    参考答案(做完再点开)
    # 2-2
    print(df.index.tolist()) # [0, 1, 2]
    print(df.columns.tolist())
    print(df.values.tolist())
    print(df.size) # 9
    print(df.dtypes)
    print(df.shape) # (3, 3)
  • 2-3 统计一列 取出”语文”这一列,打印最高分、最低分、平均分(平均分保留两位小数)。

    提示(先自己想,实在想不出再点开)

    一级 · 思路:先取列,再用统计方法 二级 · 方法:df['语文'].max() / .min() / .mean() 三级 · 骨架:f"{df['语文'].mean():.____}" 保留两位小数

    参考答案(做完再点开)
    # 2-3
    print(f"最高分: {df['语文'].max()}, 最低分: {df['语文'].min()}, 平均分: {df['语文'].mean():.2f}")

评论区

[ 标签 ]
# AI37# AI 编程2# AI工具1# AI绘图1# AI辅助开发2# Ajax7# Apifox1# AstrBot3# Astro2# CC Switch1# CDN2# Claude Code1# claudecode2# ClaudeCode1# Cloudflare2# CloudFlare2# CloudFlare-ImgBed3# coc4# CSS10# DeepSeek6# deepseek2# DELETE1# Docker5# EdgeOne3# Gist1# git1# GitHub1# hexo-circle-of-friends1# HTML9# HTTP10# ImageManager1# Java23# java13# JavaScript11# JavaWeb113# JDBC7# JSON2# JUnit1# LangChain25# Linux4# Logback1# Maven17# Muse Spark1# Mybatis1# MyBatis18# MySQL45# MySql1# NapCat1# Node.js1# obsidian2# Obsidian5# OpenCode4# ORM1# PathVariable1# PicGo1# PyCharm1# Python70# RequestBody1# RequestMapping1# RESTful风格1# skills1# Slf4j1# SpringBoot37# SpringMVC5# SQL2# Streamlit5# Svelte2# TailwindCSS1# Telegram3# Tlias2# Vercel1# vscode2# Vue20# Waline3# Web3# WebDAV1# Web基础6# Web开发6# WinSCP1# YAML1# 三层架构1# 中二宣言1# 书籍1# 使用文档10# 写作1# 函数2# 刷步数1# 前端52# 动态1# 动漫1# 包1# 单词2# 博客8# 博客工作流1# 博客开发2# 参数接收1# 友链1# 反思2# 后端48# 图床6# 地图1# 备份2# 大模型1# 奇思妙想1# 存储1# 学习方法6# 学校1# 宝塔面板3# 宝宝10# 实战4# 对象1# 导航栏1# 工具2# 布局2# 开发1# 开发工具1# 开发规范1# 开心1# 异常处理1# 影视2# 微信1# 性能优化2# 总结1# 想法15# 感受1# 感悟11# 指南1# 提示词工程2# 插件5# 故障排除1# 效率工具2# 教程10# 数据分析9# 数据库27# 数据结构1# 文件操作2# 斩神1# 日常95# 日志框架1# 朋友圈1# 朱元璋1# 模块1# 模板1# 正则表达式2# 测试3# 游戏2# 爬虫7# 生活迁移1# 电影2# 电脑1# 碎碎念1# 视觉识别1# 类1# 类型注解1# 网络基础2# 网络教室1# 羊毛2# 脚本2# 脚本工具1# 自动化2# 蓝奏云1# 表单1# 订阅推荐2# 记录2# 评论系统1# 词根1# 词缀1# 说说1# 足迹1# 跑步2# 路径参数1# 转载2# 运动1# 部署11# 部落冲突1# 配置1# 随机图1# 面向对象5# 音乐3# 音标1# 项目实战11# 饮食1# 驼峰命名1# 高德地图1
[ 公告 ]

如果你喜欢,那么欢迎来到我的世界!

了解更多
[ 音乐 ]
封面

音乐

暂未播放

0:000:00
暂无歌词
找不到相关结果。
[ contents ]
[ 全部文章 ]