Python pandas groupby boxplots重叠

时间:2015-09-22 15:24:35

标签: python pandas matplotlib

我对这个Pandas / Matplotlib行为感到困惑:

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

series = pd.Series(np.arange(10))
classifier = lambda x: 'Odd' if x%2 else "Even"
grouped = series.groupby(classifier)

grouped.plot(kind='box')
plt.show()

Boxplots overlap

如何将箱形图彼此相邻 Pandas style ,即语法很好? :)

(Pandas v.1.16.2,Matplotlib v.1.4.3)

编辑: 我知道我可以这样做:

grouped = grouped.apply(pd.Series.to_frame)

但我认为有更清洁的方法吗?

1 个答案:

答案 0 :(得分:2)

所以我的一般建议是避免通过大熊猫绘图,但以下情况除外:

  1. 超级快速' n'肮脏的互动探索和检查
  2. 时间序列
  3. 任何其他时间你都想使用seaborn或滚动你自己的matplotlib功能。由于您正在使用数据框,因此尽管标签数据支持很快就会出现在matplotlib的管道中,但是seaborn是您最好的选择。

    我还建议您继续创建数据框,并在其中存储分类。

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn
    seaborn.set(style='ticks')
    
    df = pd.DataFrame(np.arange(10), columns=['val'])
    df['class'] = df['val'].apply(lambda x: 'Odd' if x%2 else "Even")
    seaborn.boxplot(x='class', y='val', data=df, width=0.5)
    seaborn.despine(offset=10, trim=True)
    

    enter image description here