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

day-036-Pandas入门

Day 36:Pandas 入门——Series 与 DataFrame

NumPy 处理的是纯数字数组,现实数据往往是表格——每列有不同类型,还有列名。Pandas 就是为此而生的。今天学 Pandas 的两个核心数据结构。


一、Pandas 是什么?

Pandas(Python Data Analysis Library)是 Python 中最常用的数据分析库,基于 NumPy 构建。

pipinstallpandas
importpandasaspd# 约定俗成别名

两大核心数据结构

  • Series:一列数据,带标签(像带索引的 NumPy 数组)
  • DataFrame:多列数据的表格(像 Excel 工作表或 SQL 表)

二、Series——带标签的一维数据

importpandasaspdimportnumpyasnp# 从列表创建 Seriess=pd.Series([85,92,78,95])print(s)# 0 85# 1 92# 2 78# 3 95# dtype: int64# 指定索引grades=pd.Series([85,92,78,95],index=["小明","小红","小刚","小丽"],name="成绩")print(grades)# 小明 85# 小红 92# 小刚 78# 小丽 95# Name: 成绩, dtype: int64# 像字典一样访问print(grades["小明"])# 85print(grades[["小明","小丽"]])# 选多个# 小明 85# 小丽 95# Series 的属性print(grades.values)# NumPy 数组 [85 92 78 95]print(grades.index)# Index(['小明', '小红', '小刚', '小丽'])print(grades.dtype)# int64

Series 的运算——和 NumPy 一样方便

print(grades+5)# 每人加5分print(grades[grades>80])# 筛选 > 80 的学生print(grades.mean())# 87.5print(grades.describe())# 一键统计摘要# count 4.000000# mean 87.500000# std 7.549834# min 78.000000# max 95.000000

三、DataFrame——表格数据的主力

DataFrame 可以理解为多个 Series 的组合,每列可以是不同类型。

# 从字典创建 DataFramedata={"姓名":["小明","小红","小刚","小丽"],"年龄":[18,19,18,20],"城市":["北京","上海","广州","深圳"],"成绩":[85,92,78,95],}df=pd.DataFrame(data)print(df)# 姓名 年龄 城市 成绩# 0 小明 18 北京 85# 1 小红 19 上海 92# 2 小刚 18 广州 78# 3 小丽 20 深圳 95

DataFrame 的基本信息

print(df.shape)# (4, 4) 行数, 列数print(df.columns)# Index(['姓名', '年龄', '城市', '成绩'])print(df.index)# RangeIndex(start=0, stop=4, step=1)print(df.dtypes)# 每列的数据类型# 姓名 object# 年龄 int64# 城市 object# 成绩 int64print(df.info())# 综合信息print(df.describe())# 数值列的统计摘要(自动跳过非数值列)# 年龄 成绩# count 4.0 4.00# mean 18.8 87.50# std 1.0 7.55# min 18.0 78.00# max 20.0 95.00

四、DataFrame 的索引与选择

这是 Pandas 最常用但容易混淆的部分:

# 方式1:df[列名] —— 选一列print(df["姓名"])# 返回 Seriesprint(df[["姓名","成绩"]])# 选多列,返回 DataFrame# 方式2:df.loc[行标签, 列标签] —— 按标签选print(df.loc[0])# 第一行(Series)print(df.loc[0,"姓名"])# 第一行的姓名(单个值)print(df.loc[0:2,["姓名","成绩"]])# 0-2行,姓名和成绩列# 方式3:df.iloc[行位置, 列位置] —— 按位置选(像 NumPy)print(df.iloc[0,0])# 第一行第一列 → 小明print(df.iloc[:3,[0,3]])# 前3行,第0和第3列# 方式4:布尔索引print(df[df["成绩"]>=85])# 成绩 ≥ 85 的行

记忆口诀

  • df["列名"]—— 取列
  • df.loc[行, 列]—— 按标签名
  • df.iloc[行, 列]—— 按位置编号

五、添加和删除列/行

# 添加列df["及格"]=df["成绩"]>=60df["成绩等级"]=pd.cut(df["成绩"],bins=[0,60,80,90,100],labels=["D","C","B","A"])print(df)# 删除列df=df.drop("及格",axis=1)# axis=1 表示列# 添加行new_row=pd.Series({"姓名":"小王","年龄":19,"城市":"杭州","成绩":88})df=pd.concat([df,pd.DataFrame([new_row])],ignore_index=True)# 删除行df=df[df["姓名"]!="小刚"]# 删掉小刚# 或 df = df.drop(2) # 删掉索引为2的行

六、实战——学生成绩表

# 创建模拟数据df=pd.DataFrame({"姓名":["小明","小红","小刚","小丽","小王"],"语文":[85,92,78,95,88],"数学":[90,88,82,91,86],"英语":[78,95,72,89,92],})# 添加总分和平均分列df["总分"]=df["语文"]+df["数学"]+df["英语"]df["平均分"]=df["总分"]/3df["平均分"]=df["平均分"].round(1)# 按总分排序df=df.sort_values("总分",ascending=False)# 添加排名df["排名"]=range(1,len(df)+1)df=df.reset_index(drop=True)# 重置索引print(df)# 姓名 语文 数学 英语 总分 平均分 排名# 0 小丽 95 91 89 275 91.7 1# 1 小红 92 88 95 275 91.7 2# 2 小王 88 86 92 266 88.7 3# 3 小明 85 90 78 253 84.3 4# 4 小刚 78 82 72 232 77.3 5

七、今日学习总结

学习内容掌握情况一句话要点
Series✅ 重点带索引的一维数组,pd.Series(数据, index=索引)
DataFrame✅ 重点表格数据,pd.DataFrame(字典)
df[“列名”]✅ 重点取一列或多列
df.loc[行, 列]✅ 重点按标签选取
df.iloc[行, 列]✅ 重点按位置选取
布尔索引✅ 重点df[df["成绩"] > 80]
describe()✅ 了解一键统计摘要

今日踩坑记录

  1. loc 和 iloc 的区别df.loc[0:2]包含索引2(共3行),df.iloc[0:2]不包含位置2(共2行)。loc 是标签切片,iloc 是位置切片(和 Python 切片一样左闭右开)。
  2. df["列名"]df.列名的区别df.列名只有列名是合法 Python 标识符时可用。df["语文 成绩"]这种带空格或中文的只能用方括号。
  3. 修改 DataFrame 要重新赋值df.drop("列", axis=1)不改变 df 本身,要df = df.drop(...)或传inplace=True

八、明天学什么?

今天创建了第一个 DataFrame,明天学 Pandas 的数据读取——如何从 CSV、Excel、JSON 等外部文件中加载数据


Excel 能做的事,Pandas 都能做——而且能自动化、处理更大数据、和其他工具无缝衔接。DataFrame 是你数据分析的"工作台"。

第36天,打卡完成。明天见!


本系列是个人学习笔记,如有错误欢迎在评论区指正交流。

http://www.jsqmd.com/news/1238841/

相关文章:

  • MyBatis框架入门与Java数据库访问优化实践
  • 奇迹MU荣耀出征跨服BOSS玩法与职业搭配指南
  • 掌握html空格代码,轻松搞定文本空格布局
  • WSL 2与Docker Desktop高效开发环境配置指南
  • 2026澳大利亚国际能源展:光伏、储能与氢能技术前瞻
  • Motrix Next:跨平台下载管理器的架构设计与优化实践
  • Unity HDRP动态环境系统:从日夜循环到天气模拟的完整实现指南
  • AI工具如何革新数学研究:从符号计算到证明辅助
  • ClaudeCode桌面版国内增强版功能解析与开发实战
  • 单调队列,滑动窗口
  • 【Dify文本生成应用私密部署手册】:金融/医疗行业合规落地的4层安全加固方案(附审计通过率100%配置清单)
  • map文件找栈溢出
  • 国产替代加速,六岳微电子完成5亿元A轮融资
  • AI Remix工具推荐|合规曲风改编、老歌重制工具真实使用分享
  • 悟空AI CRM开源版:智能销售工具的技术架构与应用
  • 62.RAG-RAG问题的优化
  • ZFX山海证券:从公开信息出发,盘点服务体系与风险提示
  • Claude Code极简安装与高效使用指南
  • Kimi K3模型中文思维链优化:从英文主导到中文友好的实战指南
  • TI SoC时钟系统深度解析:PRCM模块与DPLLLJ架构实战指南
  • 如何高效运用Office.js构建企业级Office插件?
  • Cursor与OpenClaw:移动端AI编程工具的革命性突破
  • 2026年测评:靠谱的AI超级员工厂家揭秘
  • 网络攻防实践课程:从理论到实战的网络安全教学
  • 鸿蒙 韶非 UI 系列:关系数据库 @ohos.data.relationalStore,鸿蒙 SQLite 封装,结构化数据存取入门
  • AI音乐改编软件推荐,AI Remix与曲风重制实操指南
  • 别被and/or坑哭了!Python逻辑运算符,90%新手都踩过这雷
  • 嵌入式开发核心:GPIO中断配置与I2C总线通信实战详解
  • 制造业数字化落地完整流程:从调研、需求梳理到验收落地全链路|先业务后系统,避开 90% 项目烂尾坑
  • 2026年7月最新天梭西安小寨银泰百货维修保养服务电话 - 天梭服务中心