「本文参与少数派 2019 年度征文 + 效率有心得」
不用学前端编程,你就能用 Python 简单高效写出漂亮的交互式 Web 应用,将你的数据分析成果立即展示给团队和客户。
痛点
从我开始折腾数据分析工具的那一天,就没有想明白一件事儿 —— 为什么我打算把数据分析的成果做成一个应用,这么难?
其实我需要的核心功能,无非是在网页上接收用户输入,然后做分析处理,把分析结果反馈给用户,完事儿。
可是这谈何容易?
很多人都会笑着告诉你,这得学前端编程, HTML + Javascript 了解一下吧!
什么?你还需要在后台做数据分析?那你就得学 Web 框架了。
你说喜欢 Python ?那就学个 Django 或者 Flask 好了。
我也不是没有看过 Django 和 Flask 的教程,还曾经付费学习过。光是配置环境,就得循序渐进学一堆东西。作为学习的中间成果,我还写了这篇《如何用 Python 做 Web 开发?——Django 环境配置》分享给你。
问题是我在学习中,提不起真正的兴趣。
因为教程里讲的那些功能,我根本不关心。
核心的功能,我早已实现了。我只是希望把输入输出弄成网页形式,方便用户来用。
我为什么要理解那么多的概念?为什么一定要跟那么繁重的数据库操作打交道?为什么几乎所有的样例,都要教我如何做一个 blog ?
我要是想用 blog ,可以直接注册一个免费的啊!难道我要自己开发?
你的教程为什么不干脆教我怎么把数据科学的分析结果,利用这些技术快速变成一个产品?
但是人家写书和做教程的人,就是不疾不徐,坚持一定要教会你,如何做一个 blog 出来……
我仿佛看见达芬奇的老师教学生画鸡蛋一样。
我相信,这绝不仅仅是我一个人的痛点。
我们都希望尽快把数据分析结果,或是其他的交互功能发布出来,和用户交流。但是因为缺乏这样的简单 Web 包裹,我们不得不每次都给别人展示一个包含了代码的 Jupyter Notebook 。
那些不懂编程的用户,看到代码,就会觉得不适。再看到改变一个输入都需要编程(其实就是改语句中的一个赋值),立刻就决定不玩儿了。
万万没想到,这个痛点,如此容易就解决了。
尝试
我用纯 Python 脚本写了个 Web 应用。
我编写的程序里,没有一丝半毫的 Web 框架,Javascript,甚至是 HTML 。
这玩意儿能用吗?
你自己来试试看。
请你打开浏览器,输入以下链接:
你会看到下面的初始化界面。
初始化完毕之后,页面会分成左右两栏。左面是两个下拉候选框,分别让你指定需要分析的数据范围。
上面一个,是事件类型;
下面一个,是事件发生归属地。
只不过,当时我们更注重的,是用循环神经网络搭建了一个严重拥堵事件预测模型。
而今天,我们是要进行探索性数据分析,也就是根据我们感兴趣的目标,对数据进行整理操作,然后可视化显示。
选定之后,你会看到右侧提示两个信息:
你筛选之后,数据框包含行数;
在层叠地图上的可视化结果。
怎么样?
麻雀虽小,五脏俱全。
虽然咱们这个 Web 应用很简单,不过交互分析该有的功能和流程,基本上都涵盖了。
你可能会问:
王老师,编这么一个应用出来,不简单吧?
学完这篇教程,你就能自己开发出这样一个应用来。
幕后
我把这个应用的全部源代码,都为你存储到了 Github 上。请你访问这个网址获取。
可以看到,一共包含了 4 个文件。
有意思的是,其中 3 个,包括:
Procfile
setup.sh
requirements.txt
都只是部署到远程服务器时,需要用到的配置文件而已。
这些文件的具体使用方法,咱们后面会说明。
也