📢 转载信息
原文链接:https://www.kdnuggets.com/lux-pandas-auto-visualizations-for-lazy-analysts
原文作者:Kanwal Mehreen
Image by Editor
# 引言
如今每个人都处理海量数据。我们都喜欢使用 Pandas 进行数据整理。但说实话,滚动浏览 DataFrame 并手动绘制图表会让人感到厌倦。这个过程很少改变:加载 DataFrame,检查几列,运行 describe(),然后构建相同的一组图表来查找模式。这有效,但重复且耗时。在我最近的一个项目中,我注意到了这一点,当时我花了最初的几个小时来制作基本的直方图、散点图和相关性可视化,仅仅是为了回答有关分布和关系等简单问题。
Lux 是一个 Python 库,它直接与 Pandas 集成,一旦显示 DataFrame 就会自动生成有见地的可视化。它不能取代分析推理,而是消除了阻碍推理的手动工作。它帮助分析师、学生和数据科学家更快地探索数据、发现趋势和理解模式,甚至在他们开始建模之前。在本文中,我们将探讨 Lux 的工作原理、如何设置它,以及为什么它是仍追求智能结果的“懒惰”分析师的理想伴侣。
# 安装
在了解 Lux 的工作原理之前,让我们先安装 Lux 并在您的笔记本环境(Jupyter/Google Colab)中激活它。您可以使用 pip 如下安装:
!pip install lux-api !pip install lux-widget
然后,像通常使用 Pandas 一样导入它:
import pandas as pd
import lux
如果您使用的是 Google Colab,还需要启用小部件管理器:
from google.colab import output
output.enable_custom_widget_manager()
导入后,Lux 会自动挂接到您的 Pandas 环境中。
# 为什么选择 Lux?
传统的探索性数据分析(EDA)工作流程是:
df.head()
df.describe()
sns.pairplot(df)
df[col].hist()
plt.scatter(df[x], df[y])
这既重复又缓慢。Lux 将其改为:
df
Lux 会检查您的数据并生成分布、相关性、趋势以及基于数据类型的推荐图表。基本上,Lux 充当一个智能助手,建议接下来应该查看什么。
# Lux 的工作原理
现在,让我们使用 COVID 数据集来看一个简单的例子:
url = "https://raw.githubusercontent.com/datasets/covid-19/main/data/countries-aggregated.csv"
df = pd.read_csv(url)
df
当 DataFrame 显示时,Lux 会自动检查其结构并在其下方生成有意义的可视化。
输出:
如果您点击“Toggle Pandas/Lux”,您会看到类似以下的内容:
您可以在各个选项卡之间切换,查看相关性(Correlation)、分布(Distribution)、时间序列(Temporal)和地理(Geographical)图表。让我们了解每个选项卡代表的含义:
- 相关性 (Correlation): 显示确诊、康复和死亡人数之间的相互关系。
- 分布 (Distributions): 突出显示病例数的分布情况,以发现模式或异常值。
- 时间序列 (Temporal): 跟踪病例随时间的 C变化,便于观察上升和激增的情况。
- 地理 (Geographical): 显示哪些国家和地区病例最多。
所有这些都是在没有编写任何绘图代码的情况下完成的。Lux 只是增强了默认的 DataFrame 显示,以帮助您更快地探索关键模式。
# 将所有 Lux 可视化保存为 HTML
Lux 能够将整个可视化面板导出为可共享的交互式 HTML 文件:
df.save_as_html("lux_report.html")
输出:
Saved HTML to lux_report.html
现在您可以在任何浏览器中下载并查看此文件。
您还可以通过设置 intent(意图)来引导 Lux 关注数据集中的特定关系。
# 使用意图探索数据
让我们使用相同的数据集来理解这一点。假设您希望 Lux 强调确诊病例。您可以按如下方式操作:
df.intent = ["Confirmed"]
df
输出:
当您设置意图后,Lux 会专注于您关心的列。然后它会显示清晰比较不同组的图表。这使得更容易注意到模式。您可以更快地测试想法并更清晰地理解数据。
Lux 还为您提供了导出推荐可视化选项。
# 导出可视化
Lux 允许您直接从小部件中提取任何您感兴趣的可视化。只需点击您想要的图表,然后选择“导出”按钮。
导出的可视化存储在 df.exported 中。要显示已保存的可视化的完整列表,请使用:
df.exported
输出:
如果您想查看特定的导出图表,只需通过索引访问它,如下所示:
# 获取第一个导出可视化
vis = df.exported[0]
vis
输出:
Lux 会自动将可视化转换为 Matplotlib、Altair 或 Vega-Lite 代码。您可以在任何地方重用和自定义它,而无需手动编写冗长的绘图脚本。
# 获取等效的绘图代码
print(vis.to_matplotlib())
print(vis.to_altair())
print(vis.to_vegalite())
例如,print(vis.to_matplotlib()) 的输出将是:
import matplotlib.pyplot as plt
plt.rcParams.update( {
"axes.titlesize": 20,
"axes.titleweight": "bold",
"axes.labelweight": "bold",
"axes.labelsize": 16,
"legend.fontsize": 14,
"legend.title_fontsize": 15,
"xtick.labelsize": 13,
"ytick.labelsize": 13,
}
)
import numpy as np
from math import nan
df = pd.DataFrame({'Confirmed': {0: 0.0, 1: 8062512.0, 2: 16125024.0, 3: 24187536.0, 4: 32250048.0, 5: 40312560.0, 6: 48375072.0, 7: 56437584.0, 8: 64500096.0, 9: 72562608.0}, 'Number of Records': {0: 119202.0, 1: 917.0, 2: 399.0, 3: 220.0, 4: 212.0, 5: 122.0, 6: 25.0, 7: 7.0, 8: 7.0, 9: 65.0}})
fig, ax = plt.subplots()
bars = df['Confirmed']
measurements = df['Number of Records']
ax.bar(bars, measurements, width=6718760.0)
ax.set_xlabel('Confirmed (binned)')
ax.set_ylabel('Number of Records')
fig
# 何时使用 Lux(以及何时不使用)
Lux 在探索性数据分析的早期阶段非常有用,即您试图了解数据集和发现初始模式时。它有助于增强数据理解、加速假设构建,并且非常适合教学和快速研究任务。通过自动化第一层视觉发现,Lux 减少了编写基本绘图代码所花费的时间,让您可以更多地关注解释见解,而不是处理绘图代码。尽管有许多优点,Lux 也有一些局限性,如下所述:
- 它最适合在 Jupyter Notebook、Google Colab 或 JupyterLab 中使用。
- 它不适合非常大的数据集。
- 用于发布的视觉效果仍然需要 Matplotlib、Seaborn 或 Altair 等工具。
# 结论
如果您正在学习数据分析,Lux 是更快建立直觉的绝佳方式。好的工具不会取代技能;它们会帮助您发展技能。您不必再花费时间制作基本图表,可以直接开始理解数据集。如果您在探索过程中遇到任何困难,请在评论区提出。您可以查阅以下一些有用的资源:
- GitHub 存储库 (lux-org/lux):展示源代码、示例和笔记本图库。
- Lux: Automatic Visualizations for Exploratory Data Science - Doris Jung-Lin Lee | PyData Global 2021。
- Lux 官方文档。
- 研究论文:“Lux: Always-on Visualisation Recommendations for Exploratory Dataframe Workflows” (arXiv)。
Kanwal Mehreen 是一位机器学习工程师和技术作家,对数据科学以及人工智能与医学的交叉领域充满热情。她合著了电子书《利用 ChatGPT 实现效率最大化》。作为 2022 年亚太地区谷歌一代学者,她倡导多元化和学术卓越。她还被认定为 Teradata 技术多元化学者、Mitacs Globalink 研究学者和哈佛 WeCode 学者。Kanwal 是一位坚定的变革倡导者,她创立了 FEMCodes 以赋能 STEM 领域的女性。
🚀 想要体验更好更全面的AI调用?
欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。
评论区