以下は、groupby グループ化後に指定された位置レコードを抽出するための Python メソッドです。非常に参考になるので、皆様のお役に立てれば幸いです。ぜひ一緒に見てください
データ分析とデータモデリングを実行するとき、最初に行う必要があるのは、データを処理して必要な情報を抽出することです。データ処理をより便利にするための groupby の使用法をいくつか紹介します。
groupby を使用して情報を抽出すると、グループ化されたサンプルの統計 (最大値、最小値、変数など) が見つかることがよくあります。グループ化されたサンプルの 2 番目のレコードと最後から 3 番目のレコードを取得したい場合、どうすればよいでしょうか?最初と最後をグループ化した後、最初と最後のサンプルを抽出できます。しかし、指定した場所でサンプルを採取したい場合、既成の機能はありません。自分たちで書く必要があります。以下に上記の機能を実装する方法を紹介します。
1) データの紹介
action テーブルには userid、actionType、actionTime の 3 つの列があり、それぞれユーザー ID、ユーザーの行動タイプ、行動の発生時間を表します。具体的な形式は以下の図に示すとおりです。
2) グループ化操作
a = action.groupby('userid') b = action.groupby('userid')['actionTime'] type(a) type(b)
グループ化後、a と b のデータ型が DataFrameGroupBy と SeriesGroupBy
であることがわかります。3) カウント操作
①異なるユーザーの2番目/最後から2番目の操作時間
action.groupby('userid')['actionTime'].apply(lambda i:i.iloc[1] if len(i)>1 else np.nan) action.groupby('userid')['actionTime'].apply(lambda i:i.iloc[-2] if len(i)>1 else np.nan)
②異なるユーザーの特定の行動の2番目/最後から2番目の操作時間
action[action['actionType']==2].groupby('userid')['actionTime'].apply(lambda i:i.iloc[1] if len(i)>1 else np.nan) action[action['actionType']==2].groupby('userid')['actionTime'].apply(lambda i:i.iloc[-2] if len(i)>1 else np.nan)
追記: ユーザーによってはレコードが 1 つしかない場合があるため、直接取得するのは間違っている可能性があるため、最初に判断するために if を使用します。
このようにして、グループ化されたデータ内の任意の位置でサンプルを抽出できます。
関連する推奨事項: groupby グループ内の最大値を持つ行を取得する
以上がPython は groupby グループ化後に指定された位置レコード メソッドを抽出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。