📅  最后修改于: 2020-04-20 00:48:19             🧑  作者: Mango
在Pandas中建立索引:在Pandas中建立索引意味着仅从DataFrame中选择特定的数据行和数据列。索引编制可能意味着选择所有行和某些列,某些行和所有列,或每个行和列中的一些。索引编制也称为子集选择。
让我们看一些在Pandas中建立索引的示例。在本文中,我们使用“ nba.csv
“文件下载CSV,请单击此处。
让我们以包含一些虚假数据的DataFrame为例,现在我们对该DataFrame执行索引。在此,我们从DataFrame中选择一些行和一些列。具有数据集的DataFrame:
假设我们要选择列Age
,College
和Salary
,同时满足行的值为Amir Johnson
和Terry Rozier
我们最后的数据帧应该是这样的:
假设我们要选择行 Amir Jhonson
,Terry Rozier
并选择数据框中的John Holland
所有列。
我们最终的DataFrame如下所示:
假设我们要选择“Age”,“Height”和“Salary”列以及数据框中的所有行。
我们最终的DataFrame如下所示:
[ ]
,,, .loc[]
.iloc[ ]
.ix[ ]
有很多方法可以从DataFrame中提取元素,行和列。Pandas中有一些索引方法,可帮助从DataFrame中获取元素。这些索引方法看起来非常相似,但是行为却截然不同。Pandas支持四种类型的多轴索引:
它们统称为索引器。到目前为止,这些是索引数据的最常用方法。这四个功能有助于从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[]
起作用。
输出:
为了选择两行两列,我们为行创建一个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 []为 编制索引:
在开发大pandas的早期,存在另一个索引器ix
。该索引器能够通过标签和整数位置进行选择。尽管它用途广泛,但由于不明确,引起了很多混乱。有时,整数也可以作为行或列的标签。因此,在某些情况下它是模棱两可的。通常,ix
它基于标签,并且充当.loc索引器。但是,.ix
还支持整数类型选择(如.iloc中一样),该选择中传递了整数。其中,数据帧的指数是不是整数基于这只能.ix
将接受任何的输入.loc
和.iloc
。
注:该.IX 最近版本的Pandas不推荐使用indexer。
为了选择单行,我们在.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[]
函数。如果我们在.ix[]
函数中传递整数,则该函数类似于iloc [] 函数。
# 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.head() | 返回 n 数据框的顶部行。 |
Dataframe.tail() | 返回n 数据框的底部行。 |
Dataframe.at [] | 访问行/列标签对的单个值。 |
Dataframe.iat [] | 通过整数位置访问行/列对的单个值。 |
Dataframe.tail() | 基于位置的纯基于整数位置的索引。 |
DataFrame.lookup() | DataFrame的基于标签的“花式索引”功能。 |
DataFrame.pop() | 返回项目并从框架中放下。 |
DataFrame.xs() | 从DataFrame返回横截面(行或列)。 |
DataFrame.get() | 从对象获取给定键(DataFrame列,Panel slice等)的项目。 |
DataFrame.isin() | 返回布尔值DataFrame,显示值中是否包含DataFrame中的每个元素。 |
DataFrame.where() | 返回与self形状相同的对象,并且其对应的条目来自cond为True的self,否则来自其他对象。 |
DataFrame.mask() | 返回与self形状相同的对象,其对应的条目来自cond为False的self,否则来自其他对象。 |
DataFrame.query() | 使用布尔表达式查询框架的列。 |
DataFrame.insert() | 将列插入到DataFrame中的指定位置。 |