数据分析师也要学会写漂亮的Python函数

在编程语言中,写函数就像是制作一个魔术箱,进去一个东西,出来另外一个东西,像是变了个魔术一样神奇。

但作为数据分析师,真是不爱写函数,清洗数据?那就按部就班的做就好了,见招拆招,为啥要费脑筋写那个函数呢?

写函数的优点
  • 结构更清晰,可读性好,降低修改维护成本
  • 代码复用性高,可提升效率
教你写简单的函数

写一个实现数据清洗处理的函数,能够让这些脏脏的字符串,洗白白了输出,显示为整洁的首字母大写,其他字母小写的规整的字符串。

# 这是一些待清洗处理的字符串
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品牌为粉丝派发福利

在这里插入图片描述
添加粉丝福利派发官,领取粉丝福利哦

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值