ここで、まずPandasとNumpyの用途性をおさえておきます。
-
Numpyは多次元データを扱う
- Numpyが対象とするのは多次元配列の数値データであり、これ以外のデータ型を処理する関数はほとんどない。
- 計算速度がかなり速く、またCython化(C/C++に変換してコンパイル)するとC言語並みの速さになったりする。
-
Pandasは多次元以外の実データを扱う
- 多次元配列以外の実データを対象とし、CSVやSQL、Excelで保存されているようなデータの入出力や加工に適している。
- 数値データだけでなく、時系列データであろうが文字列を含んでいようが、あらゆるデータを処理する関数を備えている。
したがって、PandasとNumpyとを段階的に組み合わせて、例えば以下のような一連の流れで使われることが多いといえます。

⑴ データを用意する
data = [12, 3, 5, 2, 6, 7, 9, 6, 4, 11]
変数名 = []の中に値をカンマ区切りで直接書いてPython標準のリストを作成しました。
以下、Numpyを用いて各種統計量を算出していきます。
⑵ 平均値を算出する
np.mean(data)
Numpyのmean関数によって平均値 6.5 が算出されました。
⑶ 中央値を算出する
np.median(data)
Numpyのmedian関数によって中央値 6.0 が算出されました。
データを大きさの順に並べ替えたとき、ちょうど中央に位置する値のことでメディアン(median)とも言います。第2四分位数に等しく、データが複数個の場合は、中央に近接する2つの値の平均値となります。
⑷ 合計値を算出する
np.sum(data)
Numpyのsum関数によって合計値 65 が算出されました。
⑸ 標準偏差を算出する
np.std(data)
Numpyのstd関数によって 3.138470965295043 という結果が得られました。
ただし、これは母標準偏差の値です。
標準偏差には、母標準偏差と不偏標準偏差という2つの種類があるので注意が必要です。
母集団と標本
調査や研究の対象となるものの全体を母集団といい、母集団から抽出された一部を標本といいます。
母集団全体を調べる調査を全数調査とか悉皆調査といいます。その代表的なものとしては、日本に居住するすべての人に回答する義務が法律で定められている「国勢調査」とか、事業所の国勢調査とでもいうべき「事業所・企業統計調査」くらいでしょう。
つまり、実社会で扱うデータというのは、ほぼすべてが標本調査による標本といえます。しかし、なにも標本の特徴や傾向を知りたいわけではなくて、常に標本を対象としながら母集団の特徴や傾向を推し量るということをしています。
さて、標準偏差を算出するには2つの統計量が必要です。まず平均値を計算し、それを使って分散を計算し、分散の平方根をとったものが標準偏差になります。
標本から算出される平均、分散、標準偏差は、それぞれ「標本」ないし「不偏」という接頭語をつけて、標本平均$\bar{X}$、不偏分散$s^2$、**不偏標準偏差$s$**といいます。これに対して、標本から推定される母集団の平均、分散、標準偏差を、母平均$μ$、母分散$σ^2$、**母標準偏差$σ$**と呼んで区別しています。
そこで、Numpyをつかって不偏標準偏差を求める場合には次のようにします。
np.std(data, ddof=1)
先にPandasを用いて算出された標準偏差と比較してみます。
df = pd.DataFrame(data) # dataをPandasのデータフレームに変換
df.describe().loc['std']
Pandasによる標準偏差は、不偏標準偏差となっています。
続いて今度は、Pythonの標準ライブラリであるstatisticsを用いて基本統計量を算出してみます。





