Python 交互式数据可视化框架:Dash(上)(1)

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

要开发应用,您需要一个新目录来存储代码和数据,以及一个干净的Python 3 虚拟环境。要创建这个环境,请按照以下说明进行操作,选择与您的操作系统匹配的版本。

如果您使用的是Windows系统,请打开命令提示符并执行以下命令:

c:\> mkdir avocado_analytics && cd avocado_analytics
c:\> c:\path\to\python\launcher\python -m venv venv
c:\> venv\Scripts\activate.bat

第一个命令为您的项目创建一个目录,并将当前位置移动到该目录。第二条命令在该位置创建一个虚拟环境。最后一条命令激活虚拟环境。确保将第二个命令中的路径替换为Python 3启动器的路径。

如果您使用的是macOS或Linux系统,请从终端执行以下步骤:

$ mkdir avocado_analytics && cd avocado_analytics
$ python3 -m venv venv
$ source venv/bin/activate

前两个命令执行以下操作:

1、创建一个名为avocado_analytics的目录

2、将您当前的位置移动到avocado_analytics目录

3、在该目录中创建一个干净的虚拟环境venv

最后一条命令激活您刚刚创建的虚拟环境。

接下来,您需要安装所需的库。您可以在虚拟环境中使用pip来实现。如下安装库:

(venv) $ python -m pip install dash==1.13.3 pandas==1.0.5

此命令将在您的虚拟环境中安装Dash和pandas。您将使用这些软件包的特定版本,以确保与本教程中使用的环境具有相同的环境。除了Dash之外,pandas还可以帮助您读取和处理将在应用程序中使用的数据。

最后,您需要一些数据以将其输入到仪表板中。将数据另存为avocado.csv在项目的根目录中。到目前为止,您应该已经有了一个虚拟环境,其中包含必需的库以及项目根文件夹中的数据。您项目的结构应如下所示:

avocado_analytics/
|
├── venv/
|
└── avocado.csv

接下来,您将构建第一个Dash应用程序。

如何构建Dash应用程序

分两个步骤考虑构建Dash应用程序的过程:

  • 根据应用的布局来定义应用的外观。
  • 使用回调函数来确定应用程序的哪些部分是交互式的,以及它们如何响应。

在本节中,您将了解布局,在下一节中,将学习如何使仪表板具有交互性。首先,设置初始化应用程序所需的所有内容,然后定义应用程序的布局。

初始化您的Dash应用程序

在项目的根目录中创建一个名为app.py的空文件,然后在本节中查看app.py的代码。

这是app.py的前几行:

import dash
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd

data = pd.read_csv("avocado.csv")
data = data.query("type == 'conventional' and region == 'Albany'")
data["Date"] = pd.to_datetime(data["Date"], format="%Y-%m-%d")
data.sort_values("Date", inplace=True)

app = dash.Dash(__name__)

在第1至4行中,导入所需的库:dashdash_core_componentsdash_html_componentspandas。每个库都为您的应用程序提供了一个构建模块:

  • dash可帮助您初始化应用程序。
  • dash_core_components允许您创建交互式组件,例如图形,下拉列表或日期范围。
  • dash_html_components使您可以访问HTML标记。
  • pandas可以帮助您阅读和整理数据。

在第6到9行中,您将读取数据并对其进行预处理以在仪表板中使用。之所以要过滤掉某些数据,是因为当前版本的仪表板不是交互式的,否则绘制的值就没有意义了。

在第11行上,创建Dash类的实例。如果您以前使用过Flask,则初始化Dash类可能看起来很熟悉。在Flask中,通常使用Flask(__ name__)初始化WSGI应用程序。同样,对于Dash应用程序,您可以使用Dash(__ name__)

定义Dash应用程序的布局

接下来,您将定义应用程序的layout属性。此属性决定了您应用的外观。在这种情况下,您将使用标题下方带有说明的标题和两个图表。定义方式如下:

app.layout = html.Div(
    children=[
        html.H1(children="Avocado Analytics",),
        html.P(
            children="Analyze the behavior of avocado prices"
            " and the number of avocados sold in the US"
            " between 2015 and 2018",
        ),
        dcc.Graph(
            figure={
                "data": [
                    {
                        "x": data["Date"],
                        "y": data["AveragePrice"],
                        "type": "lines",
                    },
                ],
                "layout": {"title": "Average Price of Avocados"},
            },
        ),
        dcc.Graph(
            figure={
                "data": [
                    {
                        "x": data["Date"],
                        "y": data["Total Volume"],
                        "type": "lines",
                    },
                ],
                "layout": {"title": "Avocados Sold"},
            },
        ),
    ]
)

这段代码定义了app对象的layout属性。此属性使用由Dash组件组成的树结构确定应用程序的外观。

Dash组件预先包装在Python库中。在安装Dash时,其中一些会附带Dash。其余的您必须单独安装。几乎每个应用程序中都会看到两组组件:

1、Dash HTML Components(https://dash.plotly.com/dash-html-components)为HTML元素提供Python包装器。例如,您可以使用此库来创建元素,例如段落,标题或列表。

2、Dash Core Components(https://dash.plotly.com/dash-core-components)组件为您提供了用于创建交互式用户界面的Python模块。您可以使用它来创建交互式元素,例如图形,滑块或下拉菜单。

在第13至20行,您可以在实践中看到Dash HTML组件。首先定义父组件html.Div。然后,再添加两个元素,即标题(html.H1)和段落(html.P)作为其子元素。

这些组件等效于divh1p HTML标签。您可以使用组件的参数来修改标签的属性或内容。例如,要指定div标记内的内容,请使用html.Div中的children参数。

组件中还有其他参数,例如styleclassNameid,它们引用HTML标签的属性。在下一部分中,您将看到如何使用其中的一些属性来设置仪表板的样式。

第13至20行所示的部分布局将转换为以下HTML代码:

<div>
  <h1>Avocado Analytics</h1>
  <p>
    Analyze the behavior of avocado prices and the number
    of avocados sold in the US between 2015 and 2018
  </p>
  <!-- Rest of the app -->
</div>

当您在浏览器中打开应用程序时,将呈现此HTML代码。它遵循与Python代码相同的结构,带有div标记,其中包含h1p元素。

在布局代码段的第21至24行中,您实际上可以从Dash 核心组件中看到图形组件。app.layout中有两个dcc.Graph组件。第一个绘制了研究期间鳄梨的平均价格,第二个绘制了同期美国鳄梨的销售数量。

在后台,Dash使用Plotly.js生成图形。dcc.Graph组件需要一个包含绘图数据和布局的图形对象或Python字典。在这种情况下,请提供后者。

最后,这两行代码可帮助您运行应用程序:

if __name__ == "__main__":
    app.run_server(debug=True)

第48和49行使您可以使用Flask的内置服务器在本地运行Dash应用程序。来自app.run_serverdebug = True参数在您的应用程序中启用热重载(hot-reloading)选项。这意味着当您对应用程序进行更改时,它会自动重新加载,而无需重新启动服务器。

最后,这是app.py的完整版本。您可以将此代码复制到之前创建的空app.py文件中。

import dash
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd

data = pd.read_csv("avocado.csv")
data = data.query("type == 'conventional' and region == 'Albany'")
data["Date"] = pd.to_datetime(data["Date"], format="%Y-%m-%d")
data.sort_values("Date", inplace=True)

app = dash.Dash(__name__)

app.layout = html.Div(
    children=[
        html.H1(children="Avocado Analytics",),
        html.P(
            children="Analyze the behavior of avocado prices"
            " and the number of avocados sold in the US"
            " between 2015 and 2018",
        ),
        dcc.Graph(
            figure={
                "data": [
                    {
                        "x": data["Date"],
                        "y": data["AveragePrice"],
                        "type": "lines",
                    },
                ],
                "layout": {"title": "Average Price of Avocados"},
            },
        ),
        dcc.Graph(
            figure={
                "data": [
                    {
                        "x": data["Date"],
                        "y": data["Total Volume"],
                        "type": "lines",
                    },
                ],
                "layout": {"title": "Avocados Sold"},
            },
        ),
    ]
)

if __name__ == "__main__":
    app.run_server(debug=True)

这是准系统仪表板的代码。它包括您在本节前面检查过的所有代码片段。

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 15
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值