📜  jupyter notebook 花式打印交叉表 - Python (1)

📅  最后修改于: 2023-12-03 15:32:26.835000             🧑  作者: Mango

Jupyter Notebook 花式打印交叉表 - Python

在数据分析和可视化中,交叉表是一个非常有用的工具。它可以用来提供数据的摘要和汇总,从而帮助我们更好地理解数据和洞察数据之间的关系。而在 Jupyter Notebook 中,我们可以通过 Pandas 库中的 crosstab() 函数来轻松地创建交叉表,同时通过 styler 对象来进行美化和自定义。

简单的交叉表

首先,我们来看看如何创建一个简单的交叉表。假设我们有一组数据,包含了家庭成员的性别和吸烟信息。我们可以用下面的代码来创建这个数据集:

import pandas as pd

data = {'gender': ['M','M','F','M','F','F','F','M'],
        'smoker': ['Y','N','N','Y','N','N','Y','N']}

df = pd.DataFrame(data)

接下来,我们可以使用 Pandas 的 crosstab() 函数来创建一个简单的交叉表:

pd.crosstab(df.gender, df.smoker)

这会得到如下的结果:

| smoker | N | Y | | ------ | - | - | | gender | | | | F | 2 | 2 | | M | 2 | 2 |

这个交叉表告诉我们,在这个数据集中,有多少个女性吸烟或不吸烟,有多少个男性吸烟或不吸烟。

标准的交叉表

除了上面的简单交叉表,我们还可以创建标准的交叉表,可以显示每一行和每一列中的百分比,这对于理解数据之间的关系非常有帮助。我们可以通过以下代码来创建标准的交叉表:

pd.crosstab(df.gender, df.smoker, normalize='index')

这会得到如下的结果:

| smoker | N | Y | | ------ | -- | -- | | gender | | | | F | 0.5 | 0.5 | | M | 0.5 | 0.5 |

这个交叉表告诉我们,在所有女性中,有50%的人吸烟,在所有男性中也有50%的人吸烟。

自定义样式

最后,我们来看看如何使用 styler 对象自定义样式,以使交叉表更易于阅读和理解。我们可以使用以下代码来创建一个自定义格式的交叉表:

pd.crosstab(df.gender, df.smoker, normalize='index').style.background_gradient(cmap='coolwarm')

这会得到如下的结果:

custom styled cross table

这个交叉表中,每个单元格的颜色表示该单元格的值相对于该行所有值的大小。我们可以通过修改 cmap 参数来更改渐变的颜色。

结论

通过使用 Pandas 库中的 crosstab() 函数和 styler 对象,我们可以轻松地创建和自定义漂亮的交叉表。这对于数据分析和可视化来说是一个非常有用的工具,同时也有助于我们更加深入地了解数据之间的关系。