所以我的原始数据框Cabin_hunt
看起来像这样:
Fare Cabin Pclass Ticket
583 40.1250 A10 1 13049
208 27.7208 A11 1 17613
475 52.0000 A14 1 110465
556 39.6000 A16 1 11755
331 29.7000 A18 1 17580
284 26.0000 A19 1 113056
599 56.9292 A20 1 17485
737 512.3292 B101 1 17755
815 0.0000 B102 1 112058
215 42.5000 B11 1 113038
329 57.9792 B18 1 111361
523 57.9792 B18 1 111361
269 135.6333 C99 1 17760
97 63.3583 D10 1 17759
350 63.3583 D10 3 17759
765 77.9583 D11 3 13502
然后我根据他们'Cabin'值的第一个字母继续划分'Cabin'。我最终的目标是以图形方式显示Pclass和每个Cabin组之间的关系。我通过以下代码创建了组:
Cabin_group =Cabin_hunt.groupby([ Cabin_hunt.Pclass,Cabin_hunt.Cabin.str[0]]).size().unstack()
我的输出如下:
Cabin A B C D E F G T
Pclass
1 22.0 65.0 94.0 40.0 34.0 NaN NaN 1.0
2 NaN NaN NaN 6.0 4.0 13.0 NaN NaN
3 NaN NaN NaN NaN 3.0 8.0 5.0 NaN
Cabin_group.columns和index输出以下代码:
Cabin_group.columns
Index([u'A', u'B', u'C', u'D', u'E', u'F', u'G', u'T'], dtype='object', name=u'Cabin')
Cabin_group.index
Int64Index([1, 2, 3], dtype='int64', name=u'Pclass')
理想情况下,我需要8个图表一个屏幕;每个字母一个(A-T)。 在每个图表中,我想显示三个条形,每个条形代表x轴上的Pclass和y轴上的观察量。
我和Countplot
以及PairGrid
一起玩,但我无法正常工作。
g = sns.PairGrid(Cabin_group)
g.map(sns.countplot)
plt.show()
我也试过这样的事情:
g = sns.FacetGrid(Cabin_group, col=Cabin_group.columns, size=4, aspect=.5)
g.map(sns.countplot,x=Cabin_group.index)
回想起来似乎完全错了。
任何建议都将不胜感激。
答案 0 :(得分:1)
至于我从你想要获得的图形描述中理解的内容,这就是我在IPython Notebook中所做的:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
# Generate Data
data = np.array(
[[ 22., 65., 94., 40., 34., np.nan, np.nan, 1.],
[ np.nan, np.nan, np.nan, 6., 4., 13., np.nan, np.nan],
[ np.nan, np.nan, np.nan, np.nan, 3., 8., 5., np.nan]]
)
df = pd.DataFrame(data)
df.columns.name = 'Cabin'
df.columns = 'A B C D E F G T'.split()
df.index.name = 'Pclass'
df.index = [1, 2, 3]
# Plot Data
for no, col in enumerate(df):
plt.subplot(2, 4, no+1)
df[col].plot(kind='bar', title=col)
plt.xlabel('Pclass')
plt.ylabel('Amount of observations')
plt.ylim([0, df.max().max()])
plt.tight_layout()
plt.show()
这是结果: