Python练习:数据清洗

小明正在为完成一份某品牌各类产品的销量调研报告而努力。然而,她在开展工作的过程中遇到了一个棘手的问题:从网上下载的源数据(列表 source_data)状况十分糟糕,里面不仅混杂着大量毫无意义的文字,还充斥着各种乱码,导致这些数据几乎无法使用。你是否能够运用python,来帮助小明解决这个难题,完成数据清洗工作呢?

要求:

  1. 对于数字(包括整数和浮点数),统一存入列表 data 并打印;
  2. 对于字符串类型的无效数据,统一存入 wrong_data 并打印。

答案

source_data = [46.0, 53, 28.7, 66, '¥%@¥#%', '文字', 70, '¥%@¥#%', '这是一段乱码', '这是一段乱码', 51, 69, 'py', 92, 'ui', 'sah', 59, 42, '¥%@¥#%', 59, 88, '文字', 91, 'sah', '¥%@¥#%', 33, 'sah', 'py', 49, 69, 85, '¥%@¥#%', 'ui', '这是一段乱码', '文字', 'DAFDA', 22, '文字', 31, 58, 73, 82, 'sah', 'sah', 'DAFDA', 'DAFDA', '文字', 20, 15, 'sah', 58, 91, 36, '¥%@¥#%', 'py', '这是一段乱码', '文字', 22, '这是一段乱码', 'ui', 71, 35, '这是一段乱码', 'sah', 'DAFDA', 'ui', 'py', 'sah', '这是一段乱码', '文字', 97, '这是一段乱码', 27, 21, 39, '文字', 17.1, 31, 32, 70, 4, '¥%@¥#%', 50, '¥%@¥#%', 10, 'py', '文字', 'ui', 60, '这是一段乱码', 4, 'ui', 47, '文字', 'DAFDA', '这是一段乱码', 'DAFDA', 'DAFDA', 80, 52]
data = [num for num in source_data if isinstance(num, (int, float))]
wrong_data = [s for s in source_data if isinstance(s, str)]
print(data)
print(wrong_data)

列表推导式

通过一行代码生成新的列表,可以理解成简化的 for 循环,原型:

[expression for item in iterable if condition]

内置函数:isinstance()

用于判断数据类型,原型:

isinstance(object, classinfo)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值