当前位置: 首页 > 科技观察

精彩的!这个Python数据可视化工具非常强大!

时间:2023-03-18 19:45:46 科技观察

使用Altair,您可以将更多的时间花在数据及其意义上,我将在下面详细介绍:示例下面是一个在JupyterLab中使用Altair快速可视化和显示数据集的示例:importaltairasalt#从vega_datasets加载一个简单的数据集作为pandasDataFrame来自VegaAltairfor-Lite的独特功能之一是声明性语法,它不仅是可视化的,而且是交互式的。通过对上面的示例进行一些修改,我们可以创建一个链接的直方图,该直方图根据散点图的选择进行过滤。将altair作为altfromvega_datasets导入数据源=data.cars()brush=alt.selection(type='interval')points=alt.Chart(source).mark_point().encode(x='Horsepower',y='Miles_per_Gallon',color=alt.condition(brush,'Origin',alt.value('lightgray'))).add_selection(brush)bars=alt.Chart(source).mark_bar().encode(y='Origin',color='Origin',x='count(Origin)').transform_filter(brush)points&bars安装方法Altair需要以下依赖项:pandastraitletsIPython如果您已克隆存储库,请从存储库的根目录运行以下命令:pipinstall-e.[dev]如果不想克隆仓库,可以使用以下命令安装:pipinstallgit+https://github.com/altair-viz/altair更多详情,可以查看github链接:https://github.com/altair-viz/altair三大操作接下来详细介绍Altair如何创建过滤、分组、合并操作的可视化对象,可以使用作为探索性数据分析过程的一部分。我们构建了两个模拟数据的数据帧。第一个是餐厅订单,第二个是餐厅订单中商品的价格。#importlibrariesimportnumpyasnpiimportpandasaspdimportaltairasaltimportrandom#mockdataorders=pd.DataFrame({"order_id":np.arange(1,101),"item":np.random.randint(1,50,size=100),"数量":np.random.randint(1,10,size=100),"提示":(np.random.random(100)*10).round(2)})prices=pd.DataFrame({“项目”:np.arange(1,51),“价格”:(np.random.random(50)*50)。round(2)})order_type=[“午餐”,“晚餐”]*50random.shuffle(order_type)orders["order_type"]=order_type首先,我们创建一个简单的Altair语法结构图。alt.Chart(orders).mark_circle(size=50).encode(x="qty",y="tip",color="order_type").properties(title="TipvsQuantity")Altair基本语法四步Qu:将数据传递给Chart对象,数据可以是Pandas数据框的形式,也可以是指向json或csv文件的URL字符串。选择可视化类型(例如mark_circle、mark_line等)。encodeencode函数指定要在给定数据框中绘制的内容。因此,我们在编码函数中编写的任何内容都必须链接到数据框。使用properties函数指定图形的某些属性。考虑这样一种情况,我们需要创建价格和小费值的散点图,它们位于不同的数据框中。一种选择是合并两个数据框并在散点图中使用这两列。Altair提供了一种更实用的方法,它允许在其他数据框中查找列,类似于执行相同操作的Pandas的合并功能。alt.Chart(订单).mark_circle(size=50).encode(x="tip",y="price:Q",color="order_type").transform_lookup(lookup="item",from_=alt.LookupData(data=prices,key="item",fields=["price"])).properties(title="PricevsTip")transform_lookup函数类似于Pandas的合并函数。用于匹配观察的列(即行)将传递给查找参数。fields参数用于从另一个数据框中选择所需的列。我们还可以将过滤器组件集成到绘图中,使我们能够绘制价格超过10美元的数据点。alt.Chart(订单).mark_circle(size=50).encode(x="tip",y="price:Q",color="order_type").transform_lookup(lookup="item",from_=alt.LookupData(data=prices,key="item",fields=["price"])).transform_filter(alt.FieldGTPredicate(field='price',gt=10)).properties(title="PricevsTip")转换过滤器过滤功能。FieldGTPredicate处理“大于”条件。除了过滤和合并,Altair还允许在绘图前对数据点进行分组。例如,我们可以创建一个条形图来显示每种订单类型的商品平均价格。此外,我们可以为价格低于20美元的商品执行此操作。alt.Chart(orders).mark_bar().encode(y="order_type",x="avg_price:Q").transform_lookup(lookup="item",from_=alt.LookupData(data=prices,key="item",fields=["price"])).transform_filter(alt.FieldLTPredicate(field='price',lt=20)).transform_aggregate(avg_price="mean(price)",groupby=["order_type"])。properties(height=200,width=300)让我们详细说明每个步骤:transform_lookup:从价格数据框中查找价格。transform_filter:过滤低于20美元的价格。transform_aggregate:按订单类型对价格进行分组并计算平均值。结论Altair不同于其他常见的可视化库,它可以将数据分析组件无缝集成到可视化中,是一个非常实用的数据探索工具。过滤、合并和分组对??于探索性数据分析过程至关重要。Altair允许您在创建数据可视化时执行所有这些操作。从这个意义上说,Altair也可以看作是一个数据分析工具。有兴趣的赶快来试试吧。