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

简介: Altair是Python统计可视化库,提供了强大而简洁的可视化语法,可以产出漂亮的数据分析可视化结果,并支持交互式操作和勾选局部数据深入分析。本文以实例讲解Altair的数据分析过程,以及交互文档报告的生成。
fce504c3b2483a334da9486c5e9b658b.png
💡 作者: 韩信子@ ShowMeAI
📘 数据分析实战系列https://www.showmeai.tech/tutorials/40
📘 本文地址https://www.showmeai.tech/article-detail/320
📢 声明:版权所有,转载请联系平台与作者并注明出处
📢 收藏 ShowMeAI查看更多精彩内容

大家都看过非常酷的实时数据看板,能用最直观的方式给到我们业务数据的信息,如下图所示。

ce4252de094748efb2b8aefa239e6c24~tplv-k3u1fbpfcp-zoom-1.image

而在 Python 中,我们也有非常易用的工具,可以产出漂亮的数据分析可视化结果,并支持交互式操作和勾选局部数据深入分析,ShowMeAI在本篇内容中,将给大家讲解到 📘Altair 这样一个功能强大的 Python 交互式数据分析工具,它能产出如下图所示的交互分析结果:

0787b6e2823668d61297289137cc159b.gif
40f44843aa9611cf6045eb9d45aee5eb.gif
e377e334f66195e58de6ad4db6e08a1e.gif

💡 数据分析实现模板

为了让大家在自己的数据上体验 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 结果文件,即可进行交互式操作,而无需每次都重新分析。

913ab22314928ca5e9499e38d8363582.png

💡 数据分析&交互文档报告

下面的代码可以将所有可视化结果编译到一个 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))

参考资料

e9190f41b8de4af38c8a1a0c96f0513b~tplv-k3u1fbpfcp-zoom-1.image

目录
相关文章
|
7天前
|
机器学习/深度学习 算法 数据挖掘
6种有效的时间序列数据特征工程技术(使用Python)
在本文中,我们将探讨使用日期时间列提取有用信息的各种特征工程技术。
33 0
|
4天前
|
Python
Python的编辑工具-Jupyter notebook实战案例
这篇博客介绍了Jupyter Notebook的安装和使用方法,包括如何在本地安装Jupyter、启动和使用Jupyter Notebook进行编程、文档编写和数据分析,以及如何执行和管理代码单元(Cell)的快捷键操作。
15 4
Python的编辑工具-Jupyter notebook实战案例
|
2天前
|
机器学习/深度学习 存储 数据可视化
数据分析和可视化
数据分析和可视化
|
5天前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
【9月更文挑战第2天】数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
24 5
|
4天前
|
安全 数据挖掘 Python
Python的打包工具(setup.py)实战篇
关于如何使用Python的setup.py工具打包Python项目的实战教程。
8 0
Python的打包工具(setup.py)实战篇
|
7天前
|
数据采集 JavaScript 前端开发
构建简易Python爬虫:抓取网页数据入门指南
【8月更文挑战第31天】在数字信息的时代,数据抓取成为获取网络资源的重要手段。本文将引导你通过Python编写一个简单的网页爬虫,从零基础到实现数据抓取的全过程。我们将一起探索如何利用Python的requests库进行网络请求,使用BeautifulSoup库解析HTML文档,并最终提取出有价值的数据。无论你是编程新手还是有一定基础的开发者,这篇文章都将为你打开数据抓取的大门。
|
4天前
|
存储 消息中间件 大数据
Python里for循环要遍历的数据很多很大怎么办?
遇到大数据量问题时,重要的是确定最优解决方案,这取决于数据的来源、性质以及所需的处理方式。分析数据传输、存储与处理的瓶颈是提升性能的关键。通过结合上述的技巧和方法,可以在内存和性能方面找到合适的平衡点来处理大规模数据集。
14 0
|
7天前
|
数据处理 开发者 Python
探索Python中的列表推导式:一种简洁而强大的工具
【8月更文挑战第31天】在Python编程中,列表推导式是一种高效且优雅的构建列表的方法。本文将通过实际代码示例深入探讨列表推导式的不同形式及其使用场景,旨在帮助读者更好地理解和运用这一强大工具。
|
7天前
|
机器学习/深度学习 存储 数据可视化
深入浅出:使用Python进行数据分析
【8月更文挑战第31天】 在数字时代的浪潮中,数据已成为新的石油。掌握数据,就是掌握未来的钥匙。本文将带你走进Python的世界,学习如何运用这一强大工具进行数据分析,解锁数据的奥秘。无论你是编程新手还是想深化数据分析技能的专业人士,这篇文章都将是你宝贵的资源。让我们开始吧,一起探索Python数据分析的魅力所在!
|
7天前
|
数据采集 存储 数据库
Python中实现简单爬虫与数据解析
【8月更文挑战第31天】在数字化时代的浪潮中,数据成为了新的石油。本文将带领读者通过Python编程语言,从零开始构建一个简单的网络爬虫,并展示如何对爬取的数据进行解析和处理。我们将一起探索请求网站、解析HTML以及存储数据的基础知识,让每个人都能成为自己数据故事的讲述者。
下一篇
DDNS