零IT资源也能在线数据分析

技术是第一生产力

现在是最好的时代,也是最坏的时代。
在技术宅的眼中,除了知识本身,其他的都应该免费,这将会是多么美好的时代。
很久以前,我们需要做数据分析,需要有自己的计算机资源,需要学习各种安装包准备环境,为了能随处展示还要做成各种格式的ppt。这些慢慢都可以成为历史了。
现在你只需要专心在技术本身,Python、Jupyter、Numpy、Pandas等等,对于不依赖大规模数据计算,对计算机依赖不高的部分工作。只要你有一根网线一个终端就可以在任何地方做数据分析,随时展示给目标人群。

解决方案 Github + JupyterNote + Binder

GitHub仓库

GitHub作为代码和资源池仓库,保存所有数据(连接)、源码、以及分析结果。

JupyterNote

数据分析,最方便的工具还是Jupyter NoteBook。实时交互,文档和代码统一,所见即所得。

选用JupyterNoteBook,对于在线的互动计算资源,可以选用官方的Binder

Binder

Binder 项目是官方提供的,为Github上托管的代码提供动态的计算资源的项目。
简单的说,只需要你在GitHub上托管JupyterNotebook项目库,你就能在Binder上动态创建一个Docker环境,环境中有包含运行代码所必须的软件及硬件资源。
Binder怎么能知道我们项目需要哪些软件环境了,其实就是在普通给的GitHub项目中添加了一个Configure文件。配置文件的格式及功能有很多,如果使用功能不复杂的话,简单了解一下## environment.yml就好了,简单的说就是个Conda环境的配置文件,加载的时候自动在Conda里面安装配置的软件。

应用实例

创建GitHub项目

新建的GitHub项目必须是Public的,因为Binder目前不提供用户登录,只是单纯按照提供的连接动态部署计算环境。

  • 新建工程BinderOne
  • 新建配置文件(在根目录上直接添加,或者放在新建的binder目录下)。
    有了Binder的配置文件,Binder启东时就可以根据配置文件,自动下载所有需要的安装包,并同步仓库内的所有源代码文件。是不是有点太。。。方便了,飞机都备好了,下面就可以起飞了。
    • environment.yml
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      name: yutianc-data-environment
      channels:
      - damianavila82
      - conda-forge
      dependencies:
      # Jupyter
      - jupyterlab
      - nodejs
      - notebook
      - tornado
      - nbconvert
      - widgetsnbextension
      - jupyter_contrib_nbextensions
      #Python
      - python=3.7
      - ipywidgets
      - numpy
      - scipy
      - matplotlib
      - pandas
      - bokeh
      - plotly
      - rise
      - appmode
      - jieba
      - wordcloud

启动Binder计算环境

  • 将新建的GitHub仓库连接,复制到Binder中,点Lunch就能发射了。
  • 项目启动之后,可以看见JupyterNoteBook环境已经启动正常启动,仓库中项目的文件都可以通过notebook正常访问。
  • 如果需要切换到JupyterLab,可以在不重新编译的情况下,直接将URL的tree改成lab即可。JupyterLab支持客户端,可以测试一下pip安装以及其他和Linux相关的操作。
  • GitHub仓库在加载成功之后,如果仓库没有修改,用上图中同样的URLhttps://gke.mybinder.org/v2/gh/leichong2019/BinderOne/master可以重复访问,此时因为不需要重新下载安装依赖包,加载的速度会快很多。
  • 如果GitHub仓库在上次加载之后,有commit修改过,也可以直接用上图同样的URL访问啊,Binder会自动重建计算环境。。。对啊,就是那么智能。Binder会重下依赖包,准备依赖环境,重新同步仓库代码。简直就是梦寐以求的大管家啊。 现在唯一的问题就是速度了,期待以后Binder推出付费版的快速通道。有钱的金主们走fast pass,支持Private仓库,一键走起部署,算力无上限。
  • 运用实例

想想对于做数据分析项目的童鞋,处理好所有问题提交仓库,剩下的就是在任何能上网的环境修改展示。结合JupyterNoteBook的slider插件,互动的ppt都是及时可得,随时修改随时出实时结果。