使用Plotly Dash创建Python仪表盘教程

1,572 阅读5分钟

Python中的仪表盘是在一个地方显示的图的集合,以实现对分析数据的更大理解。这些图的集合包括但不限于条形图、柱状图、饼状图、线状图、轮廓图、阴影图等。一个仪表盘既可以包括显示在一个屏幕上的不同图的组合,也可以包括同类的多个图。

Python提供了多个库来创建图和子图,但在本文中,我们将严格使用为制作仪表盘而创建的库--Plotly Dash。

什么是Dash?

Dash是Plotly的一个产品,用于创建绘图,并通过基于Web的API渲染它们。Plotly网站说,Dash应用程序可以很容易地实现Tableau和PowerBI会很困难的任务结果。这使得我们选择Dash作为我们在Python中创建仪表盘的首要工具。

创建一个仪表盘

在这篇文章中,我们将创建一个仪表盘,分析2020年的股市暴跌以及由于covid-19造成的恢复。这里使用的例子采取了一种针对指数的方法。我们使用Nifty50在每日时间框架内的OHLC数据。一旦绘制了仪表板,我们将讨论在图中观察到的见解。

为了在Python中创建一个仪表盘,有三个主要步骤:

  • 导入必要的程序包
  • 获取将被绘制的原始数据
  • 初始化应用程序

安装必要的库

创建仪表盘需要主仪表盘包和其子包。本文中的例子需要3个dash子包和一个Numpy包来渲染原始数据。让我们来看看如何安装和配置这些包。要安装它们,请在终端输入以下命令。

pip install dash

另一个需要的主要包是pandas。这个python库对于数据帧的数学计算是必需的。要安装它,请键入以下命令。

pip install pandas

注意:创建仪表盘需要另外三个dash子包--dash html组件、dash渲染器和dash核心组件(dcc)。

手动安装它们很麻烦,所以我们建议在Pycharm或Jupyter Notebooks等IDE上执行这个例子。为了便于使用,我们将用Pycharm来进行。在Pycharm中安装这些子包很简单,按照下面的步骤进行:

  • 创建一个新的项目。

  • 进入文件>设置>项目:'project_name'>Python解释器。 点击 "+"号。(如果'+'号没有激活,从上面的下拉菜单中选择基本解释器,然后点击'+'号来添加新的解释器。

一个新的窗口打开,里面有一个口译员的名单。在搜索框中输入解释器,然后点击安装包。你要找的关键词是('dash-html-components', 'dash-core-components' 和'dash-renderer')。

为仪表板创建图谱

一旦所有必要的库被安装和配置好,我们将转向编码部分。

导入数据

以下是我们在整个程序中需要用到的库。

import dash
from dash import dcc
from dash import html
import pandas as pd

初始化和操纵数据

在这个例子中,我们获取了2020-2021年12月Nifty 50指数的OHLC(开盘-最高-最低-收盘)数据。我们将数据加载到数据框--'data'中。第二行将 "Date "的格式从简写改为数字。

data = pd.read_csv("nifty 2020 crash.csv")

data['Date'] = pd.to_datetime(data['Date']).dt.strftime('%d-%m-%Y')

初始化应用程序

这里初始化了离线API的dash应用程序。当这个应用程序运行时,绘图将被渲染并广播到一个本地服务器端口,通过本地浏览器访问。下面的示例代码在服务器上绘制了一个单一的图形,即当天的最高指数价格。

app = dash.Dash(__name__)

app.layout=html.Div(
    children=[
        html.H1(children="Nifty 50 Crash and Recovery",),
        html.P(
            children="Analyzing day wise high and low prices of Nifty50 when first wave of Covid-19 hit.",
        ),
        dcc.Graph(
            figure={
                "data":[
                    {
                        "x":data["Date"],
                        "y":data["High"],
                        "type":"lines",
                    },
                ],
                "layout":{"title":"Day-wise highest prices of index"},
                    },
        ),
]
if __name__ == "__main__":
    app.run_server(debug=True)

现在,你一定已经了解了如何用你所需要的数据来部署一个Dash应用程序。现在,让我们把所有的分段放在一个程序中,创建一个Nifty50崩溃和恢复分析仪表板。

下面的代码:

# importing packages
import dash
from dash import dcc
from dash import html
import pandas as pd

# initialisation and manipulation of data
data = pd.read_csv("nifty 2020 crash.csv")
data['Date'] = pd.to_datetime(data['Date']).dt.strftime('%d-%m-%Y')
app = dash.Dash(__name__)

# Initialising the application.
app.layout=html.Div(
    children=[
        html.H1(children="Nifty 50 Crash and Recovery",),
        html.P(
            children="Analyzing day wise high and low prices of Nifty50 when first wave of Covid-19 hit.",
        ),
        dcc.Graph(
            figure={
                "data":[
                    {
                        "x":data["Date"],
                        "y":data["High"],
                        "type":"lines",
                    },
                ],
                "layout":{"title":"Day-wise highest prices of index"},
                   },
        ),
        dcc.Graph(
            figure={
                "data":[
                    {
                        "x":data["Date"],
                        "y":data["Low"],
                        "type":"lines",
                    },
                ],
                "layout": {"title": "Day-wise lowest prices of index"},
            },
        ),
        dcc.Graph(
            figure={
                "data": [
                    {
                        "x": data["Date"],
                        "y": data["Close"],
                        "type": "lines",
                    },
                ],
                "layout": {"title": "Day-wise closing prices of index"},
            },
        ),
        dcc.Graph(
            figure={
                "data": [
                    {
                        "x": data["Date"],
                        "y": data["Open"],
                        "type": "lines",
                    },
                ],
                "layout": {"title": "Day-wise opening prices of index"},
            },
        ),
] )

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

输出:

洞察力

在covid-19之前发生的所有股市崩盘都见证了一个缓慢的经济复苏过程,时间跨度长达多年。但在上述图表中,我们可以观察到,反弹比预期的要快,在短短几个月的时间里,整个市场就跃升到了新高。这让人得出一个结论:

  • 市场参与者愿意在市场上拿回他们的资金。
  • 从恢复的速度来看,很明显,即使是大的金融机构也准备在崩溃后重新投资于市场。
  • 这为那些相信买跌的投资者提供了一个学习的榜样。

结论

最后,我们可以从这个例子中学到一些重要的东西。观察到dash的强大和高效,这个工具可以帮助轻松创建复杂的数据量大的图表。你可以在你的仪表盘中创建图形、图表,甚至是它们的组合,甚至可以通过这个平台通过基于网络的API进行广播。

我们从这篇文章中了解到了使用Dash创建仪表盘的基本原理,它既可以随时实施,也可以作为一个很好的学习工具。希望这篇文章能在你学习Dash高级概念的过程中提供一个有价值的学习工具。