【Python】PandasでDataFrameの統計量を取得する方法まとめ
PythonのPandasライブラリを使うとデータの分析が簡単にできます。特にdescribeやmean、stdといったメソッドを活用すればデータの基本的な統計量を素早く確認可能です。この記事ではDataFrameの統計量を取得するための便利なメソッドを具体例を交えて説明します。
目次
統計量を一括で確認できるdescribeメソッド
describeメソッドを使うとDataFrame全体の基本的な統計量を一括で確認できます。対象となるデータ型(数値データやカテゴリデータ)に応じて異なる情報を提供します。
数値データの場合
import pandas as pd data = { 'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50] } df = pd.DataFrame(data) print(df.describe()) # 出力 # A B # count 5.000000 5.000000 # mean 3.000000 30.000000 # std 1.581139 15.811388 # min 1.000000 10.000000 # 25% 2.000000 20.000000 # 50% 3.000000 30.000000 # 75% 4.000000 40.000000 # max 5.000000 50.000000
- count: 有効なデータの個数
- mean: 平均値
- std: 標準偏差
- min: 最小値
- 25%: 第一四分位数
- 50% (median): 中央値
- 75%: 第三四分位数
- max: 最大値
文字データの場合
文字列やカテゴリデータに対してdescribeを使うと、以下の情報が得られます。
import pandas as pd data = { 'C': ['apple', 'banana', 'apple', 'orange', 'banana'] } df = pd.DataFrame(data) print(df.describe()) # 出力 # C # count 5 # unique 3 # top apple # freq 2
- count: 有効なデータの個数
- unique: ユニークな値の個数
- top: 最頻値
- freq: 最頻値の出現回数
標準偏差を計算するstdメソッド
stdメソッドは、特定の列や全体の標準偏差を計算します。標準偏差はデータのばらつきを示す指標で平均からのデータの分散を表します。
import pandas as pd data = { 'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50] } df = pd.DataFrame(data) print(df['A'].std()) # 列Aの標準偏差 # 出力 # 1.5811388300841898
平均値を計算するmeanメソッド
データの平均値を計算します。
# 共通部分省略 print(df['A'].mean()) # 列Aの平均値 # 出力 # 3.0
中央値を計算するmedianメソッド
データの中央値(中央値)を計算します。中央値は外れ値の影響を受けにくい指標です。
# 共通部分省略 print(df['A'].median()) # 列Aの中央値 # 出力 # 3.0
最小値と最大値を取得するmin・maxメソッド
それぞれ、最小値と最大値を取得します。
# 共通部分省略 print(df['A'].min()) # 列Aの最小値 print(df['A'].max()) # 列Aの最大値 # 出力 # 1 # 5
合計を計算するsumメソッド
データの合計を計算します。
# 共通部分省略 print(df['A'].sum()) # 列Aの合計値 # 出力 # 15
データの分散を計算するvarメソッド
分散を計算します。分散は標準偏差の二乗に相当し、データのばらつきの指標です。
# 共通部分省略 print(df['A'].var()) # 列Aの分散 # 出力 # 2.5
最頻値を取得するmodeメソッド
データの最頻値を取得します。同じ値が複数ある場合は、すべての最頻値が返されます。
# 共通部分省略 print(df['A'].mode()) # 列Aの最頻値 # 出力 # 0 1 # 1 2 # 2 3 # 3 4 # 4 5 # Name: A, dtype: int64
四分位点を取得するquantileメソッド
任意の分位点を計算します(例: 四分位点)。
# 共通部分省略 print(df['A'].quantile(0.25)) # 第一四分位数 print(df['A'].quantile(0.75)) # 第三四分位数 # 出力 # 2.0 # 4.0
ユニークな値を取得するuniqueメソッドと値の頻度を確認するvalue_countsメソッド
- unique: ユニークな値の一覧を取得。
- value_counts: 各値の出現頻度をカウント。
import pandas as pd data = { 'C': ['apple', 'banana', 'apple', 'orange', 'banana'] } df = pd.DataFrame(data) print(df['C'].unique()) # 列Cのユニークな値 print(df['C'].value_counts()) # 列Cの値ごとの頻度 # 出力 # ['apple' 'banana' 'orange'] # C # apple 2 # banana 2 # orange 1 # Name: count, dtype: int64
欠損値の確認を行うisna・notnaメソッド
- isna: 欠損値(NaN)を確認する(True/Falseで返す)。
- notna: 欠損値でない部分を確認する。
import pandas as pd data = { 'A': [1, 2, 3, None, 5], 'B': [10, 20, 30, 40, 50] } df = pd.DataFrame(data) print(df['A'].isna()) # 欠損値の確認 print(df['A'].notna()) # 欠損値のない箇所の確認 # 出力 # 0 False # 1 False # 2 False # 3 True # 4 False # Name: A, dtype: bool # 0 True # 1 True # 2 True # 3 False # 4 True # Name: A, dtype: bool
他にも…
- idxmin / idxmax: 最小値・最大値のインデックスを取得。
- cumsum: 累積和を計算。
- cumprod: 累積積を計算。
import pandas as pd data = { 'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50] } df = pd.DataFrame(data) print(df['A'].idxmin()) # 最小値のインデックスを取得 print(df['A'].idxmax()) # 最大値のインデックスを取得 print(df['A'].cumsum()) # 累積和を計算 print(df['A'].cumprod()) # 累積積を計算 # 出力 # 0 # 4 # 0 1 # 1 3 # 2 6 # 3 10 # 4 15 # Name: A, dtype: int64 # 0 1 # 1 2 # 2 6 # 3 24 # 4 120 # Name: A, dtype: int64
スポンサーリンク