Python 使用map()和reduce()清洗数据,清洗数据时经常需要引入复杂度不同的过滤器来剔除无效数据,下面通过定义映射将有效但格式不规范的数据,转换为有效且格式规范的数据。
首先定义如下函数:
comma_fix()
函数通过去掉字符串中的逗号,将格式不规范的表达数字的字符串转换为实数,类似的场景还有去掉字符串中的$
符号并转换为decimal.Decimal
类型数据。
然后可以将一个执行清洗操作的映射函数(这里是comma_fix()
类)应用于数据,再用operator.add
方法进行归约。
清洗过程如下所示:
这样就通过修正逗号实现了清洗数据并计算总和,组合两项操作的语法也很简单。
请注意,应避免多次调用清洗函数,比如计算一组数据的平方和时,不应执行如下命令:
由于计算数据的标准差时也要用到clean_sum(comma_fix, d)
方法,就执行了两次修正逗号的操作,一次计算数据总和,一次计算平方和,这样的算法设计很差。用lru_cache
装饰器缓存计算结果会有帮助,更好的方法是将清洗的中间结果实例化到临时的元组对象中。