首页 > 其他分享 >【pandas基础】--索引和轴

【pandas基础】--索引和轴

时间:2023-06-04 21:22:04浏览次数:30  
标签:index -- 标签 索引 df pandas axis

pandas中,索引(index)是用于访问数据的关键。
它为数据提供了基于标签的访问能力,类似于字典,可以根据标签查找和访问数据。

pandas的轴(axis)是指数据表中的一个维度,可以理解为表格中的行和列。
通过指定轴,我们可以对数据进行切片、筛选、聚合等操作。

下面简要介绍pandas索引的相关应用场景。

1. 索引(index)

pandas中有两种类型的索引:行标签和列标签。
行标签是用于访问行数据的,通常用于表示时间序列数据或唯一标识符。
列标签是用于访问列数据的,通常用于表示变量或特征。

1.1 默认索引

默认情况下,行标签列标签都是从0开始的数字。

df = pd.DataFrame(
    [
        ["小红", "小明", "小汪"],
        [99, 95, 86],
        [100, 88, 94],
        [95, 99, 86],
    ],
)

df

image.png

1.2 自定义索引

为了更好的识别,可以定义行列的标签,行标签可以用各人的学号,列标签用各列的实际含义。

df.index = ["12", "3", "9"]
df.columns = ["姓名", "语文", "数学", "英语"]
df

image.png
其中index用来设置行标签,columns用来设置列标签。

1.3 索引的应用

索引最大的作用是访问和选择数据,之前学习的loc函数就是通过索引来访问和选择行列数据的。

df = pd.DataFrame(
    [
        ["小红", 99, 100, 95],
        ["小明", 95, 88, 94],
        ["小汪", 86, 94, 86],
    ],
)

df.index = ["12", "3", "9"]
df.columns = ["姓名", "语文", "数学", "英语"]

print(df.loc[["12"], :])
print(df.loc[:, ["语文"]])

image.png

1.4 多级索引

pandas中,可以在一个DataFrame中用多级索引来表示数据的多维结构。
多级索引可以理解为将数据分组,并按照分组的方式进行索引。
也就是说,在多级索引中,每个索引值可以由两个或更多的标签组成,这些标签可以对应于多个维度的数据。

多级索引的主要优点是可以更好地组织和查询数据。
例如,可以通过多级索引轻松地对数据进行分组和聚合操作,在保留数据完整性的同时可以获得更多的统计信息。

df = pd.DataFrame(
    {
        "姓名": ["小红", "小明", "小红", "小明"],
        "年级": ["初二", "初一", "初一", "初二"],
        "成绩": [100, 88, 94, 99],
    },
)

df.set_index(["姓名", "年级"]).sort_index()
df.set_index(["年级", "姓名"]).sort_index()

image.png
如上所示,通过多级索引,可以将行列数据转换为树形结构,让同样的数据表达不同的含义。
左边的数据表达的是每个同学在各个年级的成绩;
右边的数据表达的是每个年级不同同学的成绩。

根据多级索引选取数据也很简单。

df_grade = df.set_index(["年级", "姓名"]).sort_index()

# 获取初一所有学生的成绩数据
df_grade.loc["初一", :]

# 获取初二小明的成绩
df_grade.loc["初二", :].loc["小明":, :]

image.png

2. 轴(axis)

pandas中,有两个轴:0轴代表的是行方向(即纵向),1轴代表的是列方向(即横向)。

2.1 删除数据时

删除行列数据时,除了指定行列的标签,还需要指定axis属性,表明是按行还是按列删除。

df = pd.DataFrame(
    {
        "数学": [100, 88, 94],
        "语文": [98, 80, 86],
        "英语": [95, 91, 86],
    },
    index=["小红", "小明", "小汪"],
)

# 按行删除 axis=0
df.drop("小明", axis=0)

# 按列删除 axis=1
df.drop("数学", axis=1)

image.png
PS. axis 默认值是0,所以,按行删除时不指定 axis 也是可以的。

2.2 统计数据时

统计数据时也一样,通过axis参数指定跨行还是跨列来统计。
假如我们要统计总分:

df = pd.DataFrame(
    {
        "数学": [100, 88, 94],
        "语文": [98, 80, 86],
        "英语": [95, 91, 86],
    },
    index=["小红", "小明", "小汪"],
)

# 跨行统计,各门学科总分
df.sum(axis=0)

# 跨列统计,各个学生总分
df.sum(axis=1)

image.png

这里关于 axis 的理解,有些朋友可能会有点疑惑。
我们看到上面的示例中 axis=0 时,统计的是各个学科的总分,感觉像是按列统计,并不是按行统计的。
其实是这样的,axis 表示的是行列的方向,axis=0 时,表示按行的方向统计,所以是把每行的数据加起来,得到的就是各门学科的总成绩。

同样,axis=1时,按照列的方向统计,得到的就是每个学生的总成绩了。

3. 总结回顾

本篇介绍了pandas中两个重要的概念,索引

关于索引,pandas的索引有默认索引,自定义索引以及多级索引。
默认索引是pandas自动生成的整数形式的索引,它默认会被创建。
自定义索引指的是用户自己定义的一种标签形式的索引,可以是数字、字符串或者日期等类型。
多级索引可以让我们用不同的角度看待数据。

关于轴,因为pandas中的数据通常是二维的,所以数据可以沿着两个轴进行操作,分别是行轴和列轴。
行轴又称为轴0,它沿着行的方向进行操作,是数据的第一维度。
列轴又称为轴1,它沿着列的方向进行操作,是数据的第二维度。

标签:index,--,标签,索引,df,pandas,axis
From: https://www.cnblogs.com/wang_yb/p/17456366.html

相关文章

  • 课程实践项目设计
    1.用户故事;作为每天都在上课的大学生,中午排队买饭就是个巨大的折磨,还要防止别人插队。这时候他们就需要一个点餐软件。所以我们为我们的咸肉饭店做了一个咸肉饭点餐软件。它主要能在线上提前点好饭然后在下课后根据单号取饭。我们的优势就是其他家没有点餐软件。2.项目;我们先定......
  • 实验二——验收三
    验收三1.你们小组项目中为了保护数据资产用了什么密码算法?2.如果用到了对称算法,提交相关生成密钥和对数据加密的代码截图3.如果用到了非对称算法,提交相关生成密钥对和对数据加密,签名验签的代码截图4.如果用到了其他算法,提交相关的代码截图1.算法使用①口令哈希值:sm3......
  • 计算机网络 实验一
    实验一vlan的创建与划分一、实验目的: 1.了解vlan的工作原理;2.学习基于端口划分vlan的方法;3.了解跨交换机的相同vlan之间的通信;4.进一步学习交换机端口的配置命令。二、实验原理:VLAN(VirtualLocalAreaNetwork)是一种虚拟局域网技术,允许将物理网络划分为逻辑上独立的多个虚拟网......
  • 智能排班系统Web端使用说明
    项目背景:我们的产品智能排班系统是为了解决用户需要关注掌握特定技能的员工,并将他们安排到与技能最匹配的任务上,有效的评估劳动力需求、最大化员工工作效率、最大化精简用工成本的痛苦,他们需要是将劳动力与业务需求最优化匹配,将合适数量的员工在合适的时间放在合适的位置上,但......
  • [ARC085F] NRE
    [ARC085F]NRE首先这道题要先将区间按左端点排序。我们先不考虑区间重叠的情况。令\(f_i\)表示前\(i\)个区间已经决策好是否选择,而且第\(i\)个区间必选的情况下的最小不同数。再令\(sum_i\)表示前\(i\)个数中\(1\)的个数。枚举一个区间\(j<i\),可以根据区间\([l_j,......
  • 云锵投资 2023 年 5 月简报
    2023年5月云锵投资团队月报:摘要本月量化基金策略业绩:中;本月量化股票策略业绩:良;(优良中差,表明全国排名四位分)云锵投资概述云锵量化投资包含量化投基、量化投股。量化投基使用自动化程序进行量化选基。其中包含了多个策略。本集合投资目标是通过选择优质基金,来获取更高的......
  • 微分方程的应用
    一般的解题步骤:1.根据实际要求确定要研究的量2,找出这些量满足的规律并列出方程3,根据题给信息列出初始条件几何问题做题变化率问题建模的关键:抓住**某个量对于某个量的变化率为多少**这一条件,用导数表示出这一条件,得到微分方程初始条件一般是确定比例系数之类的东西,并且要......
  • 第三次冲刺
    这是我的团队项目的第三次冲刺,由于没有及时发出,复盘之后补发的层叠样式表(CascadingStyleSheets,简称CSS)是一种用于描述网页中元素样式和布局的标记语言。它与HTML(超文本标记语言)一起被用于创建和设计网页,为网页提供美观的外观和一致的布局。CSS的主要功能是将样式与网页内容分......
  • 【安全学习之路】Day18
    ......
  • Android学习
    2023-06-04;1.MainActivity.kt;packagecom.example.greetingcardimportandroid.os.Bundleimportandroidx.activity.ComponentActivityimportandroidx.activity.compose.setContentimportandroidx.compose.foundation.layout.fillMaxSizeimportandroidx.compose......