三、实战任务(day01)
任务 1:数字筛选(省赛样题「模块二任务一」原式,★★★★★ 必背)
数据文件 :numbers.txt(当前目录,两行,空格分隔,只含整数和小数)
任务要求:
- 读取文件中的全部数据;
- 筛选出偶数 和奇数 ,分别存入两个新列表,小数不纳入奇偶列表;
- 计算偶数列表的总和、奇数列表的最大值;
- 严格按以下格式输出:
偶数列表:[8, 12, 100, 6],偶数总和:126
奇数列表:[3, 7, 33, 9, 21],奇数最大值:33
过关标准 :输出与上面一字不差(列表用 Python 默认打印格式,逗号后有空格)。
任务 2:整数/小数分类统计
数据文件 :numbers.txt
任务要求:
- 统计文件中整数的个数、整数的总和;
- 统计小数的个数、小数中的最大值;
- 输出格式:
整数个数:9,整数总和:199
小数个数:3,小数最大值:4.75
过关标准:四个数字全对;会区分"整数"和"小数"(看有没有小数点)。
任务 3:字符串处理综合
任务要求 :对字符串 s = "Hello World Hello Python Hello BigData" 完成:
- 统计单词个数;
- 找出最长的单词;
- 统计
Hello出现的次数; - 把
Hello全部替换为Hi; - 把句子按单词顺序反转输出;
- 写一个函数
is_palindrome(text),判断字符串是否回文(正读反读相同),测试"上海自来水来自海上"。
任务 4:学生成绩统计系统(省赛样题「模块二任务二」原式,★★★★★ 必背)
任务要求:
- 从控制台接收 10 名学生的姓名和数学、语文、英语三科成绩,输入格式:
张三 90 85 95,输入空行终止输入; - 计算每个学生的总分和平均分;
- 统计三科的最高分、最低分及平均分;
- 所有计算结果保留 1 位小数;
- 输出格式:
- 逐行:
姓名 数学 语文 英语 总分 平均分(如张三 90.0 85.0 95.0 270.0 90.0) - 三科统计:
科目:最高分 最低分 平均分(如数学:95.0 70.0 84.5)
- 逐行:
三、实战任务(day02)
任务 1:文件版成绩统计(Day1 任务 4 的文件版)
数据文件 :score.txt(10 名学生,每行格式:姓名 数学 语文 英语)
任务要求:
- 从
score.txt读取全部学生成绩; - 计算每人总分、平均分(保留 1 位小数);
- 按总分降序 排名,逐行打印并写入
result.txt,格式:
第1名 吴八 数学:95.0 语文:89.0 英语:92.0 总分:276.0 平均分:92.0 - 打印班级总分最高的学生和平均分最高的学生。
过关标准 :result.txt 生成成功;第一名是吴八(总分 276.0)。
任务 2:常用函数库
任务要求:编写并调用以下函数(每个函数都要有注释):
is_prime(n):判断素数;factorial(n):阶乘;fibonacci(n):返回斐波那契数列前 n 项;gcd(a, b):最大公约数;is_palindrome(text):判断回文。
然后调用演示:输出 1~50 的素数、10 的阶乘、斐波那契前 10 项、24 和 36 的最大公约数、"上海自来水来自海上" 是否回文。
任务 3:不用 pandas(改为使用pandas库),统计用户行为日志
数据文件 :behavior2023-01-01.csv(真实用户行为日志,列:client_ip, device_type, type, device, url, time)
任务要求 (只用 Python 标准库 csv):
- 统计各
device_type的数量; - 提取每条 URL 的域名 (如
shop.example.com),统计各域名访问次数;- 注意:数据里可能有空 URL,要先判断再切分,空值归入"未知",保证程序不崩;
- 从
time列(如2023-01-01 23:06:43)提取小时,统计各小时访问量; - 把三项统计写入
report.txt并打印。
三、实战任务(day03)
任务 1:order.csv 读取与探查
数据文件 :order.csv(电商订单,29 行 9 列)
任务要求:
- 读取 CSV,打印数据形状、列名、各列数据类型;
- 打印前 5 行、后 5 行;
- 计算
total_amount的总和、均值、最大值、最小值; - 打印
quantity / unit_price / total_amount三列的describe()。
过关标准:形状是 (29, 9);总和 125123;均值约 4314.59。
任务 2:用户行为日志探查
数据文件 :behavior2023-01-01.csv(130 行,列:client_ip, device_type, type, device, url, time)
任务要求:
- 读取数据,打印形状、列名、前 5 行;
- 统计各
device_type数量(含缺失值,用dropna=False); - 统计各
type(网络类型)数量; - 统计 5G 的记录数;
- 统计 URL 中包含
shop的记录数; - 从
time列提取小时(2023-01-01 23:06:43→23),统计各小时访问量,打印 TOP3。
过关标准:5G 有 37 条;URL 含 shop 有 32 条;TOP3 小时是 21 点(14 次)、23 点(11 次)、19 点(9 次)。
任务 3:条件筛选 + 排序 + 新增列
数据文件 :order.csv
任务要求:
- 筛选
category == "数码配件"且quantity >= 2的记录,按total_amount降序取前 5,只打印product / quantity / total_amount三列; - 统计城市是"合肥市"或"淮南市"的订单数;
- 统计单价在 300~1000 之间的订单数;
- 新增两列:
discount_price(单价打 9 折)、is_big_order(总金额 >= 2000),打印前 5 行的product / unit_price / discount_price / total_amount / is_big_order。
过关标准:第 1 步 TOP5 第一名是智能手机(数量 3,金额 11997);合肥/淮南订单 6 单;300~1000 有 9 单。
任务 4:日期列操作
数据文件 :salesQ1.csv(一季度销售,日期格式规整)
任务要求:
- 把
date列转成日期类型,打印转换后的类型; - 新增
year / month / day / weekday四列,打印前 5 行; - 统计各月订单量;
- 筛选 1 月的订单,打印条数;
- 用日期范围筛选 2 月的订单,打印条数。
过关标准:1 月 14 单、2 月 14 单(各月都是 14 单)。
三、实战任务(day04)
任务 1:order.csv 清洗全套(省赛样题「模块三任务一」原式,★★★★★ 必背)
数据文件 :order.csv
任务要求(严格按样题顺序):
- 读取数据集,打印数据的最后 5 行;
- 清除数据中的重复行,保留第一次出现的数据;
- 日期列格式不统一,统一转换为
YYYY-MM-DD格式; - 检查
order_id列,若存在缺失值,删除包含缺失值的对应行; - 处理完成后,将清洗后的数据保存到
deal_data/clean_order.csv,保留原数据的列顺序及列名; - 每一步都打印出行数变化。
过关标准 :29 行 → 去重后 26 行 → 删缺失后 23 行;deal_data/clean_order.csv 生成成功,日期全是 2025-01-05 样式。
任务 2:salesQ1.csv 清洗(省赛样题「模块三任务二」同款清洗)
数据文件 :salesQ1.csv
任务要求:
- 读取数据,打印原始行数;
- 销售数量
quantity存在负数,属于异常值,将小于 1 的统一处理为 1; - 订单状态
status存在缺失值,将缺失值统一填充为"已失效"; - 保持原始顺序不变,保存到
deal_data/Q1_clean.csv。
过关标准:异常数量 6 行、status 缺失 5 行;保存成功且行序不变。
任务 3:IP 分析与地域标注
数据文件 :behavior2023-01-01.csv(真实日志)、ip_demo.csv(演练 IP 列表)、area.json(IP→省市规则)、dim_area.txt(省市维度表)
任务要求:
- 真实日志部分:盘点各列缺失值数量;提取 IP 前两段作为"网段",统计访问量 TOP5;识别无效 IP(每段应在 0~255 之间),打印无效记录;
- 标注演练部分 :读取
ip_demo.csv,用area.json的前缀规则给每个 IP 标注省/市(匹配不到标"未知");用dim_area.txt校验标注出的省市组合是否合法,打印不合法的记录数;统计各省数量;保存deal_data/ip_demo_with_area.csv。
过关标准:真实日志有 3 条无效 IP(999.999.999.999);device_type 缺失 9 条、type 缺失 8 条、url 缺失 2 条;ip_demo 标注后:安徽 5、浙江 2、河南 2、江苏 1、未知 1。
任务 4:异常值识别与修正
数据文件 :deal_data/clean_order.csv(任务 1 的产物)
任务要求:
- 新增一列
calc_amount = quantity * unit_price,找出total_amount与calc_amount不符的记录并打印; - 以
数量 × 单价为准修正这些记录,删掉辅助列; - 用 IQR 方法识别
total_amount异常值,打印上下界和异常记录数; - 保存
deal_data/clean_order_fixed.csv。
过关标准:能找出 A1099(蓝牙耳机,2×499=998 却写成 500)并修正为 998。