测试女巫紧跟时代脉搏之大数据分析系列

发表于:2020-7-31 10:36

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:王平平    来源:51Testing软件测试网原创

分享:
   很快,三个月又过去了,口罩已经成了生活的必需品,“后疫情时代”已经把我们变得已经对于每天疫情情况麻木了,我们也许真的不得不习惯与“新冠肺炎”长期共处。时间总是像奔腾不息的江水一样,汹涌地奔腾向前,真的不管外界的环境是怎样,我们真的需要时常问自己:被这些奔腾的江水裹挟着的我们,在这些汹涌的江水里能沉淀些什么?女巫这三个月把如何使用docker swarm的stack进行分布式发布,以及如何利用redis cache db来提高代码的性能搞定,也是浓墨重彩的一笔,好吧,闲话不多说,我们进入此次的学习吧~
  此次学习的方向是有关模组的学习:即企业数据可视化解决方案Plotly。上一期我们已经学习了统计学的"描述统计学"又叫"叙述统计",以及数据清理,数据整理。我们已经具备了大数据分析的最基础的知识,这一期我们将继续学习用形象化的方法即画图的方式来分析大数据。
  Plotly介绍
  也可以选择使用pyechats, matplotlib都可以画图;选择一个module进行study即可~
  目标
  Bring data science out of the lab and into the business
  Open Source
  plotly本身是基于javascript开发的,但是提供了大量与其他主流数据分析语言的API,可以参考https://plot.ly/api/
  来自官网的解释:Plotly's team maintains the fastest growing open-source visualization libraries for R, Python, and JavaScript.如下图
  注意dash open source is the front-end to your analytical Python backend,它只有大概40行的代码,提供了一个用于键入UI控件的界面,包含滑块,下拉列表和带代码的图形等等;因为我们已经有angular所以它对我们意义不是很大。
  但是很受大家欢迎,从star就可以看出来。
  应用广泛
  Our software is embedded in mission critical applications across the Fortune 500.如下图
  Plotly_Python
  Poltly Fundamentals
  如下图
  我们这次介绍的主要是plotly.graph_objects 以及Plotly Express
  https://plot.ly/python/creating-and-updating-figures/#constructor
  Create Figures
  Figures as graph objects:
  使用renderers framework 显示figures,即导入的graph_objects这个module,调用其中的函数Figure,并返回实例,并将实例show出来
   import plotly.graph_objects as go
  fig = go.Figure(
  data=[go.Bar(y=[2, 1, 3])],
  layout_title_text="A Figure Displayed with fig.show()"
  )
  fig.show()
  fig #这种方式与fig.show()作用一样,都是将figure显示出来
  产生的结果如下图
  调整title为居中的参数
   import plotly.graph_objects as go
  fig = go.Figure(
  data = [go.Bar(x =[1,2,3],y = [1,2,3])],
  layout = go.Layout(
  title = go.layout.Title(text="我是柱状图",x = 0.5) # x=0.5指的是title需要居中显示
  )
  )
  fig.show()
  JSON data structure的方式描述figure的属性
   fig ={
  "data":[
  {
  "type" : "bar",
  "x":[1,2,3],
  "y":[1,2,3]
  }
  ],
  "layout":{"title":{"text":"我是柱状图"}}
  }
  # To display the figure defined by this dict, use the low-level plotly.io.show function
  import plotly.io as pio
  pio.show(fig)
  当然也可以用 graph object的方式实现JSON data structure
   import plotly.graph_objects as go
  fig = go.Figure({
  "data": [{"type": "bar",
  "x": [1, 2, 3],
  "y": [1, 3, 2]}],
  "layout": {"title": {"text": "A Bar Chart"}}
  })
  fig.show()
  Update Layout
  update_layout是一种更新图形布局(可以自动以group chart),也可以更新图形标题的文本和字体大小
  更新图形布局
   import plotly.graph_objects as go
  fig = go.Figure(data =[ go.Bar(name ='all funtion test',x = ['project1','project2','project3'],y = [1,2,3]),
  go.Bar(name = 'partial function test',x =['project1','project2'],y = [4,5,6])])
  fig.update_layout(barmode='group')
  fig.show()
  运行结果如下图
  各个图形的细节的属性
  例如图形的悬浮文字,颜色等可以根据图形的样式查看Basic Chart,例如你如果使用的是bar chart就点击bar chart其中就可以找到你想要的细节属性设置
  如下图6
  Plotly Express
  它是一个简洁的包装器,它之前是一个独立的软件包,安装它需要pip plotly-experss,现在都打包到plotly这个整体包之中,它已经融入plotly其中;相对于plotly.graphobjects而言它是一个比较高级的包装器,plotly.graphobjects主要是用来快速数据探索和图形生成。
  它其中还包含一些科学数据,供你画图使用
  我们查看有关花的一些集成到plotly_express的科学数据包
   import plotly.express as px
  # 这个express中,包含了很多让你实验的数据
  iris = px.data.iris()
  print(px.data.iris.__doc__)
  px.data.iris().head()
  运行结果如下
  使用iris.doc查看这个数据的说明文档,我们也要养成写''' ''' 包裹的某个class function设置package的说明文档的习惯。同时将这组数据的head也打印出来,大概了解这组数据是pandas的dataframe,它由150行,6列,注意会自动生成index:即0-4,因为对于pandas的Dataframe,如果没有指定现有的列为index,它会自动生成一列index。
   Each row represents a flower.
  https://en.wikipedia.org/wiki/Iris_flower_data_set
  Returns:
  A `pandas.DataFrame` with 150 rows and the following columns: `['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species',
  'species_id']`.
  sepal_lengthsepal_widthpetal_lengthpetal_widthspecies species_id
  05.1             3.5       1.4       0.2      setosa1
  14.9             3.0       1.4       0.2      setosa1
  24.7             3.2       1.3       0.2      setosa1
  34.6             3.1       1.5       0.2      setosa1
  45.0             3.6       1.4       0.2      setosa1
  
   import plotly.express as px
  # 这个express中,包含了很多让你实验的数据
  iris = px.data.iris()
  fig = px.scatter(iris,x='petal_length',y='petal_width')
  fig.show()
  运行结果如下图7
  如果使用三列,即将species加上去,按照颜色进行分类,可以这样呈现
   import plotly.express as px
  # 这个express中,包含了很多让你实验的数据
  iris = px.data.iris()
  fig = px.scatter(iris,x='petal_length',y='petal_width',color="species")
  fig.show()
  运行结果如下图8
  各个图形的细节属性
  https://plot.ly/python/plotly-express/#plotly-express
  Mixed Subplots in Python
  作用
  在一张图中混合显示不同形式的图
  https://plot.ly/python/mixed-subplots/#mixed-subplot
  范例
  使用make_subplots开确定图形显示几行几列,如下是1行2列
  使用add_trace来将各个图形的参数定义清楚
   #创建子图
  #看源代码的方法:在jupyter中:shift+tab
  from plotly.subplots import make_subplots
  fig = make_subplots(rows=1,cols=2)
  fig.add_trace(go.Scatter(y=[5,2,1],mode = 'lines'),row=1,col=1)
  fig.add_trace(go.Bar(y=[1,2,3]),row =1,col =2)
  fig.show()
  运行结果如下图9

   #饼图
  import plotly.graph_objects as go
  import plotly.express as px
  fig = go.Figure(data=[
  go.Pie(labels=['a','b','c'],values=[20,30,50])
  ])
  fig.show()
  ‘’‘
  运行结果如下图

   #环图
  import plotly.graph_objects as go
  import plotly.express as px
  fig = go.Figure(data=[
  go.Pie(labels=['a','b','c'],values=[20,30,50],hole = 0.6)
  ])
  fig.show()
  运行结果如下图
  数据分布直方图
  即画出描述数据分布的直方图,从直方图就可以看出数据分布,虽然不是很完美但是基本上就是正态分布;大家一定要记住一个概念,看数据的分布以及进行数据的分析,不能只看某一个分析的结果,一定要结合数据的各种chart一起确认,一定要从不同的角度去论证,以保证你的结果的正确性。
   import numpy as np
  import pandas as pd
  from scipy import stats
  import plotly.graph_objs as go
  excel_data = pd.read_csv('11adtoolsingle.csv')
  excel_data_txpower = excel_data['Value']
  trace=go.Histogram(
  x=excel_data_txpower,
  histnorm = 'probability'
  )
  fig = go.Figure(data = [trace])
  fig.show()
  运行结果如下:
  这一期我们学习了plotly这个第三方模组,重点学习了plotly.graph_objects 以及Plotly Express中的柱形图,分布图,圆饼图,环形图等的画法;其实希望大家能领悟的是如何学习利用open source的这个第三方模组画出我们需要的图,下一期我们将根据这三期学到的基础知识,对于我们工作中遇到的问题,进行实战分析;这个实战分析结束后,将继续进入大数据分析的“深水区”即利用现有的大数据如何“预测未来”,并将其应用到我们的工作中,怎么样?是不是很期待?加油!让我们在这个多事之秋,快速提高自己的coding以及分析问题的能力,为新的局面提前做好准备!加油!


版权声明:本文出自《51测试天地》第五十八期。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号