绘制没有组的箱线图 seaborn

时间:2021-04-26 11:41:14

标签: python statistics seaborn

我想在seaborn(不是matplotlib)中绘制箱线图,但它给了我一个错误“系列的真值不明确。使用a.empty、a.bool()、a.item()、a。 any() 或 a.all()。"

我没有在在线文档或其他教程中找到与我的数据类似的内容。我的数据看起来很简单,只是一堆观察: 例如

  1.       2.     ...     ... 
1.010.   2.343.   ...
2.030.   2.534.   ...
2.433.   2.748.   ...
1.933.   2.432.   ...
  ...     ...

我将我的数据转换为pandas.DataFrame,它看起来像我上面写的(观察次数是第一个字符串(pandas.columns),值在下面)。它不起作用sns.boxplot(data)。可能有一些争论或其他什么。你可以帮帮我吗?谢谢。

2 个答案:

答案 0 :(得分:1)

箱线图需要一个数字列表来绘制,或者如果它是一个数据框,它会将每一列绘制为箱线图,但每列需要具有相同长度的数据。尝试将您的系列转换为列表并像这样绘制:

import seaborn as sns

fig, ax = plt.subplots()
sns.boxplot(ax=ax, data = data_df_series.tolist())

如果这不起作用,您的系列的数据类型是什么?尝试做:

df.dtype

此外,是否有任何 NaN 值?

此外,您无需将数据转换为 Pandas 数据框,因为它只会在预先绘制之前转换为列表。如果它还不是 Pandas 数据框,您可以将其保留为之前的任何内容(即列表或 numpy 数组)

答案 1 :(得分:1)

假设你使用的是seaborn 0.11.1,你可以直接调用sns.boxplot

import seaborn as sns
import pandas as pd

df = pd.DataFrame({'1': [1.010, 2.030, 2.433, 1.933], 
                   '2': [ 2.343, 2.534, 2.748, 2.432]})
sns.boxplot(data=df)

boxplot from simple dataframe