18_Pandas.DataFrame,取得Series的头和尾(head和tail)

18_Pandas.DataFrame,取得Series的头和尾(head和tail)

当检查具有许多行的pandas.DataFrame,pandas.Series的数据时,返回最初行和最后行的方法head()和tail()很方便。

在此将对以下内容予以描述:

  • 返回最初行:Head()
  • 返回最后行:Tail()
  • 通过在切片中指定行号来获取行
  • 获取第一行/最后一行中的元素

例如,使用seaborn中的iris数据集作为样本。它是pandas.DataFrame。

import pandas as pd
import seaborn as sns

df = sns.load_dataset("iris")
print(df.shape)
# (150, 5)

该示例为pandas.DataFrame,但pandas.Series也具有head()和tail()。参数的用法是相同的。

返回第一行:Head()

head()方法返回最初行。

默认值为前5行。

print(df.head())
#    sepal_length  sepal_width  petal_length  petal_width species
# 0           5.1          3.5           1.4          0.2  setosa
# 1           4.9          3.0           1.4          0.2  setosa
# 2           4.7          3.2           1.3          0.2  setosa
# 3           4.6          3.1           1.5          0.2  setosa
# 4           5.0          3.6           1.4          0.2  setosa

如果指定整数作为参数,则将返回相应的行。

print(df.head(3))
#    sepal_length  sepal_width  petal_length  petal_width species
# 0           5.1          3.5           1.4          0.2  setosa
# 1           4.9          3.0           1.4          0.2  setosa
# 2           4.7          3.2           1.3          0.2  setosa

返回最后一行:Tail()

tail()方法返回最后行。
默认值为前5行。

print(df.tail())
#      sepal_length  sepal_width  petal_length  petal_width    species
# 145           6.7          3.0           5.2          2.3  virginica
# 146           6.3          2.5           5.0          1.9  virginica
# 147           6.5          3.0           5.2          2.0  virginica
# 148           6.2          3.4           5.4          2.3  virginica
# 149           5.9          3.0           5.1          1.8  virginica

如果指定整数作为参数,则将返回相应的行。

print(df.tail(3))
#      sepal_length  sepal_width  petal_length  petal_width    species
# 147           6.5          3.0           5.2          2.0  virginica
# 148           6.2          3.4           5.4          2.3  virginica
# 149           5.9          3.0           5.1          1.8  virginica

通过在切片中指定行号来获取行

还可以在切片中指定行号,以在任何位置获取行的元素。

print(df[50:55])
#     sepal_length  sepal_width  petal_length  petal_width     species
# 50           7.0          3.2           4.7          1.4  versicolor
# 51           6.4          3.2           4.5          1.5  versicolor
# 52           6.9          3.1           4.9          1.5  versicolor
# 53           5.5          2.3           4.0          1.3  versicolor
# 54           6.5          2.8           4.6          1.5  versicolor

还可以使用切片执行与head()和tail()相同的处理。

print(df[:5])
#    sepal_length  sepal_width  petal_length  petal_width species
# 0           5.1          3.5           1.4          0.2  setosa
# 1           4.9          3.0           1.4          0.2  setosa
# 2           4.7          3.2           1.3          0.2  setosa
# 3           4.6          3.1           1.5          0.2  setosa
# 4           5.0          3.6           1.4          0.2  setosa

print(df[-5:])
#      sepal_length  sepal_width  petal_length  petal_width    species
# 145           6.7          3.0           5.2          2.3  virginica
# 146           6.3          2.5           5.0          1.9  virginica
# 147           6.5          3.0           5.2          2.0  virginica
# 148           6.2          3.4           5.4          2.3  virginica
# 149           5.9          3.0           5.1          1.8  virginica

获取第一行/最后一行中的元素

可以通过在head()或tail()中指定参数n = 1来获得第一行或最后一行,但是即使只有一行,类型也是pandas.DataFrame。

print(df.head(1))
#    sepal_length  sepal_width  petal_length  petal_width species
# 0           5.1          3.5           1.4          0.2  setosa

print(type(df.head(1)))
# 

如果使用iloc仅指定一行,则可以使用pandas.Series获得指定的行。 pandas.Series更容易获得价值。您可以使用iloc [0]获得第一行,并使用iloc [-1]获得最后一行。

如果要获取元素的值,则可以使用iloc [0] [‘列名’],iloc [-1] [‘列名’],依此类推。

print(df.iloc[0])
# sepal_length       5.1
# sepal_width        3.5
# petal_length       1.4
# petal_width        0.2
# species         setosa
# Name: 0, dtype: object

print(type(df.iloc[0]))
# 

print(df.iloc[0]['sepal_length'])
# 5.1
print(df.iloc[-1])
# sepal_length          5.9
# sepal_width             3
# petal_length          5.1
# petal_width           1.8
# species         virginica
# Name: 149, dtype: object

print(type(df.iloc[-1]))
# 

print(df.iloc[-1]['sepal_length'])
# 5.9

请注意,如果.iloc不存在,将发生错误。

# print(df[0])
# KeyError: 0

# print(df[-1])
# KeyError: -1

有关at,iat,loc和iloc的更多信息,请参见以下文章。

  • 04_Pandas获取和修改任意位置的值(at,iat,loc,iloc)

你可能感兴趣的:(Pandas,python,机器学习)