【问题标题】:Boxplot for list in pandas dataframe熊猫数据框中列表的箱线图
【发布时间】:2018-07-21 22:20:39
【问题描述】:

我知道了。数据框:

    Month(s)                                             Vals
0        Mar                             [3.691756, 3.59027575]
1  Mar - Apr  [4.75706325, 3.138456625, 1.90741175, 3.019323]
2  Mar - May  [4.698454875, 3.317812375, 2.512695375, 2.8096]
3  Mar - Jun  [4.70111125, 3.474370375, 2.53445075, 2.926820]
4  Mar - Jul  [4.79324375, 3.56983175, 2.39309125, 3.0682476]
5  Mar - Aug  [4.618898125, 3.613308875, 2.361248375, 3.0536]

我想使用“Month(s)”列创建 x 轴的箱线图,使用“Vals”列创建 y 轴的箱线图。简单地做df.plot() 是行不通的。我该如何解决?

【问题讨论】:

  • 您确实意识到您的Vals 列是list,对吗?您需要将其分解为不同的列,然后绘制,或者您需要将列表折叠成一些可以绘制的统计度量(例如均值和方差)。您的问题没有足够的信息让我确定哪种方法适合您的需求。此外,您的 Month(s) 列必须是单一值才能使情节有意义。此外,将Month(s) 更改为其他名称,因为该名称自找麻烦。
  • 感谢@Kartik,我想画一个箱线图,所以不确定计算统计度量是否有帮助。
  • 好吧,解释一下Vals 中的数据... 箱线图用于可视化数据的分布,它们就像从上方看到的正态分布。它们有一条表示平均值的线,表示标准偏差的框边界,然后表示置信区间的尾部,以及表示异常值的点。您的 Vals 目前不符合任何这些措施。

标签: python pandas


【解决方案1】:

通过将“Month(s)”设置为索引来准备 DataFrame

df = pd.DataFrame([('      Mar',[3.691756, 3.59027575]),
               ('Mar - Apr', [4.75706325, 3.138456625, 1.90741175, 3.019323]),
               ('Mar - May',[4.698454875, 3.317812375, 2.512695375, 2.8096]),
               ('Mar - Jun', [4.70111125, 3.474370375, 2.53445075, 2.926820]),
               ('Mar - Jul', [4.79324375, 3.56983175, 2.39309125, 3.0682476]),
               ('Mar - Aug', [4.618898125, 3.613308875, 2.361248375, 3.0536])],
              columns=['Month(s)','Vals']).set_index('Month(s)')

将使您能够将每一行转换为系列

df['Vals'].apply(lambda x: pd.Series(x)).T.boxplot(figsize=(10,10),rot=45)

【讨论】:

    猜你喜欢
    • 2020-11-29
    • 2017-03-20
    • 2017-12-16
    • 1970-01-01
    • 2020-04-17
    • 2023-03-28
    • 2014-12-17
    • 2020-12-05
    • 2021-10-14
    相关资源
    最近更新 更多