Python Pandas – 列の合計値に基づいてDataFrameをフィルタリングする方法
列の合計値に基づいてDataFrameをフィルタリングするには、loc()メソッドを使用します。この記事では、各学生の点数を合計し、合計点が400点(80%)を超える学生の列のみを抽出する例を紹介します。
DataFrameの作成
まず、学生の成績データを含むDataFrameを作成します。ここでは3人の学生、つまり3つの列の点数データを用意します。
import pandas as pd
dataFrame = pd.DataFrame({
'Jacob_Marks': [95, 90, 75, 85, 88],
'Ted_Marks': [60, 50, 65, 85, 70],
'Jamie_Marks': [77, 76, 65, 45, 50]
})
列の合計に基づくフィルタリング
次に、合計点が400を超える学生の列だけを取得します。sum(axis=0)で各列(各学生)の合計点を計算し、その結果を条件としてloc()に渡します。
dataFrame = dataFrame.loc[:, dataFrame.sum(axis=0) > 400]
コードのポイント
- dataFrame.sum(axis=0): axis=0を指定すると、列ごと(縦方向)に合計が計算されます。
- > 400: 各列の合計が400より大きいかどうかを判定するブール値(True/False)のマスクを生成します。
- loc[:, 条件]: マスクがTrueとなる列だけを、すべての行に対して抽出します。
完全なコード例
import pandas as pd
# 3列のDataFrameを作成
dataFrame = pd.DataFrame({
'Jacob_Marks': [95, 90, 75, 85, 88],
'Ted_Marks': [60, 50, 65, 85, 70],
'Jamie_Marks': [77, 76, 65, 45, 50]
})
print("Dataframe...\n", dataFrame)
# 列の合計に基づいてフィルタリング
# 合計点が400を超える学生を取得
dataFrame = dataFrame.loc[:, dataFrame.sum(axis=0) > 400]
# 更新後のDataFrameを表示
print("Updated Dataframe...\n", dataFrame)
出力結果
上記のコードを実行すると、次のような出力が得られます。
Dataframe...
Jacob_Marks Jamie_Marks Ted_Marks
0 95 77 60
1 90 76 50
2 75 65 65
3 85 45 85
4 88 50 70
Updated Dataframe...
Jacob_Marks
0 95
1 90
2 75
3 85
4 88
結果を見ると、合計点が400を超えているのはJacobのみであることがわかります。Tedの合計は330点、Jamieの合計は313点であり、いずれも条件を満たさないため除外されました。このように、sum(axis=0)とloc()を組み合わせることで、列単位の集計条件に応じた柔軟なデータ抽出が簡単に行えます。
-
Python・PandasのDataFrameから複数の列を選択する方法
Pandasでは、CSVファイルから読み込んだDataFrameに対して、二重の角括弧 [[ ]] を使うことで、複数の列を簡単に選択できます。本記事では、具体的な手順とサンプルコードを交えて解説します。 前提:サンプルデータについて ここでは、Microsoft Excelで開いた以下のような内容のCSVファイル(SalesData.csv)を例にします。このデータには「Car(車名)」「Reg_Price(登録価格)」「Units(台数)」の3つの列が含まれています。 ステップ1:CSVファイルをPandas DataFrameに読み込む まず、read_csv() メソッドを使って、C
-
【Python】Pandas DataFrameからnull(欠損値)行を削除する方法|dropna()の使い方
PandasのDataFrameからnull(NaN)行を削除するには、dropna()メソッドを使用します。この記事では、NaNを含むCSVファイルを読み込み、dropna()で欠損値を含む行を取り除くまでの手順を、サンプルコードと実行結果とともにわかりやすく解説します。前提:NaNを含むCSVファイル今回の例では、一部にNaN(null値)が含まれる以下のようなCSVファイル(CarRecords.csv)を使用します。手順1:read_csv()でCSVファイルを読み込むまずpandasをインポートし、read_csv()を使ってCSVファイルを読み込みます。ここではデスクトップ上に保存