使用pd.cut为图形创建bin,但bin值不会按预期出现

时间:2016-10-19 17:16:02

标签: pandas matplotlib seaborn

以下是我正在运行的代码:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

titanic = sns.load_dataset("titanic") 
y =titanic.groupby([titanic.fare//1,'sex']).survived.mean().reset_index()  #grouping by 'fare' rounded to an integer and 'sex' and then getting the survivability 

x =pd.cut(y.fare, (0,17,35,70,300,515)) #I'm not sure if my format is correct but this is how I cut up the fare values  


y['Fare_bins']= x   # adding the newly created bins to a new column "Fare_bins' in original dataframe.  



#graphing with seaborn


sns.set(style="whitegrid")
g = sns.factorplot(x='Fare_bins', y= 'survived', col = 'sex', kind ='bar' ,data= y,
           size=4, aspect =2.5 , palette="muted")
g.despine(left=True)
g.set_ylabels("Survival Probability")
g.set_xlabels('Fare')
plt.show()

我遇到的问题是Fare_values显示为(0,17)。 左侧是圆形支架,右侧是方括号。 如果可能的话我想要这样的东西:     (0-17)或[0-17]

接下来,每个条形图之间似乎存在差距。我期待他们相邻。有两个图表被表示,所以我不希望这些条形图是连接的,但前5个条形图(第一个图形)应该连接,最后5个条形图相互连接(第二个图形)。

我如何解决这两个问题呢?

1 个答案:

答案 0 :(得分:0)

似乎我可以添加标签。 只需在“cut”方法参数中添加标签,我就可以根据需要显示Fare_values。

x =pd.cut(y.fare, (0,17,35,70,300,515), labels = ('(0-17)', '(17-35)', '(35-70)', '(70-300)','(300-515)') ) 

至于fare_value组周围的括号, 根据文件:

right : bool, optional

Indicates whether the bins include the rightmost edge or not. If right == True (the default), then the bins [1,2,3,4] indicate (1,2], (2,3], (3,4].

仍然不确定是否可以加入酒吧。