(关注AI新视野,私信“资料”一词,免费获取人工智能视频教程50G! )
本文介绍了如何创建交互式图表和小部件,并使用python可视化数据。 相关的python库包括Plotly、Bokeh和nbinteract等。
数据可视化
在分析数据集时,数据可视化是重要的一步。 如果顺利的话,有很多好处:
更深入地理解数据集中隐藏的动态变化这一分析工作,可以让你后续的机器学习更有效率,让别人更容易理解我们的数据。 我将通过一些实例和有趣的可视化方法来介绍python中最常用的数据可视化库。 文中出现的代码可以在github上找到:
github地址[1]
金属材料
Matplotlib可能是最广为人知的Python数据可视化库。 例如,我将介绍如何创建PCA分布式GIF地图。
首先,必须使用Seaborn加载Iris数据集并运行PCA。 成功后,通过从轴改变不同角度进行观察,绘制20张PCA方差图。 为了制作3D的PCA结果图,我们参考The Python Graph Gallery。
importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltfrommpl _ toolkits.MP lot3dimportseabornassnsimport eiodf=SNS.load_dataset(iris ) ) my_dpi=96PLT.figure ) figsize=(480/my_ ) my ) )。 dpi=my_dpi ) # keep the ‘ specie ‘ columnappartmakeitnumericforcoloringdf [ ‘ species ‘ ]=PD.categorical (.cat.codd ) 1 ) runthepcapca=PCA ( n _ components=3) PCA.fit ) df ) storeresultsofpcainadataframeresult=PD.data frame ) PCA colum index=df.index ) # 20 plots,for 20 differentanglesforangleinrange ),20,202) ) plotinitialisationfig=PLT.figure ( are ) projection=’3d ‘ ) ax.scatter ) result c=my_color,cmap=’Set2_r ‘,s=60 ) # make simple,bareaxislinesthrounesthrourour xAxisLine[1],xAxisLine[2],’ r ‘ ) yaxis line=( ( 0,0,) min ) ( result ) ( Pplot ) )。 0 ) ax.plot(yaxisline[0],yAxisLine[1],yAxisLine[2],’ r ‘ ) zaxisline=( ( 0,0,0 ),0 ) ( min ) )。 max(result(PCA2 ) ) ) ax.plot ) zaxisline ) 0,zaxisline ) 1,zaxisline ) 2,) r ) ) ax.view_init ) ) PCA_angle’str(angle ).png’PLT.savefig ) filename,dpi=96 )最终,我们可以通过以下函数从我们的20个图中产生GIF :
efmake_gif(input_folder,save_filepath ):episode _ frames=[ ] time _ per _ step=0.25 for root,_,file sile file ) forfileinfiles ] # sortedbymodifiedtted key=lambdax:OS.path.get mtime ( x ) ) episode _ frames=[ imageio.im RRM episode_frames=NP.array ( episode _ frames ) imageio.mimsave ) save_filepath、episode _ frames、duration=timim
图1:PCA分布式映射
在Matplotlib中创建动画图形的另一种方法是使用Matplotlib动画API。 这个API可以制作简单的动画和实时图标。 在这里[2]可以找到一些情况。
赛璐珞
可以使用Celluloid库简化Matplotlib的动画。 这是通过创建相机来实现的,相机的目的是在每次图形参数发生更改时拍摄图形的快照。 然后,将这些瞬间保存的所有图像组合起来生成动画。
下面的示例为每次循环迭代生成快照,然后使用animate ( )函数创建动画。
fromcelluloidimportcameraimportnumpyasnpimportmatplotlib.pyplotaspltfig,axes=PLT.subplots(2) camera=camera ) fig 5 endpoint=false ( T2=NP.linspace ( 0,1 * NP.pi,128,endpoint=false ) forIinT2:axes(0).color=’ b ‘ axexex
图2 :蜂窝示例
Plotly
Plotly是一个基于plotly.js的开源Python库。 Plotly有两种不同的模式:在线和离线。 在该库中,可以使用联机模式创建不限数量的脱机模式图表和最多25个联机图表。 安装Plotly时,必须在开始之前注册站点,获取API密钥。 不能像语句中的其他库那样只使用pip install。
本文介绍了长期以来为了描绘特斯拉股市的高价和低价,使用离线模型的例子。 在这里[3],可以找到在这个例子中使用的数据。
首先,必须导入所需的Plotly库。
然后导入数据集并进行预处理以实现最终绘制。 在本例中,为了确保用于绘图的列具有正确的数据类型,日期格式为( YYYY-MM-DD )。 因此,我将高低价格列转换为双重数据类型,将日期列转换为字符串格式。 然后将日期列从DD/MM/YYYY格式转换为YYYY/MM/DD格式,最后转换为YYYY-MM-DD格式。
importplotly.graph _ objsasgofromplotly.offlineimportinit _ notebook _ mode, iplotinit _ notebook _ mode ( connected=true ) importplotlyaspyimportplyimportpandasaspdimportdatetimedf=PD DDD df [ ‘ high ‘ ]=df [ ‘ high ‘ ].as type [ ‘ double ‘ ] df [ ‘ low ‘ ]:new _ date=datetime.datetime.strp time ( I,I
最后,我使用Plotly库生成特斯拉股市的高点和低点的时间表。 感谢Plotly。 这个表是交互式的。 将光标移动到时间轴上的任意点,可以得到高价格和低价价格。 此外,通过选择按钮和滑块,可以改变提问者想要关注的时间范围。
trace _ high=go.scatter ( x=df.date,y=df[‘high’],name=’TSLA High ‘,line=dict ) color=’ # 17 becf ‘ opacity=0.8 ) data=[trace_high,trace _ low ] layout=dict ( title=’ timeserieswithrangeslider ‘,xaxis=dict ) stepmode=’backward ‘ )、DICT(count=6,label=’6m ‘,step=’month ‘,stepmode=’backward ‘ )、dict ( step=’ 6m ) type=’date ‘ ) ( fig=dict(data=data,layout=layout ) IPlot ) fig,filename=’ timeserieswithrangeslider ‘ ) IPlot
图4 :打印ly示例
Bokeh
Bokeh库同时支持Python和JavaScript。 的大多数图形、交互和小部件可以在Python中实现,但在某些情况下也可以使用JavaScript。
使用Bokeh时,可以通过将一个图层叠加到另一个图层上来构建图形。 首先创建图元,然后在其上添加元素(字形)。 根据我们要绘制的图形,图形可以是任何形状或形状(例如,线条、棒、圆)。
使用Bokeh创建图表时,会自动生成用于绘制图表的工具。 他们有指向Bokeh文档的参考链接、平移、框缩放、滚轮缩放、保存选项和图形重置按钮(类似于Plotly )。
作为一个实际例子,介绍了如何使用与Plotly相同的数据创建交互式时间序列图。
在本演示中,将绘制四个不同的时间系列“高价/低价/起始价和终止价”,并创建四个复选框。 这样,使用者通过选中或清除复选框,可以从图像中删除四个轴中的任意一个。
例如,为了实现复选框功能,请使用JavaScript而不是Python。
importpandasaspdimportnumpyasnpfrombokeh.plottingimportfigurefrombokeh.ioimportoutput _ file,show, output _ notebookfrombokeh.modelsimportcustomjsfrombokeh.models.widgetsimportcheckboxgroupfrombokeh.layoutsimportrtrowfffrom tionsimporttitle,legendDF=PD.read_CSV(tsla.CSV ) ) df ) date ‘ ) PD.to format=’%d/%m/%Y ‘ ) p=figure plot_width=800 ) aline=p.line ) df [ ‘ ] color=viridis4[0] ( bline=p.line ( date ),df ) low,line ( dline=p.line ) df(‘date ),df ) ‘ close ),line_width=2,color=viridis4[3] ( p.yaxis.axis _ label ) [bline]、Open Price、[cline]、Close Price、[dline]、location=( 0,450 ) t=title ( t.text=’ teslastockmarkmarketatation ) ‘ left ‘ ( checkboxes ) ) ) ) 65 ‘Low Price ‘,’ Open Price ‘,’ Close Price’],active=[ 0,1,2,3 ] ) //passedinfromargscline.visible=false; dline.visible=false; //CB _ objisinjectedinthankstothecallbackif ( CB _ obj.active.includes (0) ) {aline.visible=true; //0 indexboxisalineif ( CB _ obj.active.includes (1) ) {bline.visible=true; //1 indexboxisblineif ( CB _ obj.active.includes (2) ) {cline.visible=true; //2 indexboxisclineetc . if ( CB _ obj.active.includes (3) ) {dline.visible=true; } ‘ ‘ ‘,args={‘aline’: aline,’ bline’: bline,’ cline’: cline,’ d line ‘:d line ‘ ) checkboxes.js_on_
图5:Bokeh演示
也可以将此图另存为HTML文件,如上面的代码所示。 此相同选项也可用于Plotly。 如果你自己有兴趣测试你对Plotly和Bokeh的了解,他们可以在这里[5]找到。
Plotly和Bokeh都可以单独用作Python的仪表板框架,产生非常惊人的结果。
Seaborn
Seaborn是构建在Matplotlib之上的python库,用于创建统计图表。 据Seaborn官方网站报道:
如果Matplotlib ‘试图让简单的事情变得简单,让复杂的事情成为可能’,那么Seaborn就会给出一些明确的定义,让复杂的事情也变得简单
这里不详细介绍使用Seaborn的例子。 如果你想知道Seaborn的话,我建议你看看这个。 Seaborn示例摘要[6]
在以下示例中,首先使用Seaborn加载Iris数据集[7],并创建了pair-plot。
importseabornassns.set ( df=SNS.load _ dataset ) iris ) SNS.pairplot ) df,hue=’species ‘ )一个pair-plot散点图和一个散点图具体结果如图6所示:
图6 Seaborn矩阵图
nb互操作
在nbinteract中,可以在Jupiter Notebook中创建交互式小部件。 如果需要,还可以将这些小部件导出为HTML。 在此[8]可以找到nbinteract的在线安装的实例。
作为简单的实现,在此处创建下拉菜单。 更改所有汽车数量选择,或实时更新车主姓名。 (图7 )
fromipywidgetsimportinteractimportnumpyasnpimportpandasaspdfrommatplotlibimportpyplotaspltimportnbinteractasnbidefcars (.fors ) number ) interact ) cars,name=’Nemo ‘,number={‘Zero’: 0,’ Two’: 2,’ Three’: 3,’ ten ‘图7:NB交互示例
地址库
除了前面提到的库外,Pygal[9]和Altair[10]也是常用的Python库。 他们提供了与以前相似的图,但可用于绘制其他类型的图形,如金字塔图、树形图、地图和甘特图。
参考资料
[1] github repository:https://github.com/pier Paolo 28/data-visualization/tree/master/pythonvisualizationlibries
[2]此处: https://www.yanxi she.com/text translation/1942
[3]此处: https://www.macro trends.net/stocks/charts/tsla/Tesla/stock-price-history source=post _ page– –
[4]此处为: https://plot.ly/python/source=post _ page—————————— -?
[5]此处: https://pier Paolo 28.github.io/projects/project 11.html source=post _ page—–post _ page—————————— –
[6]Seaborn示例总结: https://seaborn.py data.org/examples/index.html source=post _ page———html source
[7]Iris数据集: https://www.ka ggle.com/arsh id/iris-flower-dataset source=post _ page—— post———————————-
[8]此处: https://pier Paolo 28.github.io/projects/interactive widgets.html source=post _ page—–post—————————— –
[9] py gal:http://py gal.org/en/stable/documentation/index.html source=post _ page—— post——————————–
[ 10 ] Altair:https://Altair-viz.github.io/gallery/index.html source=post _ page—–post———————————- –