1

パンダを使用してデータフレームの列をプロットする場合、たとえば

  df.boxplot()

の自動調整によりyaxis、プロットに大量の未使用スペースが生じる可能性があります。これは、データフレームに箱ひげ図のひげを超えるポイントがあるためでしょうか (ただし、何らかの理由で外れ値が表示されません)。その場合、ylim プロットに空きスペースがあまりないように自動的に調整するにはどうすればよいでしょうか?

ここに画像の説明を入力

4

2 に答える 2

4

seaborn スタイルと matplotlib が boxplot を描画する方法の組み合わせが、外れ値をここに隠していると思います。

歪んだデータを生成した場合

import seaborn as sns
import pandas as pd
import numpy as np

x = pd.DataFrame(np.random.lognormal(size=(100, 6)),
             columns=list("abcdef"))

そしてboxplot、データフレームでメソッドを使用すると、似たようなものが見えます

x.boxplot()

ここに画像の説明を入力

しかし、外れ値をプロットするために使用される記号を変更すると、次のようになります。

x.boxplot(sym="k.")

ここに画像の説明を入力

別の方法として、seabornboxplot関数を使用することもできます。これは同じことを行いますが、美学が優れています。

sns.boxplot(x)

ここに画像の説明を入力

于 2014-05-07T21:29:04.327 に答える
1

この SO投稿の eumiro の回答に基づいて構築します(次のようにできる pandas データ フレームに拡張するだけです)。

import numpy as np
import pandas as pd

def reject_outliers(df, col_name, m=2):
    """ Returns data frame without outliers in the col_name column """
    return df[np.abs(df[col_name] - df[col_name].mean()) < m * df[col_name].std()]

# Create fake data
N = 10
df = pd.DataFrame(dict(a=np.random.rand(N), b=np.random.rand(N)))
df = df.append(dict(a=0.1, b=10), ignore_index=True)

# Strip outliers from the "b" column
df = reject_outliers(df, "b")
bp = df.boxplot()

引数mは、無視する標準偏差の数です。

編集:

そもそもウィスカーに最大の外れ値が含まれていないのはなぜですか?

ウィキペディアで説明されているように、箱ひげ図にはいくつかの種類があります。boxplot はのpandasboxplot を呼び出しますmatplotlibこれに関するドキュメントを見ると、引数whis「ウィスカーの長さを内側の四分位範囲の関数として定義します。したがって、設計上、範囲全体をカバーすることはありません.

于 2014-05-07T14:38:59.250 に答える