使用 Pandas 索引和选择数据
Pandas 中的索引:
pandas 中的索引意味着只需从 DataFrame 中选择特定的数据行和列。索引可能意味着选择所有行和一些列,一些行和所有列,或每行和列中的一些。索引也可以称为子集选择。
让我们看看 Pandas 中的一些索引示例。在本文中,我们使用“ nba.csv
”文件下载 CSV,请单击此处。
选择一些行和一些列
让我们拿一个带有一些假数据的 DataFrame,现在我们在这个 DataFrame 上执行索引。在此,我们从 DataFrame 中选择一些行和一些列。带有数据集的数据框。
假设我们只想为带有标签Amir Johnson
和Terry Rozier
的行选择Age
、 College
和Salary
我们最终的 DataFrame 如下所示:
选择一些行和所有列
假设我们要选择数据框中所有列的行Amir Jhonson
、 Terry Rozier
和John 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中的索引方法
Function | Description |
---|---|
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. |