【pandas基础】--索引和轴

这篇具有很好参考价值的文章主要介绍了【pandas基础】--索引和轴。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

1. 索引(index)

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

1.1 默认索引

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

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

df

【pandas基础】--索引和轴

1.2 自定义索引

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

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

【pandas基础】--索引和轴
其中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[:, ["语文"]])

【pandas基础】--索引和轴

1.4 多级索引

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

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

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

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

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

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

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

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

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

【pandas基础】--索引和轴

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)

【pandas基础】--索引和轴
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)

【pandas基础】--索引和轴

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

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

3. 总结回顾

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

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

关于轴,因为pandas中的数据通常是二维的,所以数据可以沿着两个轴进行操作,分别是行轴和列轴。
行轴又称为轴0,它沿着行的方向进行操作,是数据的第一维度。
列轴又称为轴1,它沿着列的方向进行操作,是数据的第二维度。文章来源地址https://www.toymoban.com/news/detail-471086.html

到了这里,关于【pandas基础】--索引和轴的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python_Pandas】reset_index() 函数解析

    pandas.DataFrame.reset_index 1)函数作用: 重置索引或其level。 重置数据帧的索引,并使用默认索引。如果数据帧具有多重索引,则此方法可以删除一个或多个level。 2)参数: drop: 重新设置索引后是否将原索引作为新的一列并入DataFrame,默认为 False inplace: 是否在原DataFrame上改动,

    2024年02月07日
    浏览(34)
  • MySQL 8.0-索引- 不可见索引(invisible indexes)

    MySQL 8.0引入了不可见索引(invisible index),这个在实际工作用还是用的到的,我觉得可以了解下。 在介绍不可见索引之前,我先来看下invisible index是个什么或者定义。 我们依然使用拆开来看,然后再把拆出来的词放到MySQL上下文中去看。 不可见索引: 不可见:这个概念的关键

    2024年04月24日
    浏览(31)
  • MySQL索引(Index)

    数据库中的索引(Index)是一种数据结构,用于提高数据库查询性能和加速数据检索过程。索引可以看作是数据库表中某个或多个列的数据结构,类似于书中的目录,可以帮助数据库管理系统更快地定位和访问数据。它们是数据库优化的重要工具,特别是在处理大量数据时。

    2024年02月12日
    浏览(42)
  • 无涯教程-SQLite - Indexes(索引)

    索引有助于加快SELECT查询和WHERE子句的查询速度,但它影响UPDATE和INSERT语句的执行速度。 以下是 CREATE INDEX 的基本语法。 单列索引是仅基于一个表列创建的索引。基本语法如下- 唯一索引不仅用于提高性能,而且还用于数据完整性,唯一索引不允许将任何重复的值插入表中,

    2024年02月21日
    浏览(31)
  • Elasticsearch Index Monitoring(索引监控)之Index Stats API详解

    index_current 当前正在执行索引操作的个数。 index_failed 失败的索引操作次数。 delete_total 执行删除索引操作的次数。 delete_time_in_millis 删除索引操作总耗时。 delete_current 当前正在执行删除索引操作的个数。 noop_update_total 空更新总次数(检测到空更新的次数)。 is_throttled 索引是

    2024年04月09日
    浏览(42)
  • Hudi的核心概念 —— 索引(Index)

    Hudi 通过索引机制提供高效的 upserts,具体是将给定的 hoodie key(record key(记录键) + partition path)与文件 id(文件组)建立唯一映射。这种映射关系,数据第一次写入文件后保持不变, 所以,一个 FileGroup 包含了一批 record 的所有版本记录。Index 用于区分消息是 INSERT 还是 UPDAT

    2024年02月14日
    浏览(37)
  • ES-index索引配置

      index索引配置项使用。 index_options   Index 有4中配置,可以控制倒排索引的内容。   Text类型默认记录positions,其他默认docs。记录的内容越多,所占用的空间越大。   Index 有4中配置如下: docs   记录 doc id 。 freqs   记录 doc id 和 term frequencies 。 positions   记录

    2023年04月08日
    浏览(37)
  • elasticsearch index sorting ,索引排序

    es默认的搜索排序是_score,通过评分排序,但是对于大数据量,评分一致的情况下也还是会乱序,官方说可以使用_doc,但是这个索引插入顺序是按照分片存的,也就是为2 的顺序可能多个分片都存在。所以实测并不好用。博主在做大数据量的排序时候,使用 datatime字段排序 ,解

    2024年02月04日
    浏览(55)
  • 【已解决】ModuleNotFoundError: No module named ‘pandas.core.indexes.numeric‘

    问题描述         今天遇到这样一个问题:ModuleNotFoundError: No module named \\\'pandas.core.indexes.numeric。 原因分析和解决         先问一下chatgpt:ModuleNotFoundError: No module named\\\'pandas.core.indexes.numeric\\\'这是什么原因,怎么解决? 这个错误通常是由于版本不兼容或安装错误导致的。 最可能

    2024年04月16日
    浏览(46)
  • pandas---Series与DataFrame索引、切片;多层索引、索引的堆叠

    1. Series的索引和切片 1.1 Series的索引: 可以使用中括号取单个索引(此时返回的是元素类型),或者中括号里一个列表取多个索引(此时 返回的仍然是一个Series类型)。分为显示索引和隐式索引: (1) 显式索引: 使用index中的元素作为索引值 使用.loc[ ] (2) 隐式索引: 使用整

    2024年02月09日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包