每日一题14:Pandas:布尔索引实践之“大的国家”

一、每日一题 

数据集如下: 

data = [['Afghanistan', 'Asia', 652230, 25500100, 20343000000], 
['Albania', 'Europe', 28748, 2831741, 12960000000],
 ['Algeria', 'Africa', 2381741, 37100000, 188681000000],
 ['Andorra', 'Europe', 468, 78115, 3712000000], 
['Angola', 'Africa', 1246700, 20609294, 100990000000]]
world = pd.DataFrame(data,
 columns=['name', 'continent', 'area', 'population', 'gdp']).astype
({'name':'object', 'continent':'object', 'area':'Int64', 'population':'Int64', 'gdp':'Int64'})

解答:

import pandas as pd

def big_countries(world: pd.DataFrame) -> pd.DataFrame:
    # 筛选大国:面积 >= 3000000 或 人口 >= 25000000
    large_countries = world[(world['area'] >= 3000000) 
    | (world['population'] >= 25000000)]
    # 输出大国的国家名称、人口和面积
    
    return large_countries[['name', 'population', 'area']]

题源:Leetcode

 二、总结 

本题用到了布尔索引。在Pandas中,布尔索引是一种强大的功能,它允许你根据条件选择DataFrame或Series中的数据子集。具体到本题中,如果我们有一个包含国家信息的DataFrame,并希望筛选出满足特定条件(比如面积大于300万平方公里或人口超过2500万)的“大国”,我们可以使用布尔索引来完成这一任务。

布尔索引步骤

  1. 构建条件表达式:首先,你需要创建一个或多个表达式来表示你的筛选条件。对于数值类型的列,你可以直接比较大小;对于类别或其他类型的数据,可能需要使用.isin()等方法来匹配值。

  2. 应用条件:将这些条件应用到DataFrame上,这会返回一个布尔值的Series,其中True表示该行满足条件,False则不满足。

  3. 用作索引:最后,你可以直接把这个布尔Series用作DataFrame的索引来选取数据。

下面举一个例子:

假设我们已经有了一个名为dfDataFrame,包含国家数据:

import pandas as pd

# 示例数据
data = {'Country': ['China', 'India', 'USA', 'Canada', 'Australia'],
        'Population': [1444216107, 1393409038, 332639102, 38005238, 25892626],
        'Area': [9600000, 3287263, 9372610, 9984670, 7692024]}
df = pd.DataFrame(data)

# 布尔索引条件:面积大于300万平方公里 OR 人口超过2500万
is_large_area = df['Area'] > 3000000
is_large_population = df['Population'] > 25000000
large_countries_condition = is_large_area | is_large_population

# 应用条件筛选大国
large_countries = df[large_countries_condition]

print(large_countries)

总之,布尔索引使得根据复杂条件筛选数据变得直接而高效,是数据分析中不可或缺的工具之一。

2024.5.17 

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值