pandas---数据结构(Series、DataFrame 和 MultiIndex)创建方式、属性

news2025/4/20 11:41:35

1. 数据结构

Pandas中一共有三种数据结构,分别为:Series、DataFrame 和MultiIndex。

其中Series是一维数据结构,DataFrame是二维表格型数据结构,MultiIndex是三维数据结构。

1.1 Series

Series是一个类似于一维数组的数据结构,它能够保存任何类型的数据,比如整数、字符串、浮点

数等,主要由一组数据和与之相关的索引两部分构成。

 Series的创建:

# 导入pandas
import pandas as pd
pd.Series(data=None, index=None, dtype=None)

参数: data:传入的数据,可以是ndarray、list等

index:索引,必须是唯一的,且与数据的长度相等。如果没有传入索引参数,则默认会自动创建

一个从0-N的整数索引。

dtype:数据的类型

通过已有数据创建:

指定内容,默认索引:

pd.Series(np.arange(10))
# 运行结果
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
dtype: int64

指定索引:

pd.Series([6.7,5.6,3,10,2], index=[1,2,3,4,5])
# 运行结果
1 6.7
2 5.6
3 3.0
4 10.0
5 2.0
dtype: float64

通过字典数据创建:

color_count = pd.Series({'red':100, 'blue':200, 'green': 500, 'yellow':1000})
color_count
# 运行结果
blue 200
green 500
red 100
yellow 1000
dtype: int64

Series的属性

为了更方便地操作Series对象中的索引和数据,Series中提供了两个属性index和values。

color_count.index
# 结果
Index(['blue', 'green', 'red', 'yellow'], dtype='object')
color_count.values
# 结果
array([ 200, 500, 100, 1000])
# 也可以使用索引来获取数据:
color_count[2]
# 结果
100

1.2 DataFrame

DataFrame是一个类似于二维数组或表格(如excel)的对象,既有行索引,又有列索引。

行索引,表明不同行,横向索引,叫index,0轴,axis=0;

列索引,表名不同列,纵向索引,叫columns,1轴,axis=1。

DataFrame的创建:

# 导入pandas
import pandas as pd
pd.DataFrame(data=None, index=None, columns=None)

参数:index:行标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。

columns:列标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。

通过已有数据创建:

pd.DataFrame(np.random.randn(2,3))

# 构造行索引序列
subjects = ["语文", "数学", "英语", "政治", "体育"]
# 构造列索引序列
stu = ['同学' + str(i) for i in range(score_df.shape[0])]
# 添加行索引
data = pd.DataFrame(score, columns=subjects, index=stu)

DataFrame的属性:

shape、index、values、columns、T

data.shape
# 结果
(10, 5)
data.index
# 结果
Index(['同学0', '同学1', '同学2', '同学3', '同学4', '同学5', '同学6', '同学7', '同学8', '同学9'], dtype='object')
data.columns
# 结果
Index(['语文', '数学', '英语', '政治', '体育'], dtype='object')
data.values
array([[92, 55, 78, 50, 50],
[71, 76, 50, 48, 96],
[45, 84, 78, 51, 68],
[81, 91, 56, 54, 76],
[86, 66, 77, 67, 95],
[46, 86, 56, 61, 99],
[46, 95, 44, 46, 56],
[80, 50, 45, 65, 57],
[41, 93, 90, 41, 97],
[65, 83, 57, 57, 40]])
data.T

head(5):显示前5行内容

如果不补充参数,默认5行。填入参数N则显示前N行。

tail(5):显示后5行内容

如果不补充参数,默认5行。填入参数N则显示后N行。

DatatFrame索引的设置:

修改行列索引值:

stu = ["学生_" + str(i) for i in range(score_df.shape[0])]
# 必须整体全部修改
data.index = stu

重设索引:

reset_index(drop=False) 设置新的下标索引

drop:默认为False,不删除原来索引,如果为True,删除原来的索引值。

 以某列值设置为新的索引:

set_index(keys, drop=True) keys : 列索引名成或者列索引名称的列表

drop : boolean, default True。当做新的索引,删除原来的列。

df = pd.DataFrame({'month': [1, 4, 7, 10],
'year': [2012, 2014, 2013, 2014],
'sale':[55, 40, 84, 31]})
month sale year
0 1 55 2012
1 4 40 2014
2 7 84 2013
3 10 31 2014
# 以月份设置新的索引
df.set_index('month')
sale year
month
1 55 2012
4 40 2014
7 84 2013
10 31 2014
# 设置多个索引,以年和月份
df = df.set_index(['year', 'month'])
df
sale
year month
2012 1 55
2014 4 40
2013 7 84
2014 10 31

注意:通过刚才的设置,这样DataFrame就变成了一个具有MultiIndex的DataFrame。

1.3 MultiIndex

MultiIndex是三维的数据结构, 多级索引(也称层次化索引)是pandas的重要功能,可以在

Series、DataFrame对象上拥有2个以及2个以上的索引。

multiIndex的创建:

arrays = [[1, 1, 2, 2], ['red', 'blue', 'red', 'blue']]
pd.MultiIndex.from_arrays(arrays, names=('number', 'color'))
# 结果
MultiIndex(levels=[[1, 2], ['blue', 'red']],
codes=[[0, 0, 1, 1], [1, 0, 1, 0]],
names=['number', 'color'])

index属性;names:levels的名称;levels:每个level的元组值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/631664.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode】每日一题 -- 1170. 比较字符串最小字母出现频次 -- Java Version

题目链接:https://leetcode.cn/problems/compare-strings-by-frequency-of-the-smallest-character/ 1. 题解(1170. 比较字符串最小字母出现频次) 昨天的每日一题 2699. 修改图中的边权 有点难,研究了一会儿,学习了一…

文件讲解—【C语言】

目录 1.为什么使用文件 2. 什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 3. 文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 4. 文件的顺序读写 4.1 顺序读写函数介绍 4.2 对比一组函数 例子 例子 5.3 rewind 例子 6. 文本文件和二进制文件 测试代…

机器学习 day15(神经网络的工作原理,激活值a的公式)

1. 隐藏层的内部实现 如图通常来说,该模型一共有两层,不包括输入层(layer 0),第一层是隐藏层(layer 1),第二层是输出层(layer 2),我们可以用方括…

【力扣刷题 | 第三天】242.有效字母异位词 349 两个数组的交集

目录 1.242. 有效的字母异位词 2.349. 两个数组的交集 - 力扣(LeetCode)​​​​​​ 使用算法笔记: 总结: 1.242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意…

学习记录 -- Accurate and fast cell marker gene identification with COSG

文章目录 brief代码演示安装实操 个人感受 brief 单细胞数据分析当中,细胞聚类分群完成之后,我们希望得知每一个细胞类群是什么细胞,也就是细胞类型注释。 通常情况下,我们可以找到细胞类群间表达量存在差异的基因,我…

爆款视频生成器-视频批量剪辑系统源码开发分享

创建视频 该接口用于创建抖音视频(支持话题, 小程序等功能)。该接口适用于抖音。 使用限制 抖音的 OAuth API 以https://open.douyin.com/ 开头。挂载小程序请先完成注册开发者平台账号。创建抖音视频后, 会有一个审核过程, 期间只有自己可见。如果发…

【C/C++】带你快速掌握 使用—增强for(范围for循环)

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

Cefsharp-Winform114.2.100(5735)最新版本体验

版本说明: 官方仓库最新版本体验,114.2.100 (分支5735),支持MP3,WEBGL,不支持H264 视频体验H264参阅109版本(CSDN中搜索) Cefsharp109.1.110(winfrom)最新支持H264-MP3-MP4功能体验,导出pdf和下载方法有变调整_cef h264_久爱物联网的博客-CSDN博客 效果预览: 一…

LinuxC编程——高级文件操作

目录 一、查询文件信息1、stat2、stat fstat lstat区别 二、目录操作2.1 opendir2.2 readdir2.3 closedir例练习&#xff1a;实现ls操作 三、库3.1 库的定义3.2 库的分类3.2.1 静态库3.2.2 动态库 3.3 创建库3.3.1 静态库制作3.3.2 动态库制作 一、查询文件信息 1、stat int …

TLD7002学习笔记(二)-使用S32K144驱动TLD7002

文章目录 1. 前言2. 评估板简介3. 官方驱动3.1 官网驱动的介绍3.2 官方驱动的移植3.3 官方驱动的使用 4. 参考资料 1. 前言 本篇文章是TLD7002学习笔记的第二篇&#xff0c;主要是介绍如何使用S32K144驱动TLD7002-16ES。为此&#xff0c;笔者做了一套基于TLD7002-16ES的评估板…

重学Java的第一章

1.写在前面 今年的行情很差&#xff0c;差到很多人都没有办法找到工作&#xff0c;博主也是一个菜逼&#xff0c;找了一家小破公司&#xff0c;导致我那段时间很迷茫&#xff0c;也是也很焦虑&#xff0c;思考了很多&#xff0c;觉得我自己学的已经够多了&#xff0c;但是每一…

《Lua程序设计》--学习7

数据结构 数组 矩阵和多维数组 不规则数组&#xff1a;数组的数组&#xff0c;也就是所有元素均是另一个表的表 将两个索引合并为一个&#xff1a;声明一个长数组&#xff0c;然后根据 行数*行所拥有的元素个数列数来访问这样 链表 因为表是动态对象&#xff0c;所以在Lua语…

4.7 wait notify - 4.11 多把锁

目录 4.7 wait notify1、为什么需要wait2、原理之wait/notify3、API的介绍 4.8 wait notify 的正确姿势4.9 Park & Unpark4.10 重新理解线程状态转换4.11 多把锁 4.7 wait notify 1、为什么需要wait 当持有锁的线程因为某种条件不能满足不能执行时&#xff0c;由于其持有…

usb的传输类型

usb的传输类型 usb的四种传输类型: 批量传输同步传输(或等时传输)中断传输控制传输 其中的批量,同步,中断,三种传输中,每完整传输一次数据都称做一个事务(主要的数据传输是靠这三种传输) 事务的具体表现(批量,同步,中断) ​ 上图说说的输入事务是以主机来说的, 主机需要先发…

EMC学习笔记(三)滤波

滤波 1.概述2.滤波器件2.1 电阻2.2 电感2.3 电容2.4 铁氧体磁珠2.5 共模电感 3.滤波电路3.1 滤波电路的形式3.2 滤波电路的布局与布线 4.电容在PCB的EMC设计中的应用4.1 滤波电容的种类4.2 电容自谐振问题4.3 ESR对并联电容幅频特性的影响4.4 ESL对并联电容幅频特性的影响4.5 电…

JVM原理:JVM运行时内存模型(通俗易懂)

目录 前言正文虚拟机栈局部变量表操作数栈动态链接方法返回地址 本地方法栈本地方法存在的意义本地方法的调用 虚拟机堆堆结构Eden区Survivor区域老年代Old区常用参数指令 方法区常量池 运行时常量池方法信息类信息域信息JDK1.7前的方法区JDK1.7时的方法区JDK1.7后的方法区 程序…

Spring-2

DI 依赖注入 所谓依赖注入&#xff0c;是指程序运行过程中&#xff0c;如果需要调用另一个对象协助时&#xff0c;无须在代码中创建被调用者&#xff0c;而是依赖于外部的注入<bean id”” class”” p:属性名称-ref”另外受管 bean 的名称”/> IoC 实际上有 2 种实现 …

探索Python工具库合集:提高开发效率的秘密武器

前言&#x1f680;&#x1f680; 在开发过程中&#xff0c;笔者积累了许多实用的Python工具函数和模块&#xff0c;决定将它们整理成一个工具库集合&#xff0c;并与大家分享。本文将介绍笔者的Python工具库集合的核心功能和用途&#xff0c; 在日常的Python开发中&#xff0c;…

Selenium Python教程第6章:使用页面对象

6. Page Objects 页面对象 6.1 什么是页面对象模型(POM)&#xff1f; 页面对象模型(Page Objects Model, POM )是一组旨在表示一个或多个网页的类, 用1个类来保存1个网页上所有的元素&#xff0c;相似的网页可以重用此类。 1个网站通常有多个页面&#xff0c;可以用多个页面类…

(opencv)图像几何变换——缩放

图像缩放是指将图像的尺寸变小或变大的过程&#xff0c;也就是减少或增加源图像数据的像素个数。图像缩放一定程度上会造成信息的丢失&#xff0c;因此需要考虑适宜的方法进行操作。 下面介绍两种常用的图像缩放方法的原理及实现 1.基于等间隔提取图像缩放 等间隔提取图像缩…