<commit_before>---
layout: post
comments: true
title: Dash：为数据科学打造的网页应用Python框架
published: true
---

数据科学工作者常常需要构建关于数据和模型的可视化界面，使得分析结果更加直观，或者模型使用更加简易。日常工作中几种常见的数据分析可视化方法有：

1. 直接在 Jupyter Notebook 中进行可视化
    
    我们常常会直接在 Jupyter Notebook 之中使用 Matplotlib 或者 Seaborn 等优秀的软件包进行数据可视化。作为数据工作者这是一种非常方便的分享方式。Jupyter Widget 现在也已经可以支持很多交互式的可视化。然而对于没有编程经验的人比如老板们来说，安装 Jupyter、设置环境和依赖包、运行 cell 直到生成可视化的图标是有一些门槛的。

2. 将代码生成的可视化结果截图放到 PPT 中
    
    把结果截图放到 PPT 中是数据可视化门槛最低的方式。然而静态的图片完全限制了用户的交互性，给人浅尝辄止、意犹未尽、无法沉浸其中的感觉。

3. 将数据生成并导入到如 Power BI 或 Tableau 等工具中可视化

    把数据导入到 Power BI 或者 Tableau 中这也没毛病，而且很多不写代码的同事甚至客户都非常喜欢这样的形式。但这几种工具都是要钱的，而且有时候千奇百怪的需求他们的功能模块中也不一定都有，因为是闭源的商业软件开发者也无法自行扩展功能。

4. 使用 Flask, Django 等框架搭建网页应用

    直接当做前端工程来做，使用 Flask 或者 Django 这样的框架来设计自己的网页应用，这是最硬核的方法，Respect！但是往往算法或者数据工程师并没有太多的前端开发背景，而且一入前端深似海，数据方面层出不穷的新技术新算法都学不过来了，年纪又大了...好吧都是借口...
<commit_msg>modify<commit_after>---
layout: post
comments: true
title: Dash：数据科学到网页应用的最后一公里
published: true
---

数据科学工作者常常需要构建关于数据和模型的可视化界面，使得分析结果更加直观，或者模型使用更加简易。日常工作中几种常见的数据分析可视化方法有：

1. 直接在 Jupyter Notebook 中进行可视化
    
    我们常常会直接在 Jupyter Notebook 之中使用 Matplotlib 或者 Seaborn 等优秀的 Python 软件包进行数据可视化。作为数据工作者这是一种非常方便的分享方式。Jupyter Widget 现在也已经可以支持很多交互式的可视化。然而对于没有编程经验的人比如老板们来说，安装 Jupyter、设置环境和依赖包、运行 cell 直到生成可视化的图标是有一些门槛的。

2. 将代码生成的可视化结果截图放到 PPT 中
    
    把结果截图放到 PPT 中是数据可视化门槛最低的方式。然而静态的图片完全限制了用户的交互性，给人浅尝辄止、意犹未尽、无法沉浸其中的感觉。

3. 将数据生成并导入到如 Power BI 或 Tableau 等工具中可视化

    把数据导入到 Power BI 或者 Tableau 中这也没毛病，而且很多不写代码的同事甚至客户都非常喜欢这样的形式。但这几种工具都是要钱的，而且有时候千奇百怪的需求他们的功能模块中也不一定都有，因为是闭源的商业软件开发者也无法自行扩展功能。

4. 使用 Flask, Django 等框架搭建网页应用

    直接当做前端工程来做，使用 Flask 或者 Django 这样的框架来设计自己的网页应用，这是最硬核的方法，Respect！但是往往算法或者数据工程师并没有太多的前端开发背景，而且一入前端深似海，数据方面层出不穷的新技术新算法都学不过来了，年纪又大了...好吧都是借口...

{'fraction_non_alphanumeric': 0.06148491879350348, 'fraction_numerical': 0.004640371229698376, 'mean_word_length': 6.876712328767123, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3230065', 'n_tokens_mistral': 1367, 'n_tokens_neox': 1565, 'n_words': 118}