[解決済み] pandasのgroupbyに関数を適用する
2022-03-02 23:09:57
質問
というカラムを持つpandasのデータフレームがあります。
my_labels
という文字列が含まれています。
'A', 'B', 'C', 'D', 'E'
. これらの文字列のそれぞれの出現回数をカウントし、そのカウント数をすべてのカウントの合計で割りたいと思います。これをPandasでやろうとすると、以下のようになります。
func = lambda x: x.size() / x.sum()
data = frame.groupby('my_labels').apply(func)
このコードでは、「DataFrameオブジェクトに'size'という属性がありません」というエラーが発生します。Pandasでこれを計算する関数を適用するにはどうしたらよいでしょうか?
どのように解決するのですか?
apply
に適用する関数を受け取ります。
各
の値であり、シリーズではなく、kwargs を受け入れる。
そのため、値には
.size()
メソッドを使用します。
おそらく、これならうまくいくでしょう。
from pandas import *
d = {"my_label": Series(['A','B','A','C','D','D','E'])}
df = DataFrame(d)
def as_perc(value, total):
return value/float(total)
def get_count(values):
return len(values)
grouped_count = df.groupby("my_label").my_label.agg(get_count)
data = grouped_count.apply(as_perc, total=df.my_label.count())
は
.agg()
メソッドに適用される関数を受け取ります。
すべて
の値は
groupbyオブジェクト
.
関連
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] Pandasのカラム名のリネーム
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] オブジェクトの属性に基づいてオブジェクトのリストを並べ替えるには?
-
[解決済み] pandas DataFrameの特定のセルに対して、インデックスを使用して値を設定する
-
[解決済み] pandas GroupByを使ってグループごとの統計情報(カウント、平均値など)を取得する?
-
[解決済み] PandasのGroupByの出力をSeriesからDataFrameに変換する
-
[解決済み】Pandas DataFrameのカラムヘッダからリストを取得する。
-
[解決済み】pandasでカラムの種類を変更する
-
[解決済み】Pandas DataframeのカラムでNaN値をゼロに置き換えるには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピロウズ画像色処理の具体的な活用方法
-
Python百行で韓服サークルの画像クロールを実現する
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
Pythonショートビデオクローラーチュートリアル
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?