在编程语言中,写函数就像是制作一个魔术箱,进去一个东西,出来另外一个东西,像是变了个魔术一样神奇。
但作为数据分析师,真是不爱写函数,清洗数据?那就按部就班的做就好了,见招拆招,为啥要费脑筋写那个函数呢?
写函数的优点
- 结构更清晰,可读性好,降低修改维护成本
- 代码复用性高,可提升效率
教你写简单的函数
写一个实现数据清洗处理的函数,能够让这些脏脏的字符串,洗白白了输出,显示为整洁的首字母大写,其他字母小写的规整的字符串。
# 这是一些待清洗处理的字符串
In [245]: strings = [' Alabama ','Georgial!','Geogia','FlOrIda',
...: 'south carolina##','West virginia?']
In [244]: def clean_strings(strings):
...: result = []
...: for value in strings:
# 去掉字符串前、后多余的空格
...: value = value.strip()
# 去掉字符串中的标点符号
...: value = re.sub('[!#?]','',value)
...: print(value,value.title(),'\n')
# 将字符串转化为title模式,首字母大写,其余小写
...: value = value.title()
...: result.append(value)
...: return result
教你写高级的函数
把清洗数据的大函数拆解为更细颗粒度的函数。
- 去除空格:str对象自带的strip方法可以实现这个功能,无需我们编写,直接调用str.strip()就可以了
- 去除标点符号:这个功能需要我们自己编写一下
- title样式的字符:str对象的title()方法可以实现这个功能,也是直接调用str对象的title()方法
# 编写一个去除特殊符号的函数
In [248]: def remove_punctuation(value):
...: return re.sub('[#?]','',value)
...:
In [249]: clean_ops = [str.strip, remove_punctuation, str.title]
In [250]: type(clean_ops)
Out[250]: list
In [251]: clean_ops
Out[251]:
[<method 'strip' of 'str' objects>,
<function __main__.remove_punctuation(value)>,
<method 'title' of 'str' objects>]
In [256]: def clean_strings(strings,ops):
...: result = []
...: for value in strings:
# 注意ops参数是可迭代的
...: for function in ops:
...: print(value, function,function(value),'\n')
...: value = function(value)
...: result.append(value)
...: return result
...:
最下面这个clean_strings()高明之处就在于,实现的功能是输入字符串参数,输入想要做的处理参数,就可以按照指定的功能进行清洗。
你可以这么调用,一次性对strings变量实现3种操作,即clean_ops种的strip(),remove_punctuation(),title()。
In [253]: clean_strings(strings, clean_ops)
当然也可以只对字符串实施去空格操作,这时候传参可以直接用[str.strip]
In [258]: clean_strings(strings,[str.strip])
数据分析师日后也还要多写函数,提升自己的代码设计能力哦😯⛽️
👏👏👏再看看我们以前的文章😃😃😃
🌺 Excel中数据分析工具库-相关系数篇
🌺 干货,手把手教会你做相关性分析
🌺 5年数据分析路,小结。
🌺 用户细分及画像分析
🌺 K-近邻算法及实践
欢迎关注,微信公众号“数据分析师之家”
扫描二维码 关注我们
💁提供职业规划、简历指导、面试辅导服务哦
QQ交流群:254674155
数据分析之家联合JEE RAY品牌为粉丝派发福利
添加粉丝福利派发官,领取粉丝福利哦