问题描述
受数据科学项目结构模板的启发,如下所示:https://medium.com/swlh/how-to-structure-a-python-based-data-science-project-a-short-tutorial-for-beginners-7e00bff14f56 我想知道您将如何改进此结构以处理最小的测试示例(它不是单元测试,而更像是一种功能测试)运行整个项目。
我可以想象我的包中有一个 main.py 模块来运行整个管道并提供数据样本,这样可以让对项目感兴趣的人快速运行它并更好地理解项目。
但是我可以把这个样本数据放在哪里(这将是大小之间的妥协,以提高运行“功能测试”的速度,保持输出显着而不是无意义)?
我被告知版本控制数据不是一个好主意(事件样本),而且如果是合理的数据,我们的负责人不会很好地看到它。 由于我的公司持有具有访问权限的共享硬盘驱动器,我想将这些测试数据放在这个位置,并在我的代码中提供一个 get_data.py,它将下载项目的 data/raw 文件夹中的数据。
你觉得怎么样?数据科学家有哪些最佳实践?
解决方法
- 设置好
.gitignore
,确保不要将任何数据或类似数据上传到服务器。避免上传到回购笔记本也很好。 - 有关存储库中的通用内容,请参阅 here 部分:“生成的项目内容”。我会说,最好有:测试、脚本、笔记本,以及用于放置未来可以重用的酷功能的模块等等。
- 我认为放置一些虚假数据可能很有趣。看看 Faker 来创建样本可能很有趣:https://pypi.org/project/Faker/
- 也许将 doctest 用于测试和文档是很好的。
- Sphinx 可以很好地用于文档。
总的来说,我会说你将要面对的大多数情况已经被其他人所面对,所以也许尝试贡献或遵循一些好的包/库,如下所示。
最好检查一下他们在做什么/做了什么。
对于数据管道的特殊情况,它可能很复杂,因为可能涉及不同的人和不同的技术(数据库、python、R ...)。我认为总的来说,拥有良好的文档是件好事,如上所述。根据我的经验,我会尝试将所有内容放在一个地方。就像在脚本中一样。此外,我会尝试放置警告和错误,以确保您尽可能地改进管道。