pandas中的数据筛选和分群方式

一、条件筛选

import pandas as pd  
data = pd.DataFrame({"订单号":['2957','29908','2961','2957','3000','2991','2960','2959'],
                     "付款金额":[3499,3599,3333,5656,7534,4576,2342,1599],
                     "支付时间":[20240818,20240817,20240820,20240811,20240821,20240807,20240818,20240801],
                     "品类":['凳子','椅子','桌子','耳机','手机','鼠标','抽纸','刷子'],
                     "用户名称":['李学勤','李丹','杨立','王建国','郭麒麟','马云','马化腾','秦孝贤']
                    }) 
data['创建时间']=pd.to_datetime(data['创建时间'],format='%Y%m%d')

## 条件筛选
data.loc[(data['品类']=='冰箱') & (data['付款金额']>=3000) & (data['创建时间']>='2024-08-10')]
data.loc[data['用户名称'].str.contains('马')]
data.loc[data['用户名称'].notna()]

二、分群方式

import pandas as pd  
data = pd.DataFrame({"订单号":['2957','2990','2961','2957','3000','2991','2960','2959'],
                     "付款金额":[3499,3599,3333,5656,7534,4576,2342,1599],
                     "支付时间":[20240818,20240817,20240820,20240811,20240821,20240807,20240818,20240801],
                     "品类":['凳子','椅子','桌子','耳机','手机','鼠标','抽纸','刷子'],
                     "用户名称":['李学勤','李丹','杨立','王建国','郭麒麟','马云','马化腾','秦孝贤']
                    }) 
data['创建时间']=pd.to_datetime(data['创建时间'],format='%Y%m%d')
## np.where()
data['分类']=np.where (data['品类'].str.contains('空调') | data['品类'].str.contains('冰箱') | data['品类'].str.contains('洗衣机'),'家电', 
np.where ( data['品类'].str.contains('沙发') | data['品类'].str.contains('椅子') | data['品类'].str.contains('餐桌'),'家具',   
np.where (data['品类'].str.contains('马桶'),'家装','无')))

## lambda+ apply
def class_group(x):
    if x in ('凳子','椅子','桌子'):
        return '类别1'
    elif x in ('耳机','手机','鼠标'):
        return '类别2'
    elif x in ('抽纸'):
        return '类别3'
    else:
        return '无'
data['分类']=data.apply(lambda x: class_group(x['品类']), axis=1)
data

## map
def class_group(x):
    if x in ('凳子','椅子','桌子'):
        return '类别1'
    elif x in ('耳机','手机','鼠标'):
        return '类别2'
    elif x in ('抽纸'):
        return '类别3'
    else:
        return '无'
data['分类']=data['品类'].map(class_group)
data

三、lambda+apply、map介绍

lambda:叫做匿名函数,可以用来快递定义函数

apply:参数Series.apply(func, convert_dtype=True, args=(), **kwargs),其中func也可以匿名函数。当一个函数的参数存在于一个元组或者一个字典中时,用来间接的调用这个函数,并将元组或者字典中的参数按照顺序传递给参数

参数介绍:args是一个包含按照函数所需参数传递的位置参数的一个元组,简单来说,假如A函数的函数位置为 A(a=1,b=2),那么这个元组中就必须严格按照这个参数的位置顺序进行传递(a=3,b=4),而不能是(b=4,a=3)这样的顺序。kwargs是一个包含关键字参数的字典,而其中args如果不传递,kwargs需要传递,则必须在args的位置留空。

map :它可以将一个函数映射到一个可枚举类型上面。Series.map(arg, na_action=None),function可以是一个字典、函数或者pd.Series上

两者都能传递参数,区别在于:apply只能传递函数,但map除了可以接收函数外还可以接收Series和字典

import pandas as pd  
data = pd.DataFrame({"订单号":['2957','2990','2961','2957','3000','2991','29603','2959'],
                     "付款金额":[3499,3599,3333,5656,7534,4576,2342,1599],
                     "支付时间":[20240818,20240817,20240820,20240811,20240821,20240807,20240818,20240801],
                     "品类":['凳子','椅子','桌子','耳机','手机','鼠标','抽纸','刷子'],
                     "用户名称":['李学勤','李丹','杨立','王建国','郭麒麟','马云','马化腾','秦孝贤']
                    }) 
## 字典
data['分类']=data['品类'].map({'凳子':'类别1','椅子':'类别2','耳机':'类别3'})
## 函数
def class_group(x):
    if x in ('凳子','椅子','桌子'):
        return '类别1'
    elif x in ('耳机','手机','鼠标'):
        return '类别2'
    elif x in ('抽纸'):
        return '类别3'
    else:
        return '无'
data['分类']=data['品类'].map(class_group)
data

夜明月:pandas数据处理-一行处理数据lambda、apply、map、groupby Python中的lambda和apply用法_labda apply-CSDN博客 猪小膘:闲聊Pandas map函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值