セクション 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つを試してチャットを始めてください