web-dev-qa-db-ja.com

Python Pandas-記述関数によって25パーセンタイルがどのように計算されるか

データフレーム内の特定のデータセットについて、describe関数を適用すると、最小、最大、25%、50%などの基本的な統計が得られます。

例えば:

data_1 = pd.DataFrame({'One':[4,6,8,10]},columns=['One'])
data_1.describe()

出力は次のとおりです。

        One
count   4.000000
mean    7.000000
std     2.581989
min     4.000000
25%     5.500000
50%     7.000000
75%     8.500000
max     10.000000

私の質問は:25%を計算するための数式は何ですか?

1)私が知っていることに基づいて、それは:

formula = percentile * n (n is number of values)

この場合:

25/100 * 4 = 1

したがって、最初の位置は4番ですが、describe関数によると、これは5.5です。

2)別の例では、整数を取得した場合、4と6の平均を取ります-5になります-それでも、describeによって指定された5.5と一致しません。

3)別のチュートリアルでは、2つの数値の差を取り、25%を掛けて、小さい方の数値に加算します。

25/100 * (6-4) = 1/4*2 = 0.5

それを低い数値に追加します:4 + 0.5 = 4.5

まだ5.5を取得できません。

誰かが明確にしてもらえますか?

11
Gublooo

pandasのドキュメント 変位値の計算に関する情報があり、numpy.percentileへの参照が作成されます。

Numpy.percentileという特定の分位での戻り値。

次に、numpy.percentile explanation を確認すると、補間方法がデフォルトでlinearに設定されていることがわかります。

線形:i +(j-i)*分数。ここで、分数はiとjで囲まれたインデックスの小数部分です。

特定のケースでは、25番目の分位数は次の結果になります。

res_25 = 4 + (6-4)*(3/4) =  5.5

75番目の分位の場合、次のようになります。

res_75 = 8 + (10-8)*(1/4) = 8.5

補間方法を「中点」に設定すると、思い通りの結果が得られます。

10
Nikolas Rieble

この計算をmin +(max-min)* percentileと見ると理解しやすいと思います。 NumPyで説明されているこの関数と同じ結果になります。

線形:i +(j-i)*分数。ここで、分数はiとjで囲まれたインデックスの小数部分です。

res_25 = 4+(10-4)*percentile = 4+(10-4)*25% = 5.5
res_75 = 4+(10-4)*percentile = 4+(10-4)*75% = 8.5
7
orli Zhu