21.07.19データフレームグループby()



データフレーム?


カラム形式で作成されたシリーズのデータは、テーブルの構造の形式として作成されます.
ディレクトリ、リスト、凡例など、さまざまなデータ型が用意されています.

グループ演算

  • 複雑なデータをある種の標準に従ってパケット処理
  • .
  • 組の演算は、データの統計、戻り、フィルタリングを効率的に行うことができる
  • 使い方:groupby()メソッド
  • を使用

    groupby


    1つのカラムに基づいてデータを統計および要約できます.
    使用方法は次のとおりです.
    DataFrame.groupby('columns')
    タイタニック号というデータフレームの中で
    年齢別グループで結果を表示
    titanic.groupby('age')
    タイタニック号というデータフレームの中で
    ルームレベル別データの表示
    titanic.groupby(coulumns)

    グループ演算


    1.平均/平均()の使用


    タイタニック号のデータフレームの中で各グループの列の平均値を求めます.
    まず、classパケットデータフレーム()に基づいて
    grouped = df.groupby(['class])
    print(grouped) 
    
    #class는 예약어이기 때문에 level등으로 컬럼 이름을 바꿔서 사용하는 것을 추천합니다.
    
    classベースgroupby()
    平均値
    average = grouped.mean()
    average

    2.使用統計/説明()

  • に変換表示するオブジェクトリスト
  • describe()はリスト形式でなければなりません.
    したがって、まずリスト別にグループ化されたオブジェクトをリストにグループ化します.
    list(grouped)
    2.describeの使用
  • インデックス位置ビュー
  • リスト内のグループを
    インデックスによる場所の指定
    li = list(grouped) 
    li[2][1].describe()
    
  • インデックスを返すとloc
  • が使用されます.
    a = grouped.groups['Third]
    group3 = df.loc[a]
    group3.describe()
    
    
  • getグループ()
  • を使用
    group3 = grouped.get_group('Third')
    group3.describe()
    
  • description用の2つ以上の列を指定
    grouped_two = df.groupby(['age','class'])
    grouped_two.describe()
    
    for key, group in grouped_two:
    	print('*key:', key)
        print('*value :', group) 
        print(grouped_two.describe) 
    
    

    指定した行の値のみ抽出


    -Thirdの女性情報のみ表示
    group3 = grouped_two.get_group(('Third', 'female'))
    group3
    またgroupby()も使用できます
    実行可能な演算について説明しましょう.

    適用→結合


    データ集約(agg集約)
  • aggはgroupby()オブジェクトを集約演算
  • することができる.
  • 使用法:オブジェクトをグループ化します.Agg([関数1,関数2...])
  • 遷移(transform)

  • 元のインデックスとカラム名に基づく計算結果
  • を表示
  • 使用法:オブジェクトをグループ化します.Transform(マッピング関数)
  • ろ過

  • フィルタは、条件を満たす値
  • のみを保持する.
  • 使用法:オブジェクトをグループ化します.filter(条件関数式)
  • アプリケーションは値に個別に適用されます

  • 版dasの各値を特定の関数として1:1マッチング
  • を行う.
  • は、ユーザが必要とする演算の大部分をグループオブジェクト(すべての値が適用される)
  • に適用する.
  • 使用法:オブジェクトをグループ化します.apply(一致する関数)
  • に質問


    aggを使用して、最大値から最小値を減算する関数を作成します。

    def z(x):
    	return x.max - x.min
        
     y = grouped.agg(z)
     display(y.head())
     

    問題のフィルタリング


    200以上のデータがある場合は、グループのみをフィルタしてデータフレームに戻し、group filter名として保存し、最初の5行を出力します。


    条件をグループに適用するfilter関数を使用します.
    使用法:groupオブジェクト.ろ過器(条件関数式)
    
    
    grouped = df.groupby('class')
    x = grouped.filter(lambda x: x >= 200) 
    print(x.head())