📜  Pandas的布尔索引

📅  最后修改于: 2020-04-20 01:03:17             🧑  作者: Mango

在布尔索引中,我们将基于DataFrame中数据的实际值而非其行/列标签或整数位置来选择数据子集。在布尔索引中,我们使用布尔向量来过滤数据。


布尔索引是一种索引类型,它使用DataFrame中数据的实际值。在布尔索引中,我们可以通过四种方式过滤数据:

  • 使用布尔索引访问DataFrame
  • 将布尔掩码应用于数据框
  • 根据列值屏蔽数据
  • 根据索引值屏蔽数据

访问带有布尔索引的数据框:为了访问带有布尔索引的数据,我们必须创建一个数据框,其中数据框的索引包含布尔值“ True”或“ False”。例如

import pandas as pd
# 列表字典
dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"],
        'degree': ["MBA", "BCA", "M.Tech", "MBA"],
        'score':[90, 40, 80, 98]}
df = pd.DataFrame(dict, index = [True, False, True, False])
print(df)

输出:



现在,我们已经创建了一个具有布尔索引的数据框,该用户可以在布尔索引的帮助下访问该数据框。用户可以使用三个函数来访问一个数据帧,它们是:.loc[].iloc[].ix[]

使用以下方法访问具有布尔索引的数据框 .loc[]

为了使用布尔索引来访问数据框的函数.loc[],我们只需在.loc[]函数中传递布尔值(True或False)。

# 导入pandas
import pandas as pd
# 列表字典
dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"],
        'degree': ["MBA", "BCA", "M.Tech", "MBA"],
        'score':[90, 40, 80, 98]}
# 用布尔索引创建一个数据框
df = pd.DataFrame(dict, index = [True, False, True, False])
# accessing a dataframe using .loc[] function
print(df.loc[True])

输出:


使用以下方法访问具有布尔索引的数据框 .iloc[]

为了使用来访问数据帧.iloc[],我们必须在iloc[]函数中传递布尔值(True或False),但是iloc[]函数仅接受整数作为参数,因此会引发错误,因此我们仅在iloc[]函数中传递整数时才能访问数据框
代码1:

# 导入pandas
import pandas as pd
# 列表字典
dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"],
        'degree': ["MBA", "BCA", "M.Tech", "MBA"],
        'score':[90, 40, 80, 98]}
# 用布尔索引创建一个数据框
df = pd.DataFrame(dict, index = [True, False, True, False])
# 使用.iloc []函数访问数据框
print(df.iloc[True])

输出:

TypeError

代码2:

# 导入pandas
import pandas as pd
# 列表字典
dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"],
        'degree': ["MBA", "BCA", "M.Tech", "MBA"],
        'score':[90, 40, 80, 98]}
# 用布尔索引创建一个数据框
df = pd.DataFrame(dict, index = [True, False, True, False])
# 使用.iloc []函数访问数据框
print(df.iloc[1])

输出:


使用以下方法访问具有布尔索引的数据框 .ix[]

为了使用来访问数据帧.ix[],我们必须将布尔值(True或False)和整数值传递给.ix[]函数,众所周知,.ix[]函数是.loc[]and .iloc[]函数的混合。
代码1

# 导入pandas
import pandas as pd
# 列表字典
dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"],
        'degree': ["MBA", "BCA", "M.Tech", "MBA"],
        'score':[90, 40, 80, 98]}
# 用布尔索引创建一个数据框
df = pd.DataFrame(dict, index = [True, False, True, False])
# 使用.ix []函数访问数据框
print(df.ix[True])

输出:



代码#2:

# 导入pandas
import pandas as pd
# 列表字典
dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"],
        'degree': ["MBA", "BCA", "M.Tech", "MBA"],
        'score':[90, 40, 80, 98]}
# 用布尔索引创建一个数据框
df = pd.DataFrame(dict, index = [True, False, True, False])
# 使用.ix []函数访问数据框
print(df.ix[1])

输出:



将布尔掩码应用于数据框:
在数据帧中,我们可以应用布尔掩码以执行我们可以使用__getitems__[]访问的操作。我们可以通过提供与数据帧中包含的长度相同的True和False列表来应用布尔掩码。当我们应用布尔掩码时,它将仅打印在其中传递了布尔值True的数据帧。要下载“ nba1.1 ” CSV文件,请单击此处
代码1:

# 导入pandas
import pandas as pd
# 列表字典
dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"],
        'degree': ["MBA", "BCA", "M.Tech", "MBA"],
        'score':[90, 40, 80, 98]}
df = pd.DataFrame(dict, index = [0, 1, 2, 3])
print(df[[True, False, True, False]])

输出:



代码#2:

# 导入pandas
import pandas as pd
# 从csv文件制作数据帧
data = pd.read_csv("nba1.1.csv")
df = pd.DataFrame(data, index = [0, 1, 2, 3, 4, 5, 6,
                                 7, 8, 9, 10, 11, 12])
df[[True, False, True, False, True,
    False, True, False, True, False,
                True, False, True]]

输出:



掩蔽基于列的值的数据:
在一个数据帧,我们可以基于列值的数据在滤波器进行筛选数据,我们可以在数据帧使用不同的算子等施加一定的条件== > <<=>=。当我们将这些运算符应用于数据帧时,它将产生一系列“真与假”。要下载“ nba.csv” CSV,请单击此处
代码1:

# 导入pandas
import pandas as pd
# 列表字典
dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"],
        'degree': ["BCA", "BCA", "M.Tech", "BCA"],
        'score':[90, 40, 80, 98]}
# 创建一个数据框
df = pd.DataFrame(dict)
# 使用比较运算符过滤数据
print(df['degree'] == 'BCA')

输出:



代码#2:

# 导入pandas
import pandas as pd
# 从csv文件制作数据帧
data = pd.read_csv("nba.csv", index_col ="Name")
# 使用大于运算符过滤数据
print(data['Age'] > 25)

输出:



掩蔽基于索引值的数据:
在一个数据帧,我们可以使用过滤器基于列值的数据来过滤数据,我们可以创建使用不同的操作者等基于该索引值的掩模 ==><等…。要下载“ nba1.1 ” CSV文件,请单击此处
代码1:

# 导入pandas
import pandas as pd
# 列表字典
dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"],
        'degree': ["BCA", "BCA", "M.Tech", "BCA"],
        'score':[90, 40, 80, 98]}
df = pd.DataFrame(dict, index = [0, 1, 2, 3])
mask = df.index == 0
print(df[mask])

输出:



代码2:

# 导入pandas
import pandas as pd
# 从csv文件制作数据帧
data = pd.read_csv("nba1.1.csv")
# 给数据框一个索引
df = pd.DataFrame(data, index = [0, 1, 2, 3, 4, 5, 6,
                                 7, 8, 9, 10, 11, 12])
# 根据指标值过滤数据
mask = df.index > 7
df[mask]

输出: