セクション 4. 章 3
single
複雑なグルーピング
メニューを表示するにはスワイプしてください
グループ化の際に、組み込みの pandas 関数(例えば .mean() や .min())だけでは満足できない場合があります。
'Length' 列を見てください。ここにはフライトの所要時間(分)が記録されています。同じ 'Flight' 列の値、次に 'Airline' 列の値ごとに、最大時間(時間単位)を計算したいとします。そのためには、各グループキーごとに 'Length' 列の最大値を計算し、それを 60 で割ります。以下の例と説明を参照してください。
1234import pandas as pd data = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/4bf24830-59ba-4418-969b-aaf8117d522e/plane', index_col = 0) data_flights = data[['Flight', 'Airline', 'Length']].groupby(['Flight', 'Airline']).apply(lambda x: x['Length'].max()/60) print(data_flights.head(10))
解説:
前の章の例を少し複雑にしましたが、データのグループ化については同じです。ここでは .apply() メソッドに注目します。
.apply(lambda x: x['Length'].max()/60)
.apply()- 必要な列に特定の関数を適用するためのメソッド。lambda関数では、xが引数であり、x['Length'].max()/60が式です。この関数は各グループキーごとに最大値を求め、その集計値を60で割ります。
タスク
スワイプしてコーディングを開始
ここでの課題は、空港、航空会社、曜日を考慮してフライト時間を分析することです。
データをグループ化し、出発空港、航空会社、曜日の各ユニークな組み合わせごとに、最小の合計フライト時間('Length'と'Time'の合計)を求めます。
次のアルゴリズムに従ってください:
- カラムリスト
'AirportFrom','Airline','DayOfWeek','Time','Length'(この順番)を変数columnsに格納します。 - 角括弧記法(
data)を使って、data[columns]からこれらのカラムを抽出します。 - データセットを
'AirportFrom','Airline','DayOfWeek'(この順番)でグループ化します。 .groupby()メソッド内で.apply()関数を使い、各グループごとに'Length'と'Time'カラムの合計を計算し、その合計の最小値を求めます。- 結果を
data_flightsという変数に代入します。 - 得られたSeriesの最初の10行を
.head(10)で出力します。
解答
すべて明確でしたか?
フィードバックありがとうございます!
セクション 4. 章 3
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください