Pandas 例题 - 1
电商订单数据清洗
任务详情
请根据系统提供的订单数据表,按要求完成以下任务:
统计订单表格中,商品描述(choice_description)中为“NaN”的数量,并将其批量替换为“banana”,
请根据以上要求,将函数 nanCount() 补充完整,函数的返回值为整数值,既为“NaN”的数量。
任务要求
- 订单数据表为以逗号为分隔符的csv文件,编码方式为 UTF-8;
- 注意:DataFrame 由后台生成,作为参数 order_data 传递到 nonCount() 中,不需要生成新的 DataFrame;
- DataFrame 读取为订单数据表;
- 返回值为 NaN 的数量,int 数据类型。
订单数据表.csv
1 | import pandas as pd |
电商订单数据计算
任务详情
请根据系统提供的订单数据表,按要求完成以下三个任务:
传入一个字符串,返回订单总金额 (quantity * item_price) 最大或最小的商品,并返回商品的名称(item_name)。
请根据以上要求,将函数 salesStr() 补充完整,函数的返回值为字符(str),比如:“Steak Burrito”
订单数据访问地址请见下方:
字段名 | 中文含义 |
---|---|
order_id | 商品编号 |
quantity | 数量 |
item_name | 商品名称 |
choice_description | 描述 |
item_price | 单价 |
任务要求
- 传入一个字符串(‘max’ 或 ‘min’),返回订单总金额最大或最小的商品的名称(item_name) ;
- 传入的字符串不区分大小写,即传入值可能是"Max",也可能是"max";
- 传入"max",返回订单总金额 (quantity * item_price) 最大的商品名称;传入“min”,返回订单总金额 (quantity * item_price) 最小的商品名称;
- 返回字符串区分大小写,且保留字符串中间空格。
订单数据表.csv
1 | class Solution: |
DataFrame计算平均值
任务详情
给定一个DataFrame对象 df,要求返回各行的平均值。
具体操作如下:
1.添加新列 ‘avg’ 用于计算各行的平均值;
2.使用数组返回新列 ‘avg’。
任务要求
1.程序接收 DataFrame 对象 df,返回结果是 list 数据类型;
2.注意:平均值需要四舍五入保留两位小数。
测试用例
输入:
0 | 1 | 2 | 3 | 4 | 5 | 6 | |
---|---|---|---|---|---|---|---|
0 | 24 | 27 | 7 | 23 | 25 | 7 | 21 |
1 | 16 | 30 | 8 | 4 | 26 | 30 | 8 |
2 | 18 | 28 | 7 | 17 | 17 | 16 | 25 |
输出:
[19.14, 17.43, 18.29]
解释:首先生成新列’avg’,需要注意平均数需要四舍五入保留小数点后两位
0 | 1 | 2 | 3 | 4 | 5 | 6 | avg | |
---|---|---|---|---|---|---|---|---|
0 | 24 | 27 | 7 | 23 | 25 | 7 | 21 | 19.14 |
1 | 16 | 30 | 8 | 4 | 26 | 30 | 8 | 17.43 |
2 | 18 | 28 | 7 | 17 | 17 | 16 | 25 | 18.29 |
输入:
0 | 1 | 2 | 3 | |
---|---|---|---|---|
0 | 10 | 19 | 4 | 7 |
1 | 9 | 5 | 28 | 14 |
2 | 30 | 27 | 1 | 13 |
3 | 21 | 14 | 19 | 9 |
4 | 1 | 25 | 30 | 16 |
输出:[10.0, 14.0, 17.75, 15.75, 18.0]
解释:首先生成新列’avg’,其次返回’avg’列
0 | 1 | 2 | 3 | avg | |
---|---|---|---|---|---|
0 | 10 | 19 | 4 | 7 | 10.00 |
1 | 9 | 5 | 28 | 14 | 14.00 |
2 | 30 | 27 | 1 | 13 | 17.75 |
3 | 21 | 14 | 19 | 9 | 15.75 |
4 | 1 | 25 | 30 | 16 | 18.00 |
1 | class Solution: |
乐高商店收入计算
题目描述
我们需要完成乐高商店的分析,请你根据指引完成以下任务:
1.使用 Pandas 读取数据;
2.去掉没有价格的数据,将销量为空的数据填充为0;
3.计算所有产品总收入;
4.计算该数据中产品价格的平均值;
5.程序后台传入产品标题title,要求计算该产品的收入(收入总计);
6.将总收入、平均价格、产品收入保存到列表里,返回给后台。
题目要求
1.程序传入标题title数据类型是str;
2.程序传出数据类型是列表类型,列表中所有元素的数据类型均是 float;
3.如果产品标题title存在多个,则计算相同title商品的总收入;
4.平均价格需要四舍五入保留小数点后2位。
测试用例
输入:’乐高旗舰店官网大电影系列70837Shimmer&Shine闪亮水疗馆玩具积木’
输出;[xxx, xxx, 1598.0]
解释:总收入和平均价格隐藏,当前产品收入总计是1598.0
输入:’乐高旗舰店幻影忍者系列70668雷电忍者杰的暴风战机’
输出:[xxx, xxx, 259073.0]
解释:总收入和平均价格隐藏,当前产品收入总计是259073.0
输入:’乐高旗舰店官网创意百变高手系列10261大型过山车积木成人送礼’
输出:[xxx, xxx, 41986.0]
数据说明
文本数据是excel文件,字段含义如下:
字段 | 含义 | 实例 |
---|---|---|
title | 商品名 | 乐高旗舰店官网 LEGO积木 儿童玩具男孩 积木拼装玩具益智 |
age_range | 商品对应的年龄等级 | 适用年纪6+岁 |
price | 商品价格 | 899.0 |
sales_num | 售卖数量 | 217.0 |
1 | import pandas as pd |
部门平均薪资汇总计算
任务说明
读取给定的职工薪酬考勤簿,职工薪酬考勤簿由两个表格组成,分别是 基本薪资 工作表和 上班通勤 工作表。要求计算每一个部门内部的平均薪资,并把结果 降序 排列,返回给判定程序。
员工个人薪酬计算过程如下:
1.薪资由两部分组成, 月基本薪资 和 通勤工资,另外需要扣除需要缴纳的 社保费及公积金;
2.月基本薪资 = 基本薪资 + 岗位工资 + 绩效工资;
3.通勤工资中计算如下:
日薪 = (基本薪资 + 岗位工资 + 绩效工资) / 应出勤天数
时薪 = 日薪 / 8
4.通勤工资中,法定节假日加班薪资是工作日加班的 2 倍,周末加班工资是工作日加班的 1.5 倍,工作日加班工资与时薪 相同;
5.通勤工资需要扣除因请假导致的缺勤,请假/小时需要扣除的工资按照时薪计算。
6.社保费及公积金个人缴费按照社会保险缴费基数计算:
a.养老保险个人缴费比例是 8%
b.医疗保险个人缴费比例是 2%
c.失业保险个人缴费比例是 1%
d.公积金缴费比例是 10%
示例:
小王基本薪资 2000,岗位工资 2000,社会保险缴费基数是 2000。绩效工资 0,应出勤天数 20 天,请假 1 天,工作日加班 8 小时,法定节假日加班 4 小时,周末加班 4 小时。
小王基本薪资+岗位工资+绩效工资是:2000 + 2000 = 4000;
小王时薪:4000 / 20 / 8 = 25;
小王加班工资:25 * 8 + 25 * 4 * 1.5 + 25 * 4 * 2 = 550;
小王请假扣除:25 * 8 = 200;
小王五险一金扣除:2000 * 0.08 + 2000 * 0.02 + 2000 * 0.01 + 2000 * 0.1 = 420;
小王本月实发工资:4000 + 550 - 200 - 420 = 3930。
假设小王所在部门有 5 个人,5 个人工资分别是 4050,4010,4120,4000,4500。小王所在部门的平均工资是:(3930+ 4010 + 4120 + 4000 + 4500) /5 = 4112。同理可算出其他部门的平均工资。
注意:返回结果需四舍五入保留小数点后两位!
返回结果参数类型是 pd.Series。Series 的索引应为部门名,Series 的数据应为部门平均工资,Series 的 Name 属性应修改为 “平均薪资”。
任务要求
1.程序无需接收参数输入,需要返回结果参数的格式是 pd.Series;
2.返回结果时需要四舍五入保留小数点后两位,计算过程内保留小数点后两位可能导致最后结果不正确;
3.部门平均工资需要降序排列;
4.本题所需的基本薪资表和上班通勤表均在职工薪酬工作簿中,按需读取。
5.Series 数据的类型应为 float 64,Name 属性应为 “平均薪资”。
6.index 的属性名应为部门。
测试用例
部分返回数据:
1 | 部门 |
附件信息
职工薪酬簿.xlsx,职工薪酬工作簿由 基本薪资 工作表和 上班通勤 工作表组成。
1.基本薪资工作表。基本薪资工作表包含个人所属部门,各部分薪资状况和社会保险缴纳基数。共 7 个部门共 50 条数据,其中只有销售部有绩效工资。
2.上班通勤工作表。上班通勤工作表包含本月应出勤天数,实际出勤天数。请假加班天数等。工作表中的名字与基本薪资工作表中的名字一一对应。共 50 条数据。
职工薪酬工作簿
1 | import pandas as pd |
编制比较资产负债表
任务描述
“A企业资产负债表.xlsx”文件的“比较资产负债表”包含 A 企业 2020 年和 2021 年的资产负债数据,请完成以下指定任务。
1.使用 0 填充表格中的空值;
2.计算 2021 年各项目变动额和变动率并添加相关数据列;
3.程序接受某项目的项目名称 name,要求输出该项目对应的变动额和变动率。
任务要求
1.代码要编辑在 balance_sheet 函数下;
2.变动额需要四舍五入保留小数点后 2 位,变动率需要四舍五入保留小数点后 4 位;
3.变动额和变动率的数据类型都是浮点数数据类型;
4.程序只判定 return后的结果值,输出(print)后的结果值不作为判断依据;
5.程序返回结果的数据类型为列表。
测试用例
输入:name=“负债总计”
输出:[26928392.51, 0.2567]
解释:负债总计变动额是 26928392.51,变动率是 0.2567
输入:name=“无形资产”
输出:[-600000.0, -0.0667]
解释:无形资产变动额是 -600000.0,变动率是 -0.0667
输入:name=“负债合计”
输出:[26928392.51, 0.2567]
代码提示
我们通过将 Series 转换为列表的形式,将其中的数字提取出来。
通过如下案例,我们取出 DataFrame 中的 1。
1 | In [1]: import pandas as pd |
1 | import pandas as pd |
某店铺不同地区销售情况分析
题目描述
下方是某店铺在 2 月份的订单数据,共 28010 行、7 列。 在该数据中,每一行代表一笔订单,每一笔订单可以 看做是一位顾客(买家),价格相同的产品可视为同一产品;
请编写程序,完成以下任务:
程序传入参数 area(收货地址),要求计算该地区订单的’订单的付款转化率’、’买家全额支付的转化率’、’买家实际支付总金额’、’客单价’、’销量(订单量)最多的产品的价格’、’买家实际支付总金额在所有地区实际支付总金额中的占比’,并将结果以列表形式返回。
题目要求
1.程序接收 str 类型的 area,返回的结果为 list 数据类型;
2.返回的结果中,列表中各个数据的数据类型为 str,其中转化率数据及占比数据需以百分比的形式输出,并且需要保留小数点后2位,如’13.14%’,其余结果不需要以百分比形式输出,但需要保留小数点后2位;
3.如果某地区所有买家的买家实际支付金额为 0,即该地区没有付费行为。则该地区的’客单价’、’销量(订单量)最多的产品的价格’需返回字符串’本地区无销量’,其他结果则正常计算;
4.如果该产品(订单)被全额退款,那么该产品不计入销量。
参考公式
1.付款转化率 = 付款订单数 / 总订单数;
2.买家全额支付的转化率 = 买家全额支付的订单数 / 总订单数;
3.客单价 = 实际支付金额 / 支付买家数;
测试用例
输入:area = ‘河南省’
输出:[‘81.99%’, ‘61.18%’, ‘56354.03’, ‘92.84’, ‘37.00’, ‘2.96%’]
解释:河南省’订单的付款转化率’为’81.99%’,’买家全额支付的转化率’为’61.18%’,’买家实际支付总金额’为’56354.03’,’客单价’为’92.84’,’销量(订单量)最多的产品的价格’为’37.00’,’买家实际支付总金额在所有地区实际支付总金额中的占比’为’2.96%’
输入:area = ‘江苏省’
输出:[‘86.78%’, ‘66.75%’, ‘159359.18’, ‘109.22’, ‘37.00’, ‘8.38%’]
1 | import pandas as pd |
用户职位信息统计
任务详情
请根据任务下方提供的用户职位统计信息表,完成以下任务:
职位表中每个字段含义如下:
字段 | 说明 |
---|---|
user_id | 用户序号 |
age | 用户年龄 |
gender | 用户性别 |
occupation | 用户职位 |
zip_code | 用户邮编 |
编写一个职位统计函数 jobStatistics(),给定表格里的任一职位,统计其以下信息 |
- 任务一:统计该职位女性用户的百分占比(结果保留两位小数),输出数据类型为 str;
- 任务二:统计该职位女性用户百分占比在所有职位女性用户百分占比中的排名(降序),输出数据类型为 int。
将以上2个结果保存在 数组(list) 中,按顺序返回。
任务要求
- 程序接收一个 str 类型的变量 op,返回一个 list 类型的变量;
- “gender” 列中,“F” 代表女性,“M” 代表男性;
- 返回结果格式如下:[任务一: str, 任务二: int]。
测试用例
输入:‘artist’
输出:[ ‘46.43%’, 4]
解释:该职位中女性用户占据该职位所有用户的46.43%,该职位女性占比排名在所有职位女性占比排名中位列第 4
输入:‘student’
输出:[‘30.61%’, 10]
解释:该职位中女性用户占据该职位所有用户的30.61%,该职位女性占比排名在所有职位女性占比排名中位列第 10
1 | import pandas as pd |
某知名网站高质量视频主挖掘
任务详情
根据下方提供的某知名网站视频信息数据,构造一个打分模型,并根据分值挖掘高质量视频主,要求输入视频主的名字author,返回对应的UP主分层。
IFL模型
针对视频主的视频信息构建了IFL模型,以评估视频的质量。
I (Interaction_rate)
I 值反映的是平均每个视频的互动率,互动率越高,表明其视频更能产生用户的共鸣,使其有话题感。
I = (总弹幕数 + 总评论数) / (总播放量 * 统计范围内视频数量) * 100。
F (Frequence)
F 值表示的是每个视频的平均发布周期,每个视频之间的发布周期越短,说明内容生产者创作视频的时间也就越短,创作时间太长,不是忠实粉丝的用户可能将其遗忘。
F = (统计范围内最晚发布视频时间 - 最早发布视频时间) / 发布视频的数量。
如果 F 的值为 0,表示该视频主仅发布一条视频。那么将 F 的值重新赋值为 F 的最大值 + 1,如原有数据中,F 的最大值是 100,那么就将 F 的最大值设置为 100 + 1 = 101。
L (Like_rate)
L值表示的是统计时间内发布视频的平均点赞率,越大表示视频质量越稳定,用户对up主的认可度也就越高。
L = (点赞数 * 1 + 投币数 * 2 + 收藏数 * 3 + 分享数 * 4) / (播放量 * 发布视频数) * 100。
维度打分
维度确认的核心是分值确定,按照设定的标准,我们给每个视频主的 I/F/L 值打分,分值的大小取决于我们的偏好,
即我们越喜欢的行为,打的分数就越高 :
- I 值。表示 up 主视频的平均评论率,这个值越大,就说明其视频越能使用户有话题,当I值越大时,分值越大。
- F 值。表示视频的平均发布周期,我们当然想要经常看到,所以这个值越大时,分值越小。
- L 值。表示发布视频的平均点赞率,S 值越大时,质量越稳定,分值也就越大。
视频主主分层 我们根据每一项指标是否高于平均值,把UP主划分为8类,我们根据案例中的情况进行划分,具体如下表
视频主分类 | I值是否大于平均值 | F值是否小于平均值 | L值是否大于平均值 | 解释 |
---|---|---|---|---|
高质量视频主 | 1 | 1 | 1 | 用户活跃高,更新周期短,视频质量高 |
高质量拖更视频主 | 1 | 0 | 1 | 用户活跃高,更新周期长,视频质量高 |
高质量内容高深视频主 | 0 | 1 | 1 | 用户活跃低,更新周期短,视频质量高 |
高质量内容高深拖更视频主 | 0 | 0 | 1 | 用户活跃低,更新周期长,视频质量高 |
接地气活跃视频主 | 1 | 1 | 0 | 用户活跃高,更新周期短,视频质量低 |
活跃视频主 | 0 | 1 | 0 | 用户活跃低,更新周期短,视频质量低 |
接地气视频主 | 1 | 0 | 0 | 用户活跃高,更新周期长,视频质量低 |
还在成长的视频主 | 0 | 0 | 0 | 用户活跃低,更新周期长,视频质量低 |
数据链接已经在下方给出: 各字段表示含义如下:
字段名 | 含义 |
---|---|
pubdate | 发布时间 |
bv | BV号 |
url | 视频链接 |
title | 标题 |
author | 作者 |
description | 视频简介 |
tag | 标签 |
favorites | 收藏 |
coins | 投币 |
danmu | 弹幕 |
likes | 点赞 |
reply | 评论 |
views | 播放量 |
share | 分享 |
任务要求
- 程序接收 str 类型的变量 author,返回结果的数据类型是str类型;
- 便于数据美观,IFL 的值需要保留小数点后两位(四舍五入);
- 数据中可能存在重复数据;
- 某知名视频网站视频数据为逗号分割的 csv 文件,utf-8 编码。
测试用例
输入:‘龙爪洪荒’
输出:‘高质量拖更视频主’
输入:‘AO摆渡人’
输出:‘活跃视频主’
1 | 代码暂无 |