Pandas Series.var() 関数
Series.var()は、Pandas で Series の分散を計算するための関数です。分散は標準偏差の2乗であり、データのばらつきの程度を測定し、統計解析における基本的な指標です。
分散が大きいほど、データはよりばらついていることを示します。分散が小さいほど、データはより集中していることを示します。統計解析、機械学習、信号処理などの分野で広く応用されています。
基本構文とパラメータ
var()は、Series オブジェクトのメンバー関数であり、ドット演算子で直接呼び出します。
構文形式
Series.var(axis=None, skipna=True, level=None, numeric_only=None, ddof=1, **kwargs)
パラメータの説明
| パラメータ | 型 | 説明 | デフォルト値 |
|---|---|---|---|
| axis | int | 軸を指定します。Series は1行のデータしかないため、このパラメータは主に DataFrame との互換性のためのものです。 | None |
| skipna | bool | True の場合、計算時に NaN 値をスキップします。False の場合、NaN に遭遇すると結果は NaN を返します。 | True |
| level | int または str | Series がマルチインデックス(MultiIndex)の場合、計算する階層を指定します。 | None |
| numeric_only | bool | True の場合、数値型データのみに対して計算します。それ以外の場合は、数値への変換を試みます。 | False |
| ddof | int | 自由度調整パラメータです。ddof=1 は標本分散(n-1)、ddof=0 は母分散(n)を使用します。 | 1 |
戻り値
- 戻り値の型:
float - 説明:Series 内の要素の分散を返します。デフォルトでは標本分散(n-1 で除算)を使用します。
実例
簡単なものから複雑なものまでの一連の例を通して、徹底的に習得しましょう。Series.var()の使い方。
例1:基本の使い方 - 分散の概念を理解する
分散は標準偏差の2乗であり、データと平均値の間の偏差の程度を測定します。
実例
import pandas as pd
# 2つのデータセット
group_a = pd.Series([85, 86, 87, 88, 89])
group_b = pd.Series([70, 75, 85, 95, 100])
print("Aグループのデータ(比較的集中):")
print(group_a)
print(f"平均値:{group_a.mean():.2f}")
print(f"分散:{group_a.var():.2f}")
print(f"標準偏差:{group_a.std():.2f}")
print()
print("Bグループのデータ(比較的分散):")
print(group_b)
print(f"平均値:{group_b.mean():.2f}")
print(f"分散:{group_b.var():.2f}")
print(f"標準偏差:{group_b.std():.2f}")
print()
print("注意:分散は標準偏差の2乗です (2.50^2 = 6.25, 12.50^2 = 156.25)")
# 2つのデータセット
group_a = pd.Series([85, 86, 87, 88, 89])
group_b = pd.Series([70, 75, 85, 95, 100])
print("Aグループのデータ(比較的集中):")
print(group_a)
print(f"平均値:{group_a.mean():.2f}")
print(f"分散:{group_a.var():.2f}")
print(f"標準偏差:{group_a.std():.2f}")
print()
print("Bグループのデータ(比較的分散):")
print(group_b)
print(f"平均値:{group_b.mean():.2f}")
print(f"分散:{group_b.var():.2f}")
print(f"標準偏差:{group_b.std():.2f}")
print()
print("注意:分散は標準偏差の2乗です (2.50^2 = 6.25, 12.50^2 = 156.25)")
実行結果:
A组数据(较集中): 0 85 1 86 2 87 3 88 4 89 dtype: int64 平均值:85.00 方差:2.50 标准差:1.58 B组数据(较分散): 0 70 1 75 2 85 3 95 4 100 dtype: int64 平均值:85.00 方差:156.25 标准差:12.50 注意:方差是标准差的平方 (1.58^2 ≈ 2.50, 12.50^2 = 156.25)
コードの解説:
- A グループの分散は 2.50 で、データは非常に集中しています。
- B グループの分散は 156.25 で、データは非常にばらついています。
- 分散 = 標準偏差²(近似値は ddof=1 の調整によるものです)。
例2:ddof パラメータの役割
ddofこのパラメータは、標本分散と母分散のどちらを使用するかを制御します。
実例
import pandas as pd
# データセットを作成する
data = pd.Series([2, 4, 4, 4, 5, 5, 7, 9])
print("データ:")
print(data)
print()
# デフォルトの ddof=1 では、標本分散を使用します(n-1 で除算)
sample_var = data.var(ddof=1)
print(f"標本分散(ddof=1):{sample_var:.4f}")
# ddof=0 では、母分散を使用します(n で除算)
population_var = data.var(ddof=0)
print(f"母分散(ddof=0):{population_var:.4f}")
print()
# 検証:標本分散の平方根は標本標準偏差とほぼ等しい
import math
print(f"標本分散の平方根:{math.sqrt(sample_var):.4f}")
print(f"標本標準偏差:{data.std():.4f}")
# データセットを作成する
data = pd.Series([2, 4, 4, 4, 5, 5, 7, 9])
print("データ:")
print(data)
print()
# デフォルトの ddof=1 では、標本分散を使用します(n-1 で除算)
sample_var = data.var(ddof=1)
print(f"標本分散(ddof=1):{sample_var:.4f}")
# ddof=0 では、母分散を使用します(n で除算)
population_var = data.var(ddof=0)
print(f"母分散(ddof=0):{population_var:.4f}")
print()
# 検証:標本分散の平方根は標本標準偏差とほぼ等しい
import math
print(f"標本分散の平方根:{math.sqrt(sample_var):.4f}")
print(f"標本標準偏差:{data.std():.4f}")
実行結果:
数据: 0 2 1 4 2 4 3 4 4 5 5 5 6 7 7 9 dtype: int64 样本方差(ddof=1):5.1429 总体方差(ddof=0):4.5000 样本方差的平方根:2.2678 样本标准差:2.2678
例3:欠損値を含むデータの処理
実例
import pandas as pd
import numpy as np
# 欠損値を含む Series を作成する
data_with_nan = pd.Series([10, 20, np.nan, 30, 40, np.nan, 50])
print("欠損値を含むデータ:")
print(data_with_nan)
print()
# デフォルトは skipna=True
var_skipna = data_with_nan.var()
print(f"skipna=True(デフォルト)の場合の分散:{var_skipna:.4f}")
# skipna=False を設定
var_no_skipna = data_with_nan.var(skipna=False)
print(f"skipna=False の場合の分散:{var_no_skipna}")
import numpy as np
# 欠損値を含む Series を作成する
data_with_nan = pd.Series([10, 20, np.nan, 30, 40, np.nan, 50])
print("欠損値を含むデータ:")
print(data_with_nan)
print()
# デフォルトは skipna=True
var_skipna = data_with_nan.var()
print(f"skipna=True(デフォルト)の場合の分散:{var_skipna:.4f}")
# skipna=False を設定
var_no_skipna = data_with_nan.var(skipna=False)
print(f"skipna=False の場合の分散:{var_no_skipna}")
実行結果:
包含缺失值的数据: 0 10.0 1 20.0 2 NaN 3 30.0 4 40.0 5 NaN 6 50.0 dtype: float64 skipna=True(默认)时的方差:250.0000 skipna=False 时的方差:nan
例4:分散と標準偏差の実際の応用比較
実際の応用では、分散と標準偏差にはそれぞれ利点があります。
実例
import pandas as pd
# 2つの投資ポートフォリオの月次収益率(%)をシミュレーションする
portfolio_a = pd.Series([2.5, 3.0, -1.0, 1.5, 2.0, 2.8, -0.5, 1.2, 1.8, 2.2])
portfolio_b = pd.Series([5.0, -3.5, 8.0, -2.0, 6.5, -4.0, 7.0, -1.5, 4.5, -2.0])
print("ポートフォリオ A(月次収益 %):")
print(portfolio_a)
print(f"分散:{portfolio_a.var():.4f}")
print(f"標準偏差(ボラティリティ):{portfolio_a.std():.2f}%")
print()
print("ポートフォリオ B(月次収益 %):")
print(portfolio_b)
print(f"分散:{portfolio_b.var():.4f}")
print(f"標準偏差(ボラティリティ):{portfolio_b.std():.2f}%")
print()
print("分析:")
print("- ポートフォリオ A は分散と標準偏差がともに小さく、より安定したパフォーマンス")
print("- ポートフォリオ B は分散と標準偏差がともに大きく、リスクが高い")
print("- リスクの観点から見ると、ポートフォリオ A は安定志向の投資家により適しています")
# 2つの投資ポートフォリオの月次収益率(%)をシミュレーションする
portfolio_a = pd.Series([2.5, 3.0, -1.0, 1.5, 2.0, 2.8, -0.5, 1.2, 1.8, 2.2])
portfolio_b = pd.Series([5.0, -3.5, 8.0, -2.0, 6.5, -4.0, 7.0, -1.5, 4.5, -2.0])
print("ポートフォリオ A(月次収益 %):")
print(portfolio_a)
print(f"分散:{portfolio_a.var():.4f}")
print(f"標準偏差(ボラティリティ):{portfolio_a.std():.2f}%")
print()
print("ポートフォリオ B(月次収益 %):")
print(portfolio_b)
print(f"分散:{portfolio_b.var():.4f}")
print(f"標準偏差(ボラティリティ):{portfolio_b.std():.2f}%")
print()
print("分析:")
print("- ポートフォリオ A は分散と標準偏差がともに小さく、より安定したパフォーマンス")
print("- ポートフォリオ B は分散と標準偏差がともに大きく、リスクが高い")
print("- リスクの観点から見ると、ポートフォリオ A は安定志向の投資家により適しています")
実行結果:
投资组合 A(月度收益 %): 0 2.5 1 3.0 2 1.0 3 1.5 4 2.0 5 2.8 6 0.5 7 1.2 8 1.8 9 2.2 dtype: int64 方差:1.29 标准差(波动率):1.14% 投资组合 B(月度收益 %): 0 5.0 1 -3.5 2 8.0 3 -2.0 4 6.5 5 -4.0 6 7.0 7 -1.5 8 4.5 9 -2.0 dtype: int64 方差:19.56 标准差(波动率):4.42% 分析:组合 B 的风险(波动率)约是组合 A 的 4 倍。
注意事項
- 分散は標準偏差の2乗であり、両者の関係は:std = sqrt(var) です。
- デフォルトでは標本分散(ddof=1)を使用し、統計解析に適しています。
- 分散の単位は元のデータの単位の2乗であり、直感的に理解しにくいです。標準偏差は元の単位を保持しているため、解釈しやすいです。
- 分散を数学的計算に使用する必要がある場面(共分散分析など)では、分散を使用すべきです。
まとめ
Series.var()は、統計解析における基本的な関数です。その主な特徴は次のとおりです。
- デフォルトで標本分散(ddof=1)を使用します。
- 分散は標準偏差の2乗であり、数学的な演算においてより便利です。
- 標準偏差は元の単位を保持しているため、直感的に理解しやすいです。
- 金融分野では、分散と標準偏差はどちらもリスク(ボラティリティ)の測定に使用されます。
実際の応用では、データのばらつきの程度を直感的に理解する必要がある場合は標準偏差を使用する方が適切です。数学的な演算(共分散の計算など)を行う必要がある場合は、分散を使用する方が便利です。
その他の拡張
Pandas よく使う関数