ホームページ >バックエンド開発 >Python チュートリアル >Python は groupby グループ化後に指定された位置レコード メソッドを抽出します

Python は groupby グループ化後に指定された位置レコード メソッドを抽出します

不言
不言オリジナル
2018-04-20 13:45:304911ブラウズ

以下は、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 グループ内の最大値を持つ行を取得する

pandas メソッド


以上がPython は groupby グループ化後に指定された位置レコード メソッドを抽出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。