【pandas基础】--索引和轴

pandas,基础,索引 · 浏览次数 : 137

小编点评

**索引(index)** * pandas 中用于访问数据的关键,与字典类似。 * 可以根据标签访问数据,例如通过索引查找和访问数据。 * 两种类型的索引:行标签和列标签。 * 行标签用于访问行数据,通常用于时间序列数据或唯一标识符。 * 列标签用于访问列数据,通常用于表示变量或特征。 **轴(axis)** * 指示数据表中的维度,可以理解为行和列。 * 通过指定轴,我们可以对数据进行切片、筛选、聚合等操作。 **应用场景** 1. **访问和选择数据**:使用索引访问和选择数据。 2. **多级索引**:在一个DataFrame中用多级索引表示数据的多维结构。 3. **删除数据**:按行或按列删除数据,需要指定axis属性。 4. **统计数据**:通过axis参数指定跨行还是跨列进行统计。 **其他** * 默认索引默认情况下,行标签和列标签都是从0开始的数字。 * 索引的应用可以帮助我们更好地访问和选择数据,以及进行数据分析。

正文

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,它沿着列的方向进行操作,是数据的第二维度。

与【pandas基础】--索引和轴相似的内容:

【pandas基础】--索引和轴

在`pandas`中,索引(`index`)是用于访问数据的关键。 它为数据提供了基于标签的访问能力,类似于字典,可以根据标签查找和访问数据。 而`pandas`的轴(`axis`)是指数据表中的一个维度,可以理解为表格中的行和列。 通过指定轴,我们可以对数据进行切片、筛选、聚合等操作。 下面简要介

#Python基础 pandas索引设置

一:XMIND 二:设置索引 示例数据,假设我们有一个DataFrame对象,如下: import pandas as pd df = pd.DataFrame({ "name": ["Alice", "Bob", "Charlie", "David"], "age": [25, 30, 35, 4

#Python 文本包含函数,pandas库 Series.str.contains 函数

一:基础的函数组成 ’’‘Series.str.contains(pat,case = True,flags = 0,na = nan,regex = True)’’'测试pattern或regex是否包含在Series或Index的字符串中。 返回布尔值系列或索引,具体取决于给定模式或正则表达式是

【pandas基础】--概述

Pandas是一个开源的Python数据分析库。 它提供了快速,灵活和富有表现力的数据结构,旨在使数据清洗和分析变得简单而快速。 Pandas是基于NumPy数组构建的,因此它在许多NumPy函数上提供了直接的支持。它还提供了用于对表格数据进行操作的数据结构,例如Series和DataFrame。

【pandas基础】--数据读取

数据读取是第一步,只有成功加载数据之后,后续的操作才有可能。 pandas可以读取和导入各种数据格式的数据,如CSV,Excel,JSON,SQL,HTML等,不需要手动编写复杂的读取代码。 1. 各类数据源 pandas提供了导入各类常用文件格式数据的接口,这里介绍3种最常用的加载数据的接口。 1

【pandas基础】--核心数据结构

pandas中用来承载数据的两个最重要的结构分别是: Series:相当于增强版的一维数组 DataFrame:相当于增强版的二维数组 pandas最大的优势在于处理表格类数据,如果数据维度超过二维,一般我们会使用另一个 python的库 numpy。 本篇主要介绍这两种核心数据结构的创建方式。 1

【pandas基础】--数据检索

pandas的数据检索功能是其最基础也是最重要的功能之一。 pandas中最常用的几种数据过滤方式如下: 行列过滤:选取指定的行或者列 条件过滤:对列的数据设置过滤条件 函数过滤:通过函数设置更加复杂的过滤条件 本篇所有示例所使用的测试数据如下: import pandas as pd import

【pandas基础】--数据整理

pandas进行数据整理的意义在于,它是数据分析、数据科学和机器学习的前置步骤。 通过数据整理可以提前了解数据的概要,缺失值、重复值等情况,为后续的分析和建模提供更为可靠的数据基础。 本篇主要介绍利用pandas进行数据整理的各种方法。 1. 数据概要 获取数据概要信息可以帮助我们了解数据的基本情况

【pandas基础】--数据修改

pandas 作为一种常用的数据分析工具,提供了广泛的数据修改方法。 既可以针对行或者列的数据进行修改,也可以对具体单个元素进行修改,还可以基于条件选择要修改的行或者列的数据。 1. 增加数据 1.1 增加行数据 pandas的DataFrame增加一行或者多行数据之前是使用append方法。 im

【pandas基础】--数据拆分与合并

数据集拆分是将一个大型的数据集拆分为多个较小的数据集,可以让数据更加清晰易懂,也方便对单个数据集进行分析和处理。 同时,分开的数据集也可以分别应用不同的数据分析方法进行处理,更加高效和专业。 数据集合并则是将多个数据集合并成一个大的数据集,可以提供更全面的信息,也可以进行更综合的数据分析。 同时,数