Polars简明基础教程十三:可视化(三)

 (示例中用到的csv数据文件可在CSDN 免费下载:“泰坦尼克号生还者数据集”):

import polars as pl

import hvplot as hv
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
import altair as alt
import vegafusion as vf

csv_file = r"..\data\titanic.csv"
df = pl.read_csv(csv_file)

passenger_class_counts_df = (
    df['pclass']
    .value_counts()
    .sort("pclass")
)

直方图

我们可以从表达式中制作直方图

p = df.select("fare").plot.hist()
hv.show(p)

或者从Series中。在这个例子中,我们设置了箱体的数量

p = df["fare"].plot.hist(bins=20)
hv.show(p)

直接使用外部库绘图

我们还可以直接将Polars的DataFrame传递给外部库。

Matplotlib

我们可以直接将passenger_class_counts_df的列传递给Matplotlib

有时会遇到这个图表和下面的Seaborn图表无法渲染的问题,可以尝试增加“plt.show()”方法试试。

plt.bar(
    x=passenger_class_counts_df["pclass"],
    height=passenger_class_counts_df["count"]
)

plt.show()

请注意,在Polars中pclass列是一个整数列,但图表中的x轴是浮点轴。为了使x轴显示为分类整数轴,我们将整数转换为字符串

passenger_class_counts_string_column_df = (
    passenger_class_counts_df
    .with_columns(
        pl.col("pclass").cast(pl.Utf8)
    )
)

plt.bar(
    x=passenger_class_counts_string_column_df["pclass"],
    height=passenger_class_counts_string_column_df["count"]
)

plt.show()

Matplotlib没有直接支持Polars。但是,Matplotlib可以接受Polars的Series,因为它只需要可以通过标准Python方法(Series支持的方法)遍历的序列类型对象。

Seaborn

我们可以将Polars的DataFrame传递给Seaborn来绘制许多图表。请注意,Seaborn通常会在内部将数据复制到Pandas,因为它大量使用了Pandas特有的功能,如索引。如果DataFrame很大,您可能只想传递绘图所需的列,以避免整个DataFrame都被复制!

sns.barplot(
    passenger_class_counts_df,
    x="pclass",
    y="count",
    color='green'
)

plt.show()

一些更复杂的Seaborn图表也可以直接接受 Polars 的 DataFrame,如 sns.scatterplot 或sns.jointplot。在这个例子中,我们根据乘客等级对年龄(对数)和票价(对数)进行联合绘图

sns.jointplot(
    data=(
        df
        .with_columns(
            [
                pl.col(pl.Float64).log(),
                pl.col("pclass").cast(pl.Utf8)
            ]
        )
    ),
    x="age",
    y="fare",
    hue="pclass",
)

plt.show()

Plotly

我们可以直接将DataFrame传递给Plotly。

请注意,我们再次使用带有字符串列的DataFrame以获取正确的输出(忽略Plotly内部可能产生的任何Pandas警告)

另外,在pycharm中运行代码时有时可能在浏览器中显示不了图像,可以尝试重启浏览器试试。

fig = px.bar(
    passenger_class_counts_string_column_df,
    x="pclass",
    y="count",
    color="pclass",
    width=400
)

fig.show()

Polars简明基础教程系列

Polars简明基础教程十四:可视化(四)

Polars简明基础教程十三:可视化(三)

Polars简明基础教程十二:可视化(二)

Polars简明基础教程十一:可视化(一)

Polars简明基础教程十:Numpy和Pandas的相互转换(2)

Polars简明基础教程九:Numpy和Pandas的相互转换(1)

Polars简明基础教程八:Series 和 DataFrame 以及它们之间的转换_B

Polars简明基础教程七:Series 和 DataFrame 以及它们之间的转换_A

Polars简明基础教程六:什么是Polars的“DataFrame(数据框)_下”

Polars简明基础教程五:什么是Polars的“DataFrame(数据框)_上”

Polars简明基础教程四:懒惰模式 2:评估查询

Polars简明基础教程三:懒惰模式 1:引入懒惰模式(续)

Polars简明基础教程二:懒惰模式 1:引入懒惰模式

Polars简明基础教程一:Polars快速入门

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值