一、项目结构

项目的结构总是为了契合人们的需求而得到不断完善,这会导致在一个团队中出现不同的项目构架。如果你或者团队中的其他人能够及时发现项目结构的重要性,并且这个概念在团队中得到推广,那么,你无疑是幸运的。

多年前作者偶然发现了 R 语言的项目模板 网站。从那之后,作者便一直提倡身边的人使用规范的项目结构。最近,DrivenData 发布了更为普适的 Cookiecutter Data Science 来构建项目结构。

而这些网站在项目构建方面的思路大致如下:

一个连贯且组织良好的结构,以便于人们协作

你的分析应当可复现,而你的项目结构可以满足这个需求

不应该从原始数据作为出发点开始你的项目,而应当假设原始数据不变,创建其他派生的文件

作者简略的项目结构如下所示:

example_project/

├── data/ <- The original, immutable data dump.

├── figures/ <- Figures saved by notebooks and scripts.

├── notebooks/ <- Jupyter notebooks.

├── output/ <- Processed data, models, logs, etc.

├── exampleproject/ <- Python package with source code.

│ └──>这里 看到相关实例。

项目通常遵循另一种结构:

原始数据不变,存储在 data/中;

数据处理和相关输出图分别存储在不同的文件夹下,例如:figures/和output/;

笔记文件存储在notebooks/;

项目信息撰写在README.md中;

项目代码放置在独立的文件夹下。

实际上,你选择什么样的项目结构并不重要,只要它能符合你的工作流程,你也能坚持使用它。你应该尝试去理解何为项目,从而选择满足要求的项目结构。

1.虚拟环境

项目之间应当相互独立,你肯定不希望新的项目打乱了之前的工作成果。我们可以通过把不同项目的文件存储在不同的文件夹下实现独立性,但是不同项目之间也应当使用不同的 Python 环境。

虚拟环境依赖于不同的项目而相互独立,避免了包的冲突问题。每个虚拟环境都安装了特定版本的不同包。虚拟环境一中安装了版本为 1.11 的numpy库和版本为 0.18 的pandas库,而虚拟环境二中则仅仅安装了版本为 0.17 的pandas库。作者选取适用于数据科学的 conda 管理虚拟环境(可在 这里 看到选择它的原因)。

下列命令可以创建一个使用 Python 3.5 的新的 conda 虚拟环境,命名为 example_project:

$ conda install --name example_project python=3.5

激活虚拟环境( Windows 系统下将 source 省去):

$ source activate example_project

之后便可以安装所需的包了:

$ conda install pandas numpy jupyter scikit-learn

当你在不同的项目间跳转时,可以运行source deactivate命令取消激活,并激活新的项目虚拟环境。

一旦你熟练使用activate和deactivate命令,就会发现虚拟环境是一个很轻巧的工具来保证 Python 环境的独立。通过导出环境定义文件(例如,所有安装的包名和版本号),你的项目就很容易得到复现了。如果你想查看更多细节,可在Tim Hopper 的博文 中看到。

2.Git

每个项目都应该有自己的 Git 资源库。在每个项目创建一个资源库可以帮助你追踪每个项目的历史和解决在不同的项目间复杂的版本依赖问题。

又或者,你可以选择在一个资源库中包含多个项目,将所有内容存储在一个位置。这样做的缺点在于往往会因为合并冲突问题而告终(数据科学家通常并不能熟练使用 Git )。除了很多使用 Git 时出现的问题,这也会导致你的项目之间缺乏独立性。

创建 Git 资源库最简单的方法就是在你的 Git 远程主机托管服务(例如,Github 和 GitLab )上创建一个新的 Git 资源库,然后把它复制到本地:

$ git clone https://github.com/hgrif/example-project.git

你可以在这个空文件夹下构建你的项目结构。

如果你按照这个步骤执行,并准备在一个新文件夹下创建一些文件了。那么,你首先还需要在电脑上对 git 资源库进行初始化:

$ git init

然后在你的远程主机上创建一个新的 git 资源库,得到它的链接,并运行下列命令:

$ git remote add origin https://github.com/hgrif/example-project.git

该命令会添加链接为 https://github.com/hgrif/example-project.git 的远程资源库,并命令为 origin 。你可能需要把现有的 master分支推送到origin上:

$ git push --set-upstream origin master

在你的项目目录下创建.gitignore文件可以避免将图或数据误填加进资源库中。作者一般使用 针对 Python 的.gitignore文件 ,并且在文件中加入 data/、figures/ 和 output/ 文件夹,以便 Git 可以忽略它们。

既然 Git 已经设置好了,你就可以对核心内容使用git add和git commit命令了!

3.使用工具

使用一些工具可以帮助你摆脱那些重复性工作。

Python 中的cookiecutter包可根据模板自动创建项目文件夹。你可以使用现有的模板,例如,Cookiecutter Data Science 或者 作者的项目结构模板 ,或是创建你自己新的模板。

使用虚拟环境最好的方法就是选用支持它们的编辑器,比如:PyCharm 。你也可以使用 autoenv 或者 direnv 去激活虚拟环境,并设置环境的变量,如果你cd定位到一个工作目录下的话。

二、结论

对你的数据科学项目有一个良好的设置将会有助于同其他人协作,并且项目本身也会更容易复现。一个好的项目结构,一个虚拟环境和一个 git 资源库是每个数据科学项目的基石。

End.

来源:数据工匠

python怎么使用-如何使用 Python 开始建立相关推荐

  1. header python 环境信息_Python开发必备:如何建立一个完美的项目工程环境

    在程序开发时候一套好的开发环境和工具栈,可以帮我们极大的提高开发的效率,避免把大量时间浪费在周边琐事上.本文以Python为例,教大家如何快速打造完美的Python项目开发环境:内容涵盖了模块依赖管理 ...

  2. 用Tkinter打造自己的Python IDE开发工具(1)建立一个简单的代码编辑器

    用Tkinter打造自己的Python IDE开发工具(1)建立一个简单的代码编辑器 很多Python初学者,安装完Python后,已经包含了IDLE代码开发和调试系统.都会再安装各种Python开发 ...

  3. linux python版本_linux下更新Python版本并修改默认版本

    linux下更新Python版本并修改默认版本,有需要的朋友可以参考下. 很多情况下拿到的服务器python版本很低,需要自己动手更改默认python版本 1.从官网下载python安装包(这个版本可 ...

  4. 【python教程入门学习】Python零基础入门爬虫项目

    Python入门爬虫项目 这是我的第一个python项目,分享给大家. 需求 我们目前正在开发一款产品其功能大致是:用户收到短信如:购买了电影票或者火车票机票之类的事件.然后app读取短信,解析短信, ...

  5. 请问大家如何看待Python?零基础如何学Python?

    给大家整理的这套python学习路线图,按照此教程来一步步的学习,肯定会对python有更深刻的认识.或许可以喜欢上python这个易学,精简,开源的语言.此套教程,不但有视频教程,还有源码分享,让大 ...

  6. rust python扩展_Rust语言优化Python性能案例

    原标题:Rust语言优化Python性能案例 导读:Python 被很多互联网系统广泛使用,但在另外一方面,它也存在一些性能问题,不过 Sentry 工程师分享的在关键模块上用另外一门语言 Rust ...

  7. python快速编程入门例题-Python快速编程入门,打牢基础必须知道的11个知识点 !...

    Python被誉为全世界高效的编程语言,同时也被称作是"胶水语言",那它为何能如此受欢迎,下面我们就来说说Python入门学习的必备11个知识点,也就是它为何能够如此受欢迎的原因. ...

  8. 学python买什么书好-python官方推荐30本面向初学者的书籍!你看过几本?

    现在大多数初学者学习python都是看教学视频,但是小编想说的是,如果你能把一本书籍认认真真的读完,那么比你看教学视频的效果要好的多!今天小编就来带大家看看python官方推荐的30本面向初学者的书籍 ...

  9. python课程价格哪个好-python课程价格

    python课程价格根据所报读的班级不同,价格从一万到两万四不等,详情请咨询客服.随着近年Python的持续走热,越来越多的公司开始使用Python编程语言.具体情况大家可以看一下各个招聘平台的具体数 ...

  10. python与人工智能编程-python学习(一)——python与人工智能

    最近在朋友圈转起了一张图.抱着试一试的心态,我肝了些课程.都是与python相关的. 课程一:你不知道的python 讲师:王玉杰(混沌巡洋舰联合创始人 & web开发工程师 & 数据 ...

最新文章

  1. Servlet登陆功能的实现
  2. 一步一步打造Geek风格的技术博客
  3. 【NLP】预训练时代下的文本生成|模型技巧
  4. Oracle11g rac监听,关于oracle11g RAC 监听器使用中出现的no services以及no listener分析...
  5. 记账程序及GitHub学习记录3
  6. 【mysql】解决MySQL GPG密钥过期问题
  7. 如何使用PSDatabaseClone设置基于图像SQL Server数据库配置
  8. 前轮转向最大角度设计原来_五桥转向故障
  9. arm b bl 地址无关码_海边同居有甜有虐,又一部BL日剧来了
  10. 集成阿里云视频播放器
  11. 微信群控二次开发SDK
  12. linux ubuntu下网络调试助手(GUI)工具
  13. 一个小小的Java表白小代码
  14. Python每日一题 - 5 - 求一元二次方程的根
  15. hssfrow 单元格样式_poi导出excel单元格中画斜线_AnyReport报表
  16. 网站中qq 跳转 和qq群问题
  17. effective c++ 23NVI手法
  18. 产业分析:工业机器人市场研究
  19. Response响应详解
  20. 上海理工大学计算机专业录取分数线,上海理工大学录取分数线2021是多少分(附历年录取分数线)...

热门文章

  1. js判断字符串是否在数组中
  2. 利尔达NB-IOT模块对接移动onenet平台步骤
  3. gridview checkbox从服务器端和客户端两个方面实现全选和反选
  4. 【转】LDA-linear discriminant analysis
  5. Bailian4018 子串【字符串】
  6. CCF201803-3 URL映射(100分)【文本处理+暴力】
  7. 树莓派与node.js —— onoff、dht
  8. 音乐的聆听 古典音乐的入门
  9. 强悍的 ubuntu —— ubuntu 与 windows 双系统的交互
  10. ubuntu 的使用(三)—— 实用小工具