データフレーム内の特定のデータセットについて、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
を取得できません。
誰かが明確にしてもらえますか?
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
補間方法を「中点」に設定すると、思い通りの結果が得られます。
。
この計算を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