加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

数据科学家易犯的十大编码错误,你中招了吗?

发布时间:2019-05-06 11:10:32 所属栏目:优化 来源:机器之心编译
导读:数据科学家比软件工程师擅长统计,又比统计学家擅长软件工程。听起来牛逼轰轰,事实却是,许多数据科学家有统计学背景,却没有什么软件工程方面的经验,因此在编码时容易犯一些简单的错误。作为一名高级数据科学家,本文作者总结了他在工作中常见数据科学

解决方案:用 assert 语句检查数据质量。Pandas 也有相同的测试,d6tstack 可以检查数据的获取,d6tjoin 可以检查数据的连接。检查数据的示例代码如下:

  • d6tstack:https://github.com/d6t/d6tstack
  • d6tjoin:https://github.com/d6t/d6tjoin/blob/master/examples-prejoin.ipynb
  1. assert df['id'].unique().shape[0] == len(ids) # have data for all ids? 
  2. assert df.isna().sum()<0.9 # catch missing values 
  3. assert df.groupby(['g','date']).size().max() ==1 # no duplicate values/date? 
  4. assert d6tjoin.utils.PreJoin([df1,df2],['id','date']).is_all_matched() # all ids matched? 

8. 没有注释代码

我明白你急着做分析。于是你把代码拼凑起来得到结果,把结果交给你的客户或者老板。一周之后他们找到你,问你「你能改掉 xyz 吗?」或「你能更新一下结果吗?」。然后你和自己的代码大眼瞪小眼,既不记得你为什么要这么做,也不记得你做过什么。现在想象一下其他人运行这段代码时的心情。

  1. def some_complicated_function(data): 
  2.     datadata = data[data['column']!='wrong'] 
  3.     datadata = data.groupby('date').apply(lambda x: complicated_stuff(x)) 
  4.     datadata = data[data['value']<0.9] 
  5.     return data 

解决方案:即便你已经完成了分析,也要花时间注释一下你做过什么。你会感谢自己的,当然其他人会更加感谢你!这样你看起来会更专业!

9. 把数据存成 csv 或 pickle

说回数据,毕竟我们讨论的是数据科学。就像函数和 for 循环一样,CSV 和 pickle 文件也很常用,但它们其实并没有那么好。CSV 不包含模式(schema),所以每个人都必须重新解析数字和日期。Pickle 可以解决这一点,但只能用在 Python 中,而且不能压缩。这两种格式都不适合存储大型数据集。

  1. def process_data(data, parameter): 
  2.     data = do_stuff(data) 
  3.     data.to_pickle('data.pkl') 
  4. data = pd.read_csv('data.csv') 
  5. process_data(data) 
  6. df_train = pd.read_pickle(df_train) 

解决方案:用 parquet 或者其他带有数据模式的二进制数据格式,最好还能压缩数据。d6tflow 可以自动将数据输出存储为 parquet,这样你就不用解决这个问题了。

parquet:https://github.com/dask/fastparquet

10. 使用 Jupyter notebook

这个结论还有一些争议——Jupyter notebook 就像 CSV 一样常用。很多人都会用到它们。但这并不能让它们变得更好。Jupyter notebook 助长了上面提到的许多不好的软件工程习惯,特别是:

  • 你会把所有文件存在一个目录中;
  • 你写的代码是自上而下运行的,而不是 DAG;
  • 你不会模块化你的代码;
  • 代码难以调试;
  • 代码和输出会混合在一个文件中;
  • 不能很好地进行版本控制。

Jupyter notebook 很容易上手,但规模太小。

解决方案:用 pycharm 和/或 spyder。

原文链接:

https://medium.com/m/global-identity?redirectUrl=https%3A%2F%2Ftowardsdatascience.com%2Ftop-10-coding-mistakes-made-by-data-scientists-bb5bc82faaee

【本文是51CTO专栏机构“机器之心”的原创译文,微信公众号“机器之心( id: almosthuman2014)”】

戳这里,看该作者更多好文

【编辑推荐】

  1. “老司机”划重点!搞定这120个真实面试问题,杀进数据科学圈
  2. 数据科学难在实践,有哪些弯路可以不走?
  3. 数据科学的下一个「超能力」:模型可解释性
  4. 除Kaggle外,还有哪些顶级数据科学竞赛平台
  5. 14个Q&A,讲述python与数据科学的“暧昧情事”
【责任编辑:赵宁宁 TEL:(010)68476606】
点赞 0

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!