Pandas pandas, 如何访问多级索引的数据框

Pandas pandas, 如何访问多级索引的数据框

在本文中,我们将讨论在 Pandas 中如何访问多级索引的数据框。PandasPython 中强大的数据分析库,能够对表格数据进行灵活高效的操作和分析。其中,多级索引是一种常用的数据结构,能够方便地存储并处理多维度的数据。

阅读更多:Pandas 教程

多级索引数据结构

首先,让我们来看一下多级索引的数据结构。多级索引可以理解为在一个数据框(DataFrame)中的多个列上设置索引,这样就能够在不同的方向上进行多层次的划分。例如,下面是一个简单的两层索引数据框:

import pandas as pd

data = {'class': ['A', 'A', 'B', 'B', 'B'],
        'name': ['Tom', 'Jerry', 'Jack', 'Rose', 'David'],
        'grade': [97, 83, 92, 88, 90]}
df = pd.DataFrame(data)
multi_df = df.set_index(['class', 'name'])
print(multi_df)

输出结果如下:

             grade
class name       
A     Tom       97
      Jerry     83
B     Jack      92
      Rose      88
      David     90

可以看到,数据框中的索引已经由 classname 两列组成,可以方便地进行按照班级和姓名的多层次分析。在数据框中,可以通过 .index 属性来访问当前使用的索引,例如:

print(multi_df.index)

输出结果如下:

MultiIndex([('A',   'Tom'),
            ('A', 'Jerry'),
            ('B',  'Jack'),
            ('B',  'Rose'),
            ('B', 'David')],
           names=['class', 'name'])

这样,我们就可以利用多级索引方便地进行数据的查询、筛选和汇总操作。

多级索引数据的访问

在多级索引的数据框中,访问数据的方式与普通的一维索引有所不同,需要使用 .loc.iloc 方法。例如,要访问某一班级某一个学生的成绩,可以使用如下的方式:

print(multi_df.loc[('A', 'Tom'), 'grade'])

输出结果为:

97

这里需要注意的是,由于 classname 等多个列上都有索引,因此在访问时需要将这些索引一并作为访问参数。另外,由于 .loc 方法使用了显式的列名来访问数据,因此也需要写明访问的列名 grade

如果要访问某一班级或某一学生的所有成绩,可以使用 .loc 方法的部分访问功能:

print(multi_df.loc['A'])

输出结果为:

      grade
name       
Tom     97
Jerry   83

这里只传递了第一维索引 class 上的值,因此输出的数据也只包含了班级为 A 的同学的成绩情况。

类似地,也可以使用 .iloc 方法来访问多级索引数据框中的数据。这里的访问方式需要在 .iloc 方法中使用行列的整数索引。例如,要访问第一行第一列的数据,可以使用如下方式:

print(multi_df.iloc[0, 0])

输出结果为:

97

利用 .iloc 方法也可以进行数据的部分访问:

print(multi_df.iloc[:2])

输出结果为:

             grade
class name       
A     Tom       97
      Jerry     83

这里的输出结果与使用 .loc 方法时相同,只不过在 .iloc 方法中使用了整数索引来进行访问。

多级索引数据的筛选

在多级索引数据框中,使用 .loc 方法可以方便地进行数据的筛选操作。例如,假设我们要筛选出班级为 B 的学生,可以使用如下的方式:

print(multi_df.loc['B'])

输出结果如下:

      grade
name       
Jack     92
Rose     88
David    90

这里不指定第二个参数,则 .loc 方法会默认访问所有的列,因此输出了班级为 B 的所有同学的所有成绩情况。

如果要进一步筛选,可以在 .loc 方法中传递一个布尔值数组作为选择条件。例如,要筛选出成绩在 90 分以上的学生,可以使用如下的方式:

print(multi_df.loc[multi_df['grade'] > 90])

输出结果如下:

            grade
class name      
A     Tom      97
B     Jack     92
B     David    90

这里使用了布尔值数组作为筛选条件,在多级索引数据框中同样适用。

多级索引数据的汇总

在多级索引数据框中,也可以方便地进行数据的汇总操作。此时可以使用 .groupby 方法来分组,并使用汇总函数对数据进行汇总。例如,要对不同班级的同学的成绩进行统计,可以使用如下的方式:

print(multi_df.groupby('class').mean())

输出结果如下:

          grade
class          
A          90.0
B          90.0

这里使用了 .groupby 方法将数据按照班级进行分组,然后使用 .mean() 方法求出了每个班级的平均成绩。

除了可以对整个数据框进行汇总之外,也可以对每个索引层进行汇总操作。例如,要按照班级进行成绩的统计,可以使用如下的方式:

print(multi_df.groupby('class')['grade'].mean())

输出结果如下:

class
A    90.0
B    90.0
Name: grade, dtype: float64

这里使用了 .groupby 方法对 class 索引进行分组,并只对 grade 列进行平均值汇总,因此输出结果只包含了成绩平均值的一列。

总结

在本文中,我们介绍了在 Pandas 中如何访问多级索引的数据框,包括多级索引数据结构、多级索引数据的访问、筛选和汇总操作。多级索引数据结构是一种方便存储和操作多维度数据的结构,可以使用 .loc.iloc 方法进行精确访问,也可以使用 .groupby 方法进行汇总操作。熟练掌握多级索引数据框的使用可以方便地进行数据处理和分析,是数据分析工作中的重要工具之一。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程