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高级概念的过程中提供一个有价值的学习工具。