Educoder python pandas介绍 第3关:通过标签从DataFrame中选择列


任务描述

本关任务:学习用标签从DataFrame中选择列。

相关知识

用标签从DataFrame中选择列

在上一关最后的练习中,我们使用了DataFrame.info()方法来显示索引中的条目数(即表示有多少行),一个列表(它统计每列的数据类型和非空值的数量)以及不同数据类型和内存使用情况的汇总。

因为我们在pandas中的轴有标签,我们可以使用这些标签选择数据–与NumPy不同,我们需要知道确切的索引位置。为此,我们可以使用DataFrame.loc[]方法。DataFrame.loc[]方法的语法是:


 
  1. df.loc[row_label, column_label]

请注意,按位置选择时,我们使用方括号([])而不是圆括号(())。

在我们的pandas实训中,你将看到在代码示例中使用df作为dataframe对象的缩写。我们使用这个约定是因为它在pandas官方文件中也被广泛使用——习惯阅读它是很重要的。

我们接下来看一个例子。 我们将再次使用存储为f500_selection的一组数据:

让我们通过指定一个标签来选择一个列:

注意,我们使用:指定希望选择所有行。还要注意,新的dataframe具有与原始数据相同的行标签。

我们也可以使用以下快捷方式选择一列:


 
  1. rank_col = f500_selection["rank"]
  2. print(rank_col)

输出结果:


 
  1. Walmart 1
  2. State Grid 2
  3. Sinopec Group 3
  4. China National Petroleum 4
  5. Toyota Motor 5
  6. Name: rank, dtype: int64

这种选择列的方式非常常见。我们将在整个系列课程中使用它。

series对象

在前面我们注意到,当你只选择dataframe的一列时,你将得到一个新的pandas类型:一个series对象Series是用于一维对象的pandas类型。任何时候看到一维pandas对象,它都是一个series。每当你看到二维pandas对象时,它都是一个dataframe

实际上,你可以将dataframe看作series对象的集合,这与pandas在背后存储数据的方式类似。

当我们继续学习如何选择数据时,请注意哪些对象是dataframe,哪些对象是series

继续用标签从DataFrame中选择列

接下来,让我们学习如何选择多个列。提醒一下,以下是我们正在处理的数据:

下面,我们使用标签列表来选择特定的列:

因为返回的对象是二维的,所以我们知道它是一个dataframe,而不是一个series。同样,除了df.loc[:,["col1","col2"]],也可以使用df[["col1", "col2"]]来选择特定的列。

最后我们使用一个带有标签的切片对象来选择特定的列:

我们再次获得一个dataframe对象,其中包含从第一个列到最后一个列(包括最后一个列)的所有列。还要注意,没有选择列切片的快捷方式。

以下是我们目前学到的技术总结:

Select by Label Explicit Syntax Common Shorthand
Single column df.loc[:,"col1"] df["col1"]
List of columns df.loc[:,["col1", "col7"]] df[["col1", "col7"]]
Slice of columns df.loc[:,"col1":"col4"] \

让我们练习使用这些技术从f500dataframe中选择特定的列。

编程要求

请仔细阅读右侧代码,结合相关知识,在Begin-End 区域内进行代码补充,完成以下需求:

  1. f500dataframe中选择industry列。将结果赋值给变量industries

  2. 使用Pythontype()函数将industries的类型赋值给industries_type

  3. 选择country列。将结果赋值给变量countries

  4. 按照顺序选择revenueyears_on_global_500_list列。将结果赋值给变量revenues_years

  5. 按照顺序选择ceo到包括sector在内的所有列。将结果赋值给变量ceo_to_sector

  6. 打印变量industries_typecountriesrevenues_yearsceo_to_sector

测试说明

平台会对你的代码进行运行测试,如果实际输出结果与预期结果相同,则通关;反之,则 GameOver

import pandas as pd
f500 = pd.read_csv('f500.csv',index_col=0)
f500.index.name = None
# 请在此添加代码
#********** Begin **********#
industries = f500["industry"] #从f500的dataframe中选择industry列。将结果赋值给变量industries;
industries_type = type(industries) #使用Python的type()函数将industries的类型赋值给industries_type;
countries = f500["country"] #选择country列。将结果赋值给变量countries;
revenues_years = f500[["revenues", "years_on_global_500_list"]] #按照顺序选择revenue和years_on_global_500_list列。将结果赋值给变量revenues_years;
ceo_to_sector = f500.loc[:, "ceo":"sector"] #按照顺序选择ceo到包括sector在内的所有列。将结果赋值给变量ceo_to_sector;
print(industries_type)
print(countries)
print(revenues_years)
print(ceo_to_sector)
#********** End **********#

 

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值