每日一题13:Pandas:方法链

一、每日一题 

 ;::

解答:

import pandas as pd

def findHeavyAnimals(animals: pd.DataFrame) -> pd.DataFrame:
    heavy_animals = animals[animals['weight'] > 100].sort_values(by='weight', ascending=False)
    result = heavy_animals[['name']]
    return result

题源:Leetcode

 二、总结

 本题用到了布尔索引以及排序函数。

1.布尔索引

布尔索引是Pandas库中一种强大的功能,它允许你根据条件逻辑直接从DataFrame或Series中选择数据子集。这种索引方式基于一个布尔数组,数组中的每个元素对应DataFrame/Series中的一个元素,值为True表示选择该元素,False则不选择。

基本概念

在Pandas中,当你对一个DataFrame或Series应用一个布尔条件时,Pandas会自动将这个条件应用于数据结构的每个元素,并生成一个相同形状的布尔数组。然后,你可以直接用这个布尔数组作为索引来选取满足条件的行或列。

应用场景

布尔索引常用于以下几种场景:

  1. 筛选特定值:例如,选择所有价格大于某个阈值的商品。
  2. 过滤缺失数据:通过检查是否为NaN来去除含有缺失值的行或列。
  3. 复合条件:结合多个条件进行复杂筛选,如同时满足年龄和收入两个条件的人群。
  4. 基于其他列的值:利用一个或多个列的值作为筛选依据。
实例:
import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        'Math': [88, 95, 70, 92, 85],
        'English': [85, 80, 90, 88, 92]}
scores = pd.DataFrame(data)

# 选择数学成绩超过90分的学生记录:
high_scores = scores[scores['Math'] > 90]
print(high_scores)

# 选择数学和英语成绩都超过85分的学生:
both_high = scores[(scores['Math'] > 85) & (scores['English'] > 85)]
print(both_high)

# 选择数学成绩没有达到80分的学生:
low_math_scores = scores[scores['Math'] < 80]
print(low_math_scores)
2.sort_values()排序 

sort_values() 是 Pandas 库中一个非常实用的函数,用于对 DataFrame 或 Series 中的数据按指定列或行的值进行排序。这个函数提供了丰富的选项来控制排序的方式,包括升序或降序、处理缺失值的位置等。下面是 sort_values() 函数的基本用法和参数说明:

基本用法:
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, 
kind='quicksort', na_position='last', ignore_index=False, key=None)
参数说明:
  • by:这是排序的主要参数,可以是单个列名(字符串),或者是一个列名的列表,用于多列排序。列名也可以是索引级别,用于对MultiIndex的排序。

  • axis:指定排序的轴,接受 0'index' 表示按列排序(默认),1'columns' 表示按行排序。

  • ascending:确定排序的顺序,可以是布尔值(默认为 True 表示升序,False 表示降序),或者是一个布尔值的列表,用于多列排序时分别指定每列的排序方向。

  • inplace:如果设置为 True,则会就地排序DataFrame,不返回新的DataFrame实例(默认为 False)。

  • kind:排序算法,可选的排序类型有 'quicksort', 'mergesort', 'heapsort' 等,不同的算法会影响排序的性能(默认为 'quicksort')。

  • na_position:决定缺失值(NaN)的位置,可选 'first''last',分别表示将缺失值排在最前或最后(默认为 'last')。

  • ignore_index:如果设置为 True,则在返回的DataFrame中重置索引(默认为 False)。

  • key:这是一个可选参数,可以是一个函数或者函数列表,用于在排序前对值进行预处理。

实例:
import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [24, 30, 35, 28],
        'score': [88, 95, 90, 85]}
df = pd.DataFrame(data)

# 升序排序 age 列
df_sorted = df.sort_values(by='age')

# 降序排序 score 列
df_sorted_desc = df.sort_values(by='score', ascending=False)

# 按多列排序,先按 age 升序,再按 score 降序
df_multi_sorted = df.sort_values(by=['age', 'score'], ascending=[True, False])

 官方文档

2024.5.16 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值