如何使用 Pandas 的分层索引

如何使用 Pandas 的分层索引

索引就像一个地址,这就是如何访问整个数据框架或系列的任何数据点。行和列都有索引,行的索引被称为索引,对于列,它是一般的列名。

分层索引

层次索引也被称为多索引,是将一个以上的列名设置为索引。在这篇文章中,我们将使用homelessness.csv文件。

# importing pandas library as alias pd 
import pandas as pd
  
# calling the pandas read_csv() function.
# and storing the result in DataFrame df
df = pd.read_csv('homelessness.csv')
  
print(df.head())

输出:

如何使用 Pandas 的分层索引?

在下面的数据框中,没有索引。

数据框架中的列:

# using the pandas columns attribute.
col = df.columns
print(col)

输出:

Index(['Unnamed: 0', 'region', 'state', ' individuals', 'family_members',
‘state_pop’],
dtype=’object’)

为了使列成为索引,我们使用pandas的Set_index()函数。如果我们想让一列成为索引,我们可以简单地在set_index()中以字符串的形式传递该列的名称。如果我们想做多索引或者分层索引,我们在set_index()中传递列名列表。

下面的代码演示了pandas中的分层索引:

# using the pandas set_index() function.
df_ind3 = df.set_index(['region', 'state', 'individuals'])
  
# we can sort the data by using sort_index()
df_ind3.sort_index()
  
print(df_ind3.head(10))

输出:

如何使用 Pandas 的分层索引?

现在,数据框架使用的是分层索引或多索引。

请注意,这里我们做了3列索引(’region’、’state’、’individuals’)。第一个索引’region’被称为level(0)索引,它位于索引层次结构的顶端,下一个索引’state’是level(1)索引,它位于主索引或level(0)索引之下,以此类推。因此,索引的层次结构就形成了,这就是为什么这被称为层次索引。

我们有时可能需要把一个列作为索引,或者我们想把索引列转换成正常的列,所以有一个pandas reset_index(inplace = True)函数,它使索引列成为正常的列。

在分层索引中选择数据或使用分层索引:

为了使用.loc()方法从数据框架中选择数据,我们必须在一个列表中传递索引的名称。

# selecting the 'Pacific' and 'Mountain' 
# region from the dataframe.
  
# selecting data using level(0) index or main index.
df_ind3_region = df_ind3.loc[['Pacific', 'Mountain']]
  
print(df_ind3_region.head(10))

输出:

如何使用 Pandas 的分层索引?

我们不能只使用level(1)索引来从数据框架中获取数据,如果我们这样做的话,会出现错误。我们只能使用级别(1)索引或内部索引与级别(0)或主索引与图元的帮助列表。

# using the inner index 'state' for getting data.
df_ind3_state = df_ind3.loc[['Alaska', 'California', 'Idaho']]
  
print(df_ind3_state.head(10))

输出:

如何使用 Pandas 的分层索引?

在图元列表的帮助下使用内部层次索引。

语法:

df.loc[[ ( level( 0 )  ,  level( 1 )  , level( 2 )  )  ]]
# selecting data by passing all levels index.
df_ind3_region_state = df_ind3.loc[[("Pacific", "Alaska", 1434),
                                    ("Pacific", "Hawaii", 4131),
                                    ("Mountain", "Arizona", 7259),
                                    ("Mountain", "Idaho", 1297)]]
df_ind3_region_state

输出:

如何使用 Pandas 的分层索引?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程