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

001-Pandas的数据结构

Pandas的数据结构

Pandas(Python Data Analysis Library)是基于NumPy
的一种工具,该工具是为了解决数据分析任务而创建的。Pandas
纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。它是使Python成为强大而高效的数据分析环境的重要因素之一。

Pandas专用于数据预处理和数据分析的Python第三方库,最适合处理大型结构化表格数据.

Pandas有三大数据结构,Series、DataFrame以及Panel。

  • Series(一维数据)
  • DataFrame(二维数据)
  • Panel(三维结构数据/面板数据)

注释:对于Panel,会很少使用,通常会使用MultiIndex这种结构解决三维数据表示问题

1、Series

Series 是 Pandas 中最基础的一维数据结构,类似于带标签的数组或字典。它是构建 DataFrame 的基础(DataFrame
可以看作是由多个 Series 组成的)。

Series 由两部分组成:

  • 索引(index):标签,用于标识数据.
  • 数据值(values):可以是任何 NumPy 支持的数据类型

Series 的基本特性:

  1. 一维数据结构:类似于 Python 列表或 NumPy 数组,但功能更强大
  2. 带索引的数组:每个元素都有对应的标签(索引)
  3. 可以存储任何数据类型:整数、字符串、浮点数、Python对象等
  4. 大小不可变:创建后不能改变大小(但可以修改内容)

1.1、Series的结构

import pandas as pd
#1.1从列表创建,仅有数据列表即可产生最简单的Series
s = pd.Series([1, 3, 5, 7, 9])   0    1		# 仅有数据列表即可产生最简单的Series 
1    3		# 左侧为索引,右侧是数据
2    5
3    7
4    9
dtype: int64# 获取索引
s.index
RangeIndex(start=0, stop=5, step=1)# 获取数据
s.values
array([1, 3, 5, 7, 9])

1.2、Series的创建

仅有数据列表即可产生最简单的Series

例如上面的代码

从字典创建Series(字典的键会成为索引)
data = {'a': 1, 'b': 2, 'c': 3}
s = pd.Series(data)
s
运行结果:
a    1
b    2
c    3
dtype: int64
指定索引创建Series
s = pd.Series([1, 2, 3], index=['x', 'y', 'z'])
s
运行结果:
x    1
y    2
z    3
dtype: int64
使用标量值创建Series(所有值相同)
s = pd.Series(5, index=['a', 'b', 'c'])
s
运行结果:
a    5
b    5
c    5
dtype: int64

1.3、根据标签索引查询数据

# 1.创建一个带有自定义索引的pandas Series# 数据包含混合类型:[整数1, 字符串'a', 浮点数5.2, 整数7]# 索引为:['d', 'b', 'c', 'a']
s2 = pd.Series([1,'a',5.2,7],index=['d','b','c','a'])# 输出:
d      1    → 索引'd'对应值1
b      a    → 索引'b'对应字符串'a'
c    5.2    → 索引'c'对应浮点数5.2
a      7    → 索引'a'对应值7
dtype: object → 由于包含混合类型,整体类型为object# 2.通过索引标签'a'访问Series中的单个元素
s2['a']  # 返回索引'a'对应的值: #7# 3.查看单个元素的数据类型
type(s2['a'])   ## int → 因为值7是整数类型# 4.通过索引标签列表访问多个元素
s2[['b','a']]
# 输出:
b    a    → 索引'b'对应字符串'a'   #返回一个新的Series,包含索引'b'和'a'对应的值
a    7    → 索引'a'对应值7
dtype: object 	#新Series的类型仍然是object# 5.查看多元素访问结果的数据类型
type(s2[['b','a']])
输出:
pandas.core.series.Series  # 返回的是一个Series对象,而不是单个值

2、DataFrame

DataFrame是pandas库中最重要、最常用的数据结构,它是一个二维的、大小可变的、可以包含异构类型数据的表格型数据结构,类似于Excel表格或SQL数据库中的表。

DataFrame的基本特性:

  • 二维表格结构:由行和列组成,既有行索引也有列索引
  • 列可以包含不同类型的数据:数值、字符串、布尔值等
  • 大小可变:可以动态添加/删除行或列
  • 强大的数据操作功能:排序、筛选、分组、聚合等
# 创建一个字典数据,每个键对应一个列名,值是该列的数据列表。即:使用字典数据创建DataFrame
data = {'名称': ['张三', '李四', '王麻子', '刘二'],  # 姓名列,包含4个字符串'年龄': [25, 32, 18, 47],                 # 年龄列,包含4个整数'城市': ['苏州', '杭州', '深圳', '重庆'],    # 城市列,包含4个字符串'分数': [85, 90, 78, 92]                  # 分数列,包含4个整数
}df = pd.DataFrame(data)
df
# 显示DataFrame的内容输出,自动生成默认的行索引:0, 1, 2, 3名称  年龄  城市  分数
0   张三  25  苏州  85
1   李四  32  杭州  90
2   王麻  18  深圳  78  
3   刘二  47  重庆  92# 查看DataFrame中各列的数据类型
df.dtypes名称    object  → 字符串类型
年龄     int64  → 64位整数类型
城市    object  → 字符串类型
分数     int64  → 64位整数类型
dtype: object# 查看DataFrame的列名(列索引)
df.columns
Index(['名称', '年龄', '城市', '分数'], dtype='object')  #返回一个Index对象,包含所有列名# 查看DataFrame的行索引 
df.index
RangeIndex(start=0, stop=4, step=1)   #表示行索引从0开始,到4结束(不包括4),步长为1,即索引为[0, 1, 2, 3]

DataFrame中查询出Series

  • 如果只查询一行、一列,返回的是pd.Series
  • 如果查询多行、多列,返回的是pd.DataFrame
# 创建一个字典数据,包含4个键值对,每个键对应一个列名,值是该列的数据列表
data = {'名称': ['张三', '李四', '王麻', '刘二'],  # 姓名列'年龄': [25, 32, 18, 47],                 # 年龄列  '城市': ['苏州', '杭州', '深圳', '重庆'],    # 城市列'分数': [85, 90, 78, 92]                  # 分数列
}# 使用字典数据创建pandas DataFrame
df = pd.DataFrame(data)# 1. 查询列# 1.1 查询单列 - 使用方括号和列名字符串
# 返回一个pd.Series对象,包含该列的所有数据
df["名称"]0     张三
1     李四  
2     王麻
3     刘二
Name: 名称, dtype: object  # Name显示列名,dtype显示数据类型# 查看单列查询结果的类型type(df['名称'])
pandas.core.series.Series  # 单列查询返回Series对象# 1.2 查询多列 - 使用方括号和列名列表
df[["名称","年龄"]]名称  年龄
0   张三  25      # 返回一个DataFrame对象,包含指定的多列数据
1   李四  32  
2   王麻  18
3   刘二  47# 查看多列查询结果的类型
# 返回:pandas.core.frame.DataFrame → 多列查询返回DataFrame对象
type(df[["名称","年龄"]])
pandas.core.frame.DataFrame# 2. 查询行# 2.1 查询单行 - 使用loc和行索引
# 返回一个pd.Series对象,包含该行的所有数据
df.loc[1]
# 输出:
# 名称    李四
# 年龄    32
# 城市    杭州
# 分数    90
# Name: 1, dtype: object  # Name显示行索引,dtype显示数据类型# 查看单行查询结果的类型
# 返回:pandas.core.series.Series → 单行查询返回Series对象
type(df.loc[1])# 2.2 查询多行 - 使用loc和切片操作
# 返回一个DataFrame对象,包含指定的多行数据
# 注意:loc切片是包含结束位置的,即包含索引1到3的所有行
df.loc[1:3]名称  年龄  城市  分数
1   李四  32  杭州  90
2   王麻  18  深圳  78
3   刘二  47  重庆  92# 查看多行查询结果的类型
# 返回:pandas.core.frame.DataFrame → 多行查询返回DataFrame对象
type(df.loc[1:3])

关键区别总结

特性选择单列 df['姓名']选择多列 df[['姓名', '年龄']]
语法单中括号 + 字符串双中括号 + 列表
返回值Series (一维)DataFrame (二维)
用途获取单独一列的数据获取一个由多列组成的子集表格
类比从Excel中复制一列从Excel中复制几列到一个新工作表

为什么这个区别很重要?

因为Series和DataFrame有不同的方法和属性。例如,你可以对Series计算平均值(如果它是数字类型),但对DataFrame你可以进行更复杂的操作,比如同时处理多个列的关系。


文章转载自:

http://nSUu0LhQ.mdhdr.cn
http://rO1dqd8a.mdhdr.cn
http://1Kzm5tfo.mdhdr.cn
http://nhC0QvnJ.mdhdr.cn
http://uSoLlxn8.mdhdr.cn
http://uGxu7uTF.mdhdr.cn
http://usdnu4Nz.mdhdr.cn
http://ZSQKROb9.mdhdr.cn
http://z0MoQ0Qz.mdhdr.cn
http://2tmFON8f.mdhdr.cn
http://d4NxcISj.mdhdr.cn
http://HwDv8d9m.mdhdr.cn
http://ngasCnYt.mdhdr.cn
http://G5EdNjVA.mdhdr.cn
http://1qp2Gppe.mdhdr.cn
http://jnqQ9FXD.mdhdr.cn
http://qF6P9Pna.mdhdr.cn
http://5uMGzF8w.mdhdr.cn
http://VZOUPaMU.mdhdr.cn
http://0Eg7a1Fk.mdhdr.cn
http://yTizMPdf.mdhdr.cn
http://x5zyrzVd.mdhdr.cn
http://rAkp49jk.mdhdr.cn
http://XGkmGuT8.mdhdr.cn
http://FB1E8G5x.mdhdr.cn
http://HorXNJ76.mdhdr.cn
http://9qdtpcjQ.mdhdr.cn
http://WsbYrof5.mdhdr.cn
http://rBrtS8Hp.mdhdr.cn
http://DgdvjJeU.mdhdr.cn
http://www.dtcms.com/a/372448.html

相关文章:

  • QProxyStyle类中的drawPrimitive函数的作用
  • LangChain4j RAG流程全解析
  • 【应用案例】AI 给医用过滤器 “找茬”:3 大难点 + 全流程解决方案
  • VBA之Word应用第四章第二节:段落集合Paragraphs对象(二)
  • Git 工作流与分支管理实战:rebase vs merge 对比、冲突解决、规范 Commit Message 与主干稳定性最佳实践
  • 《沈南鹏传 - 做最擅长的事》(上篇)天才的成长之路-读书笔记
  • C++笔记之同步信号量、互斥信号量与PV操作再探(含软考题目)
  • C语言运算符
  • 知识库AI问答重新设计,新增文档引用功能,zyplayer-doc 2.5.3 发布啦!
  • 从Sonnet到Opus:一次解决RAG知识库流式输出难题的探索
  • 【Javaweb学习|实训总结|Week1】html基础,CSS(选择器、常用样式、盒子模型、弹性盒布局、CSS定位、动画),js(基本类型、运算符典例)
  • PPP协议概念及流程
  • pytorch的两大法宝函数
  • JAVA:IO流非文本形式文件拷贝
  • Tesseract,Tika 解析文件内容保存到ES
  • Redis中的Set数据类型
  • 2025算法八股——深度学习——优化器小结
  • Hash桶的讲解
  • [SWERC 2020] Safe Distance题解
  • 【.Net技术栈梳理】01-核心框架与运行时(CLR)
  • 《十字军东征》游戏出现0xc0000022报错的解决办法
  • 个人博客系统_测试报告
  • 第四项修炼:多元权衡——告别“单点最优”,在矛盾中编织和谐
  • Claude 4深度解析:AI编程新王者,双模型重塑行业标杆
  • 个人pytorch安装配置:cuda12.6 python3.13
  • 全栈经验之谈系列:(阶段一)架构思维与全局观
  • 【CMake】变量作用域3——目录作用域
  • 【系统分析师】第10章-关键技术:系统规划与分析(核心总结)
  • PINN驱动的高阶偏微分方程求解MATLAB代码
  • synchronized同步机制