Pandas数据分析面试基础题(四)

298 阅读2分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

本篇文章只有一个试题,但是涉及很多种方法,下面就来分享一下,希望对大家有所帮助。

试题:如何对 DataFrame 数据进行查询?

(难度:easy)

分析 DataFrame 数据查询方法有很多,有切片[]、loc、iloc、at、iat等,下面具体分析一下。 先随机生成一个 DataFrame 数据:

students = {'id':[1,2,3,4,5], 'name':['one','two','three','four','five'],'score':[90,88,89,65,95]}

df = pd.DataFrame(students)
df

结果如下:

       id      name  score
0	1	one	90
1	2	two	88
2	3	three	89
3	4	four	65
4	5	five	95

实现

  • 通过切片方式:
    使用[]可以对 DataFrame 进行切片,类似于 Python 的列表切片,可以使用行列的下标名称实现行选择、列选择以及区块选择。 例如:
# 获取1行~2行数据
df[1:3]
# 获取单列
df.name  # 或者df['name']
# 获取名称为name和score的列
df[['name', 'score']]
# 获取2~3行名称为name和score的列
df[2:4][['name', 'score']]
  • 通过loc、iloc方法:
    • .loc[]:是location的意思,以columns(列名)和index(行名)作为参数,具体用法为:DataFrame.loc[行索引名称或条件, 列索引名称]
    • .iloc[]:是index location的意思,以照索引的位置(即0,1,2……)作为参数,具体用法为:DataFrame.iloc[行索引位置, 列索引位置]。 例如:
# 获取某一行
df.loc[1]
df.iloc[1]
# 获取多行
df.loc[1:3]
df.iloc[1:3]
# 获取某一列
df.loc[:, 'score']
df.iloc[:, 2]
# 获取多列
df.loc[:, 'id':'score']
df.loc[:, ['id','score']]
df.iloc[:, 0:2]
df.iloc[:, [0,2]]

注意: 在loc传入的行索引为一个区间时,区间前后均为闭区间;iloc传入的行索引位置或列索引位置为区间时,区间前闭后开。

  • 通过at、iat方法: at、iat的使用方法分别与loc、iloc类似,有着更快的访问速度,但是只能访问单个元素,不能访问多个元素。 例如:
# 获取index为1列名为name的数据
df.at[1,'name']
# 获取1行1列的数据
df.iat[1,1]

其实还有一种ix方法,ix方法在使用时既可以接收索引名称也可以接收索引位置,像是loc和iloc的结合体,用处不多,此处就不做介绍了。

原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~

最后,感谢女朋友在工作和生活中的包容、理解与支持 !