Pandas 具有不同 X 轴顺序的 groupby 图
Pandas groupby plot with different X-Axis order
我正在 titanic.csv
工作,并尝试制作一些情节。 运行 成一期。如何重新组织 x 轴以将相同的 pclass 值彼此相邻放置。
我当前的代码:
titanic.groupby(['Sex', 'Pclass'])['Survived'].mean().plot(kind='bar', color=my_colors)
生成如下图表:
我想将来自同一 class 的男性和女性放在一起,以显示存活率的差异。有什么建议吗?
只需更改 groupby 中列的顺序即可:
import pandas as pd
import seaborn as sns
import matplotlib.pylab as plt
titanic = sns.load_dataset("titanic")
my_colors = ['r','g','b','k','y','magenta']
titanic.groupby(['pclass', 'sex'])['survived'].mean().plot(kind='bar', color=my_colors)
plt.show()
或者您可以堆叠条形图:
titanic.groupby(['pclass', 'sex'])['survived'].mean().unstack('sex').plot(kind='bar', stacked=True)
为什么使用 mean
而不是 count
?
Altair 在这里非常方便。这里有 3 个不同的单行代码来生成此数据集的三种不同可视化效果。
import seaborn as sns
titanic = sns.load_dataset("titanic")
from altair import *
首先就是
Chart(titanic).mark_bar().encode(x='pclass:O', y='mean(survived)', column='sex').configure_cell(width=200, height=200)
第二个即
Chart(titanic).mark_bar().encode(x='sex:N', y='mean(survived):Q', column='pclass:O').configure_facet_cell(
strokeWidth=0.0).configure_cell(width=200, height=200)
第三即
Chart(titanic).mark_bar().encode(x='pclass:O', y='mean(survived):Q', color='sex:O').configure_cell(width=200, height=200)
我正在 titanic.csv
工作,并尝试制作一些情节。 运行 成一期。如何重新组织 x 轴以将相同的 pclass 值彼此相邻放置。
我当前的代码:
titanic.groupby(['Sex', 'Pclass'])['Survived'].mean().plot(kind='bar', color=my_colors)
生成如下图表:
我想将来自同一 class 的男性和女性放在一起,以显示存活率的差异。有什么建议吗?
只需更改 groupby 中列的顺序即可:
import pandas as pd
import seaborn as sns
import matplotlib.pylab as plt
titanic = sns.load_dataset("titanic")
my_colors = ['r','g','b','k','y','magenta']
titanic.groupby(['pclass', 'sex'])['survived'].mean().plot(kind='bar', color=my_colors)
plt.show()
或者您可以堆叠条形图:
titanic.groupby(['pclass', 'sex'])['survived'].mean().unstack('sex').plot(kind='bar', stacked=True)
为什么使用 mean
而不是 count
?
Altair 在这里非常方便。这里有 3 个不同的单行代码来生成此数据集的三种不同可视化效果。
import seaborn as sns
titanic = sns.load_dataset("titanic")
from altair import *
首先就是
Chart(titanic).mark_bar().encode(x='pclass:O', y='mean(survived)', column='sex').configure_cell(width=200, height=200)
第二个即
Chart(titanic).mark_bar().encode(x='sex:N', y='mean(survived):Q', column='pclass:O').configure_facet_cell(
strokeWidth=0.0).configure_cell(width=200, height=200)
第三即
Chart(titanic).mark_bar().encode(x='pclass:O', y='mean(survived):Q', color='sex:O').configure_cell(width=200, height=200)