羡慕实时数据看板?来看看Python的交互数据分析可视化工具! ⛵

携手创造,一起生长!这是我参与「日新方案 8 月更文应战」的第33天,点击检查活动详情

  • 作者:韩信子@ShowMeAI
  • 数据剖析实战系列:www.showmeai.tech/tutorials/4…
  • 本文地址:www.showmeai.tech/article-det…
  • 声明:版权一切,转载请联络渠道与作者并注明出处
  • 保藏ShowMeAI检查更多精彩内容

咱们都看过十分酷的实时数据看板,能用最直观的方式给到咱们事务数据的信息,如下图所示。

羡慕实时数据看板?来看看Python的交互数据分析可视化工具! ⛵

而在 Python 中,咱们也有十分易用的东西,能够产出美丽的数据剖析可视化成果,并支持交互式操作和勾选局部数据深入剖析,ShowMeAI在本篇内容中,将给咱们讲解到 Altair 这样一个功能强大的 Python 交互式数据剖析东西,它能产出如下图所示的交互剖析成果:

羡慕实时数据看板?来看看Python的交互数据分析可视化工具! ⛵
羡慕实时数据看板?来看看Python的交互数据分析可视化工具! ⛵
羡慕实时数据看板?来看看Python的交互数据分析可视化工具! ⛵

数据剖析完成模板

为了让咱们在自己的数据上体验 Altair 的剖析成果,咱们下面编写的一个函数模板,用于为数据集中的一切特征生成交互式图表。

详细一点说,咱们期望它为数值型字段(特征)回来『直方图+散点图』,为类别型特征回来『柱状图+箱线图』,Altair 回来的这些图表成果都是能够交互式操作的。

# 导入东西库
import altair as alt
import pandas as pd
# 忽律数据规模限制
alt.data_transformers.enable('default', max_rows=None)
# 构建chart函数,它读取数据和字段称号,回来一个交互式图表成果
def chart(dataset, column_name, target_var):
    w = 500
    single = alt.selection_single()
    # 灰度图与柱状图
    # 如果是类别型字段,咱们不必分桶
    if (column_name in dataset.select_dtypes(include='object').columns.to_list()):
        a = alt.Chart(dataset).mark_bar().encode(
        alt.X(column_name + ':N', bin=False),
        alt.Y('count()'),
        color = alt.condition(single, alt.value('#4c78a8'), alt.value('lightgray')),
        tooltip=['count()', alt.Tooltip(column_name, bin=False)]
        ).add_selection(single).properties(width=w)
    # 如果是数值型字段,咱们先分桶
    else:
        a = alt.Chart(dataset).mark_bar().encode(
        alt.X(column_name + ':Q', bin=True),
        alt.Y('count()'),
        color = alt.condition(single, alt.value('#4c78a8'), alt.value('lightgray')),
        tooltip=['count()', alt.Tooltip(column_name, bin=True)]
        ).add_selection(single).properties(width=w)
    # 关于类别型字段,咱们构建它和方针字段的一个箱线图表;关于数值型字段,咱们构建它们和方针字段的散点分布图
    try:        
        if (column_name in dataset.select_dtypes(include='object').columns.to_list()):
            b = alt.Chart(dataset).mark_boxplot().encode( #, title="Boxplot of " + column_name
            alt.X(column_name + ':N'),
            alt.Y(target_var),
            color = alt.condition(single, alt.value('#4c78a8'), alt.value('lightgray')),
            tooltip=[target_var]
            ).add_selection(single).properties(width=w)
        else:
            b = alt.Chart(dataset).mark_point().encode(
            alt.X(column_name + ':Q'),
            alt.Y(target_var),
            color = alt.condition(single, alt.value('#4c78a8'), alt.value('lightgray')),
            tooltip=[target_var]
            ).add_selection(single).properties(width=w)
    except:
        pass
    return(a | b)

咱们能够把它应用在自己的数据上,得到的成果图如下所示(而且它们是能够用鼠标交互操作的)。鄙人面的内容里,咱们会告知咱们怎么把成果存储为 html 报告,咱们每次翻开 html 成果文件,即可进行交互式操作,而无需每次都从头剖析。

羡慕实时数据看板?来看看Python的交互数据分析可视化工具! ⛵

数据剖析&交互文档报告

下面的代码能够将一切可视化成果编译到一个 html 文档中,翻开这个 html 文件,咱们就能够得到一个可交互的可视化数据剖析渠道。

# 把一切的altair图表添加到一个列表里
myl = []
for col in dataset.columns:
    try:
        myl.append(chart(dataset, col, target_var))
    except:
        pass
    else:
        pass
# 编译一切的图表到1个html文件中
a = myl[0]
for i in range(1,len(myl)):
    a = a & myl[i]
a.properties(
    title = 'Feature Histograms & Boxplots'
).configure_axis(labelFontSize=15, titleFontSize=25)
a.save('figures/Feature_Visuals.html')
# 检查是否一切的字段都能够被可视化
print('Features accounted for:', len(myl), 'out of', len(dataset.T))

参考资料

  • Altair:altair-viz.github.io/

羡慕实时数据看板?来看看Python的交互数据分析可视化工具! ⛵