• Python每日一练——第42天:基础刷题




    1. 某店铺消费最多的前三名用户

    描述: 现有某店铺会员消费情况sales.csv。包含以下字段:
    user_id:会员编号;
    recency:最近一次消费距离当天的天数;
    frequency:一段时间内消费的次数;
    monetary:一段时间内消费的总金额。
    请你统计消费金额最多的前3名用户。

    在这里插入图片描述

    实现代码:

    import pandas as pd
    sales = pd.read_csv('sales.csv')
     
    data = sales.sort_values(by='monetary', ascending=False).reset_index(drop=True)[:3]
     
    print(data)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    运行结果:

    在这里插入图片描述



    2. 按照等级递增序查看牛客网用户信息

    描述: 现有一个Nowcoder.csv文件,记录了牛客网的部分用户的个人信息,包含如下字段(字段与字段之间以逗号间隔):
    Nowcoder_ID:用户ID
    Name:用户名
    Level:等级
    Achievement_value:成就值
    Num_of_exercise:刷题量
    Graduate_year:毕业年份
    Language:常用语言
    牛牛在查看这些数据的时候,等级都是混乱的,他想按照1-7级的递增序查看这些用户数据,你能帮他输出一下吗?

    在这里插入图片描述

    实现代码:

    import pandas as pd
     
    pd.set_option('display.width', 300)  # 设置字符显示宽度
    pd.set_option('display.max_rows', None)  # 设置显示最大行
    pd.set_option('display.max_columns', None)
    Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
    df = Nowcoder.sort_values(by='Level',ascending=True)
    print(df)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    运行结果:

    在这里插入图片描述



    3. 某店铺用户消费特征评分

    描述: 现有某店铺会员消费情况sales.csv。包含以下字段:
    user_id:会员编号;
    recency:最近一次消费距离当天的天数;
    frequency:一段时间内消费的次数;
    monetary:一段时间内消费的总金额。
    请你分别对每个用户的每个消费特征进行评分。

    在这里插入图片描述

    实现代码:

    import pandas as pd
    sales = pd.read_csv('sales.csv')
    
    # 按照结果要求转换类型
    sales[['monetary']] = sales[['monetary']].astype('float32')
    # 求百分位
    des = sales[['recency', 'frequency', 'monetary']].describe().loc['25%':'75%']
    
    # 计算RFM
    sales['R_Quartile'] = sales['recency'].apply(lambda x: 4 if x <= des.iloc[0,0] else (3 if x <= des.iloc[1,0] else (2 if x <= des.iloc[2,0] else 1)))
    sales['F_Quartile'] = sales['frequency'].apply(lambda x: 1 if x <= des.iloc[0,1] else (2 if x <= des.iloc[1,1] else (3 if x <= des.iloc[2,1] else 4)))
    sales['M_Quartile'] = sales['monetary'].apply(lambda x: 1 if x <= des.iloc[0,2] else (2 if x <= des.iloc[1,2] else (3 if x <= des.iloc[2,2] else 4)))
    
    # 
    print(sales.head())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    运行结果:

    在这里插入图片描述



    4. 筛选某店铺最有价值用户中消费最多前5名

    描述: 现有某店铺会员消费情况sales.csv。包含以下字段:
    user_id:会员编号;
    recency:最近一次消费距离当天的天数;
    frequency:一段时间内消费的次数;
    monetary:一段时间内消费的总金额。
    请你统计最有价值的用户中消费金额最多的前5名用户。

    在这里插入图片描述

    实现代码:

    import pandas as pd
    sales = pd.read_csv('sales.csv')
    
    # 按照结果要求转换类型
    sales[['monetary']] = sales[['monetary']].astype('float32')
    # 求百分位
    des = sales[['recency', 'frequency', 'monetary']].describe().loc['25%':'75%']
    
    # 计算RFM
    R = sales['recency'].apply(lambda x: 4 if x <= des.iloc[0,0] else (3 if x <= des.iloc[1,0] else (2 if x <= des.iloc[2,0] else 1))).astype('str')
    F = sales['frequency'].apply(lambda x: 1 if x <= des.iloc[0,1] else (2 if x <= des.iloc[1,1] else (3 if x <= des.iloc[2,1] else 4))).astype('str')
    M = sales['monetary'].apply(lambda x: 1 if x <= des.iloc[0,2] else (2 if x <= des.iloc[1,2] else (3 if x <= des.iloc[2,2] else 4))).astype('str')
    
    # 合并RFM
    sales['RFMClass'] = R+F+M
    # 
    print(sales.head())
    
    # 筛选444用户
    sales1 = sales[sales['RFMClass'] == '444'].sort_values(by='monetary', ascending=False).reset_index(drop=True)
    #
    print(sales1.head())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    运行结果:

    在这里插入图片描述


    《100天精通Python》专栏推荐白嫖80g Python全栈视频

    《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html

    • 优点订阅限时9.9付费专栏进入千人全栈VIP答疑群,作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会)!
    • 专栏福利简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等
      在这里插入图片描述
      在这里插入图片描述
  • 相关阅读:
    Go | 函数注意事项
    (附源码)springboot毕业生弃置物品交易系统 毕业设计 231151
    pyqtgraph只使用image view进行热图的可视化展示 (一个脚本)创建一个窗口
    【前端实例代码】如何使用 HTML 和 CSS 快速创建一个响应式导航栏
    Python语法基础(条件语句 循环语句 函数 切片及索引)
    基于springboot的房产销售系统
    人工智能/虚拟现实技术的工程伦理分析:以电影《头号玩家》为例
    让STM32CubeMX带你飞,菜鸟秒变STM32高手
    学习分享-FutureTask和消息队列的区别
    [自动化测试]树莓派4B安装pyppeteer
  • 原文地址:https://blog.csdn.net/yuan2019035055/article/details/127591121