从 Pandas 到 Polars 四十四:Polars 和 数据可视化库Seaborn

在我对Matplotlib感到沮丧并发表帖子时,我的朋友让我试试Seaborn库。近年来我一直在使用Altair,因此并没有过多考虑Seaborn。然而,Seaborn的新界面给我留下了深刻印象,并且我很高兴地发现,Seaborn将直接接受Polars的DataFrame来进行许多图表绘制。

(注:Seaborn 是一个基于Matplotlib的数据可视化库,它提供了一个高级界面来绘制有吸引力的和有意义的统计图形。Seaborn使复杂图形的绘制变得简单,并且提供了许多内置的主题和调色板来定制图形的外观。Seaborn非常适合数据探索和可视化,特别是当您想从数据中提取有意义的模式或趋势时。)

在这篇文章中,我将探讨如何将Polars的DataFrame传递给Seaborn以进行一些高级图表的绘制,并分享一些使用Seaborn可视化Polars DataFrame的其他技巧。

联合图(Jointplot)

Seaborn中的高级可视化之一就是联合图(jointplot)。这是一种两列的散点图,但每个列的分布也会被绘制出来。此外,我们还可以添加一个色调字段(hue field),通过第三列来为这些图着色。

在这个例子中,我使用了泰坦尼克号数据集,对乘客年龄和支付票价两列进行了联合图绘制,并根据乘客等级列进行了颜色区分。

import polars as plimport seaborn as sns

df = pl.read_csv("titanic.csv")
sns.jointplot(
    data=(
        df
        .with_columns(
            [   
                # 对Age和Fare的浮点型列取对数    
                pl.col(pl.Float64).log(),
                # 将passenger_class的列从当前的数据类型转换为字符串类型                
                pl.col("Pclass").cast(pl.Utf8)
            ]
        )
    ),
    x="Age",
    y="Fare",
    hue="Pclass",)

数值还是分类?

像Plotly或Seaborn这样的绘图库的一个共同特点是,它们会根据数据的dtype(数据类型)推断数据应该如何呈现。这可能会导致图表以令人困惑的方式显示!

在这个例子中,我们想根据乘客等级(Pclass)列来着色。这一列的值是1、2或3,所以它有一个整数dtype。然而,从绘图的角度来看,这一列实际上是一种有序的分类列,而不是数值列。然而,由于整数dtype,Seaborn和Plotly会将其视为数值列,并尝试将其视为定量数据。

为了解决这个问题,我们必须将Pclass列转换为字符串dtype。我们在上面的示例中通过表达式pl.col("Pclass").cast(pl.Utf8)来实现这一点。然后,图表就会按照我们期望的方式显示。

将Polars DataFrame传递给Seaborn会导致在内部复制你的数据。为了避免不必要的复制,我建议使用select函数只复制你的图表所需的列的子集,例如df.select(["Age","Fare","Pclass"]).to_pandas()。

       往期热门文章:

从 Pandas 到 Polars 二十六:在Polars中,不要遍历列

从 Pandas 到 Polars 二十三:如果你的数据已经排序,Polars可以为你提供助力

从 Pandas 到 Polars 十八:数据科学 2025,对未来几年内数据科学领域发展的预测或展望

从 Pandas 到 Polars 十三:流式处理的关键参数

从 Pandas 到 Polars 十:“Polars 表达式“是什么?

从 Pandas 到 Polars 六:在 Polars 中流式处理大型数据集

从 Pandas 到 Polars 0:理解Polars嵌套列类型

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值