Pandas Series.sum() 関数
Series.sum()Pandas で Series の全要素の合計を計算するための関数です。データ分析で最もよく使われる統計関数の一つであり、数値データの総和をすばやく取得できます。
総売上高、総利益、総数量のいずれを計算する場合でも、sum()素早く完了するのに役立ちます。金融データ、統計レポート、売上データ分析などのシーンに特に適しています。
基本構文とパラメータ
sum()Series オブジェクトのメンバー関数であり、ドット演算子で直接呼び出します。
構文形式
Series.sum(axis=None, skipna=True, level=None, numeric_only=None, min_count=0, **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 |
| min_count | int | 計算に必要な有効値の最小数です。有効値がこの数より少ない場合は NaN を返します。 | 0 |
戻り値
- 戻り値の型:数値型(
int、float或numpy.nan) - 説明:Series 内のすべての要素の合計を返します。すべての要素が NaN(かつ skipna=True)の場合、0 を返します。
実例
簡単な例から複雑な例までの一連の例を通して、Series.sum()使い方を徹底的にマスターしましょう。
例1:基本的な使い方 - 数値リストの合計を計算する
最も基本的な使用方法は、数値型 Series を作成し、呼び出してsum()合計を計算することです。
実例
import pandas as pd
# 売上高を含む Series を作成
# 1週間の1日あたりの売上データをシミュレート
sales_data = pd.Series([1200, 1500, 1800, 900, 2100, 1600, 1350])
# 総売上高を計算
total_sales = sales_data.sum()
print(毎日の売上高:)
print(sales_data)
print()
print(f総売上高:{total_sales})
# 売上高を含む Series を作成
# 1週間の1日あたりの売上データをシミュレート
sales_data = pd.Series([1200, 1500, 1800, 900, 2100, 1600, 1350])
# 総売上高を計算
total_sales = sales_data.sum()
print(毎日の売上高:)
print(sales_data)
print()
print(f総売上高:{total_sales})
実行結果:
每日销售额: 0 1200 1 1500 2 1800 3 900 4 2100 5 1600 6 1350 dtype: int64 总销售额:10450
コードの解説:
- 7日分の売上高を含む Series を作成し、データ型は整数です。
sum()すべての要素を単純に走査し、それらを加算して合計 10450 を取得します。
例2:欠損値を含むデータの処理
実際のデータには欠損値がよく含まれます。skipnaパラメータによって、これらの欠損値の処理方法が決まります。
実例
import pandas as pd
import numpy as np
# 欠損値を含む Series を作成
# 一部の日付の売上データが欠損していることをシミュレート
sales_with_nan = pd.Series([1200, 1500, np.nan, 1800, np.nan, 2100, 1600])
print(欠損値を含む売上データ:)
print(sales_with_nan)
print()
# デフォルトは skipna=True で、NaN をスキップして合計を計算
total_skipna = sales_with_nan.sum()
print(fskipna=True(デフォルト)のときの合計:{total_skipna})
# skipna=False を設定すると、NaN に遭遇した場合は NaN を返す
total_no_skipna = sales_with_nan.sum(skipna=False)
print(fskipna=False のときの合計:{total_no_skipna})
import numpy as np
# 欠損値を含む Series を作成
# 一部の日付の売上データが欠損していることをシミュレート
sales_with_nan = pd.Series([1200, 1500, np.nan, 1800, np.nan, 2100, 1600])
print(欠損値を含む売上データ:)
print(sales_with_nan)
print()
# デフォルトは skipna=True で、NaN をスキップして合計を計算
total_skipna = sales_with_nan.sum()
print(fskipna=True(デフォルト)のときの合計:{total_skipna})
# skipna=False を設定すると、NaN に遭遇した場合は NaN を返す
total_no_skipna = sales_with_nan.sum(skipna=False)
print(fskipna=False のときの合計:{total_no_skipna})
実行結果:
包含缺失值的销售数据: 0 1200.0 1 1500.0 2 NaN 3 1800.0 4 NaN 5 2100.0 6 1600.0 dtype: float64 skipna=True(默认)时的总和:8200.0 skipna=False 时的总和:nan
コードの解説:
- 当
skipna=True(デフォルト値)の場合、sum()自動的に NaN 値をスキップし、有効な値のみの合計を計算します。 - 計算過程:1200 + 1500 + 1800 + 2100 + 1600 = 8200
- 当
skipna=Falseの場合、NaN が1つでも存在すると、結果は NaN を返します。これはデータの完全性を明確に把握する必要があるシーンで役立ちます。
例3:min_count パラメータの使用
min_countこのパラメータは計算に必要な有効値の最小数を設定でき、データの十分性を保証する必要がある場合に役立ちます。
実例
import pandas as pd
import numpy as np
# ほとんどが欠損値である Series を作成
sparse_data = pd.Series([np.nan, np.nan, 100, np.nan, np.nan])
print(ほとんど欠損しているデータ:)
print(sparse_data)
print()
# デフォルトは min_count=0 で、有効値が0個以上あれば計算する
result_default = sparse_data.sum()
print(fmin_count=0(デフォルト)のときの結果:{result_default})
# min_count=3 を設定すると、有効値が少なくとも3個ないと計算しない
result_min_count = sparse_data.sum(min_count=3)
print(fmin_count=3 のときの結果:{result_min_count})
# min_count=2 を設定すると、有効値が2個だけでよい
result_min_count_2 = sparse_data.sum(min_count=2)
print(fmin_count=2 のときの結果:{result_min_count_2})
import numpy as np
# ほとんどが欠損値である Series を作成
sparse_data = pd.Series([np.nan, np.nan, 100, np.nan, np.nan])
print(ほとんど欠損しているデータ:)
print(sparse_data)
print()
# デフォルトは min_count=0 で、有効値が0個以上あれば計算する
result_default = sparse_data.sum()
print(fmin_count=0(デフォルト)のときの結果:{result_default})
# min_count=3 を設定すると、有効値が少なくとも3個ないと計算しない
result_min_count = sparse_data.sum(min_count=3)
print(fmin_count=3 のときの結果:{result_min_count})
# min_count=2 を設定すると、有効値が2個だけでよい
result_min_count_2 = sparse_data.sum(min_count=2)
print(fmin_count=2 のときの結果:{result_min_count_2})
実行結果:
大部分缺失的数据: 0 NaN 1 NaN 2 100.0 3 NaN 4 NaN dtype: float64 min_count=0(默认)时的结果:100.0 min_count=3 时的结果:nan min_count=2 时的结果:100.0
コードの解説:
- この Series には有効値が1個(100)しかありません。
min_count=3少なくとも3個の有効値が必要であることを示しますが、実際には1個しかないため、NaN を返します。min_count=2少なくとも2個の有効値が必要であることを示しますが、実際には1個しかなく、条件を満たさないため、NaN を返します。- このパラメータは、データ品質の要求が高い分析シーンで非常に役立ち、有効データが不足している状況を特定するのに役立ちます。
例4:実際のデータ分析における応用
実際のビジネスシーンに合わせて、sum()の典型的な応用を示します。
実例
import pandas as pd
# シミュレーション用の売上データ DataFrame を作成
sales_data = pd.DataFrame({
'月': ['1月', '2月', '3月', '4月', '5月', '6月'],
'華東地区': [12000, 15000, 18000, 16000, 14000, 17000],
'華北地区': [10000, 11000, 13000, 12500, 11500, 14000],
'華南地区': [15000, 17000, 19000, 18000, 16000, 20000]
})
print(上半期の各エリアの売上データ:)
print(sales_data)
print()
# 各エリアの半年間の総売上高を計算
for region in ['華東地区', '華北地区', '華南地区']:
total = sales_data[region].sum()
print(f{region}の半年間の総売上高:{total} 元)
print()
# 全エリアの総売上高を計算
total_all = sales_data[['華東地区', '華北地区', '華南地区']].sum().sum()
print(f全エリアの半年間の総売上高:{total_all} 元)
# シミュレーション用の売上データ DataFrame を作成
sales_data = pd.DataFrame({
'月': ['1月', '2月', '3月', '4月', '5月', '6月'],
'華東地区': [12000, 15000, 18000, 16000, 14000, 17000],
'華北地区': [10000, 11000, 13000, 12500, 11500, 14000],
'華南地区': [15000, 17000, 19000, 18000, 16000, 20000]
})
print(上半期の各エリアの売上データ:)
print(sales_data)
print()
# 各エリアの半年間の総売上高を計算
for region in ['華東地区', '華北地区', '華南地区']:
total = sales_data[region].sum()
print(f{region}の半年間の総売上高:{total} 元)
print()
# 全エリアの総売上高を計算
total_all = sales_data[['華東地区', '華北地区', '華南地区']].sum().sum()
print(f全エリアの半年間の総売上高:{total_all} 元)
実行結果:
上半年各区域销售数据: 月份 华东区 华北区 华南区 0 1月 12000 10000 15000 1 2月 15000 11000 17000 2 3月 18000 13000 19000 3 4月 16000 12500 18000 4 5月 14000 11500 16000 5 6月 17000 14000 20000 华东区半年总销售额:92000 元 华北区半年总销售额:72000 元 华南区半年总销售额:105000 元 所有区域半年总销售额:269000 元
注意事項
sum()デフォルトでは NaN 値をスキップします。これはほとんどの場合、期待される動作です。- 非数値データを含む Series を合計する必要がある場合は、事前にデータクレンジングを行うか、
numeric_only=Trueパラメータを使用します。 min_countパラメータはデータ検証や品質チェックで非常に役立ち、有効データが不足している状況を特定するのに役立ちます。- 大規模なデータセットの場合、
sum()のパフォーマンスは通常非常に優れており、内部で NumPy のベクトル化演算を使用しているためです。
まとめ
Series.sum()Pandas の中でも最も基本的で最もよく使われる統計関数の一つです。主な特徴は次のとおりです。
- シンプルで使いやすく、ドット演算子で直接呼び出せます。
- 欠損値の処理をサポートし、
skipnaパラメータで制御します。 - また、
min_countパラメータを使用して有効値の最低要件を設定できます。 - 内部で NumPy の最適化された実装を使用しており、計算効率が高いです。
実際のデータ分析では、sum()通常は他の集約関数(例えばmean()、count()など)と組み合わせて使用し、包括的なデータ統計分析を行います。
Pandas よく使う関数