📜  使用 Pandas 索引和选择数据

📅  最后修改于: 2022-05-13 01:54:32.855000             🧑  作者: Mango

使用 Pandas 索引和选择数据

Pandas 中的索引:
pandas 中的索引意味着只需从 DataFrame 中选择特定的数据行和列。索引可能意味着选择所有行和一些列,一些行和所有列,或每行和列中的一些。索引也可以称为子集选择

让我们看看 Pandas 中的一些索引示例。在本文中,我们使用“ nba.csv ”文件下载 CSV,请单击此处。

选择一些行和一些列

让我们拿一个带有一些假数据的 DataFrame,现在我们在这个 DataFrame 上执行索引。在此,我们从 DataFrame 中选择一些行和一些列。带有数据集的数据框。

假设我们只想为带有标签Amir JohnsonTerry Rozier的行选择AgeCollegeSalary

我们最终的 DataFrame 如下所示:

选择一些行和所有列

假设我们要选择数据框中所有列的行Amir JhonsonTerry RozierJohn Holland

我们最终的 DataFrame 如下所示:

选择一些列和所有行

假设我们要在数据框中选择包含所有行的 Age、Height 和 Salary 列。

我们最终的 DataFrame 如下所示:

Pandas 索引使用[ ].loc[].iloc[ ].ix[ ]

有很多方法可以从 DataFrame 中提取元素、行和列。 Pandas 中有一些索引方法有助于从 DataFrame 中获取元素。这些索引方法看起来非常相似,但行为却截然不同。 Pandas 支持四种类型的多轴索引,它们是:

  • 数据框。[];此函数也称为索引运算符
  • Dataframe.loc[ ] :此函数用于标签。
  • Dataframe.iloc[ ] :此函数用于位置或基于整数
  • Dataframe.ix[] :此函数用于基于标签和整数

它们统称为索引器。这些是迄今为止最常见的数据索引方式。这四个函数有助于从 DataFrame 中获取元素、行和列。使用索引运算符[]索引数据框:
索引运算符用于引用对象后面的方括号。 .loc.iloc索引器也使用索引运算符进行选择。在这个索引运算符中要引用 df[]。

选择单个列

为了选择单个列,我们只需将列名放在括号之间

# importing pandas package
import pandas as pd
  
# making data frame from csv file
data = pd.read_csv("nba.csv", index_col ="Name")
  
# retrieving columns by indexing operator
first = data["Age"]
  
  
  
print(first)

输出:

选择多个列

为了选择多个列,我们必须在索引运算符中传递列列表。

# importing pandas package
import pandas as pd
  
# making data frame from csv file
data = pd.read_csv("nba.csv", index_col ="Name")
  
# retrieving multiple columns by indexing operator
first = data[["Age", "College", "Salary"]]
  
  
  
first

输出:
使用.loc[ ]索引 DataFrame:
此函数通过行和列的标签选择数据。 df.loc索引器以不同于索引运算符的方式选择数据。它可以选择行或列的子集。它还可以同时选择行和列的子集。

选择单行

为了使用.loc[]选择单行,我们将单行标签放在.loc函数中。

# importing pandas package
import pandas as pd
  
# making data frame from csv file
data = pd.read_csv("nba.csv", index_col ="Name")
  
# retrieving row by loc method
first = data.loc["Avery Bradley"]
second = data.loc["R.J. Hunter"]
  
  
print(first, "\n\n\n", second)

输出:
如输出图像所示,由于两次都只有一个参数,因此返回了两个系列。

选择多行

为了选择多行,我们将所有行标签放在一个列表中并将其传递给.loc函数。

import pandas as pd
  
# making data frame from csv file
data = pd.read_csv("nba.csv", index_col ="Name")
  
# retrieving multiple rows by loc method
first = data.loc[["Avery Bradley", "R.J. Hunter"]]
  
  
  
print(first)

输出:

选择两行三列

为了选择两行和三列,我们选择要选择的两行和三列,并将其放在单独的列表中,如下所示:

Dataframe.loc[["row1", "row2"], ["column1", "column2", "column3"]]
import pandas as pd
  
# making data frame from csv file
data = pd.read_csv("nba.csv", index_col ="Name")
  
# retrieving two rows and three columns by loc method
first = data.loc[["Avery Bradley", "R.J. Hunter"],
                   ["Team", "Number", "Position"]]
  
  
  
print(first)

输出:

选择所有行和一些列

为了选择所有的行和一些列,我们使用单冒号[:]来选择我们想要选择的所有行和一些列的列表,如下所示:

Dataframe.loc[:, ["column1", "column2", "column3"]]
import pandas as pd
  
# making data frame from csv file
data = pd.read_csv("nba.csv", index_col ="Name")
  
# retrieving all rows and some columns by loc method
first = data.loc[:, ["Team", "Number", "Position"]]
  
  
  
print(first)

输出:
使用.iloc[ ]索引 DataFrame:
这个函数允许我们按位置检索行和列。为了做到这一点,我们需要指定我们想要的行的位置,以及我们想要的列的位置。 df.iloc索引器与df.loc非常相似,但仅使用整数位置进行选择。

选择单行

为了使用.iloc[]选择单行,我们可以将单个整数传递给.iloc[]函数。

import pandas as pd
  
# making data frame from csv file
data = pd.read_csv("nba.csv", index_col ="Name")
  
  
# retrieving rows by iloc method 
row2 = data.iloc[3] 
  
  
  
print(row2)

输出:

选择多行

为了选择多行,我们可以将整数列表传递给.iloc[]函数。

import pandas as pd
  
# making data frame from csv file
data = pd.read_csv("nba.csv", index_col ="Name")
  
  
# retrieving multiple rows by iloc method 
row2 = data.iloc [[3, 5, 7]]
  
  
  
row2

输出:

选择两行两列

为了选择两行和两列,我们为行创建一个包含 2 个整数的列表,为列创建一个包含 2 个整数的列表,然后传递给.iloc[]函数。

import pandas as pd
  
# making data frame from csv file
data = pd.read_csv("nba.csv", index_col ="Name")
  
  
# retrieving two rows and two columns by iloc method 
row2 = data.iloc [[3, 4], [1, 2]]
  
  
  
print(row2)

输出:

选择所有行和一些列

为了选择所有行和一些列,我们使用单冒号[:]来选择所有行,对于列,我们制作一个整数列表,然后传递给.iloc[]函数。

import pandas as pd
  
# making data frame from csv file
data = pd.read_csv("nba.csv", index_col ="Name")
  
  
# retrieving all rows and some columns by iloc method 
row2 = data.iloc [:, [1, 2]]
  
  
  
print(row2)

输出:
使用 Dataframe.ix[ ] 对 a 进行索引:
在 pandas 开发的早期,存在另一个索引器ix 。该索引器能够按标签和整数位置进行选择。虽然它是通用的,但它引起了很多混乱,因为它不明确。有时整数也可以是行或列的标签。因此,在某些情况下它是模棱两可的。通常, ix是基于标签的,并且充当.loc索引器。但是, .ix还支持传递整数的整数类型选择(如 .iloc 中)。这仅适用于 DataFrame 的索引不是基于整数的.ix将接受.loc.iloc的任何输入。
注意: .ix索引器在最新版本的 Pandas 中已被弃用。

使用.ix[]作为.loc[]选择单行

为了选择单行,我们将单行标签放在.ix函数中。如果我们将行标签作为函数的参数传递,则此函数的行为类似于 .loc[]。

# importing pandas package
import pandas as pd
   
# making data frame from csv file
data = pd.read_csv("nba.csv", index_col ="Name")
   
# retrieving row by ix method
first = data.ix["Avery Bradley"]
  
   
   
print(first)
  

输出:

使用.ix[]作为.iloc[]选择单行

为了选择单行,我们可以将一个整数传递给.ix[]函数。如果我们在 .ix[]函数中传递一个整数,则此函数类似于.ix[]函数。

# importing pandas package
import pandas as pd
   
# making data frame from csv file
data = pd.read_csv("nba.csv", index_col ="Name")
   
# retrieving row by ix method
first = data.ix[1]
  
   
   
print(first)

输出:

DataFrame中的索引方法

FunctionDescription
Dataframe.head()Return top n rows of a data frame.
Dataframe.tail()Return bottom n rows of a data frame.
Dataframe.at[]Access a single value for a row/column label pair.
Dataframe.iat[]Access a single value for a row/column pair by integer position.
Dataframe.tail()Purely integer-location based indexing for selection by position.
DataFrame.lookup()Label-based “fancy indexing” function for DataFrame.
DataFrame.pop()Return item and drop from frame.
DataFrame.xs()Returns a cross-section (row(s) or column(s)) from the DataFrame.
DataFrame.get()Get item from object for given key (DataFrame column, Panel slice, etc.).
DataFrame.isin()Return boolean DataFrame showing whether each element in the DataFrame is contained in values.
DataFrame.where()Return an object of same shape as self and whose corresponding entries are from self where cond is True and otherwise are from other.
DataFrame.mask()Return an object of same shape as self and whose corresponding entries are from self where cond is False and otherwise are from other.
DataFrame.query()Query the columns of a frame with a boolean expression.
DataFrame.insert()Insert column into DataFrame at specified location.