93185


**〇実行環境**  
Windows 10  
Python 3.X  
pandas

こちらのリンクでの質問内容の続きになります。  
[pandasでの特定の条件下でのデータ取得ができない。](https://ja.stackoverflow.com/questions/93032/pandas%E3%81%A7%E3%81%AE%E7%89%B9%E5%AE%9A%E3%81%AE%E6%9D%A1%E4%BB%B6%E4%B8%8B%E3%81%A7%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E5%8F%96%E5%BE%97%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84)  
**〇リンク先の質問**  
上記のリンクではpandasを使用して各idがカラムのどの「分類」に属しているかの質問をし、groupbyを使用して、各idごとの分類と数値を取得することができました。

〇質問内容  
上記の質問から次のようなdfxを取得することができました。

〇dfx(区切りが見やすいよう、csv形式にしています。）

[code]

    id,数値,分類
    aaa,3141,type2
    bbb,5926,type1
    ccc,5358,type3
    ddd,9793,type1
    eee,2384,type3
    fff,6264,type2
    ggg,3383,type2
    hhh,2795,type1
    iii, 288,type3
    jjj,4197,type1
    kkk,1693,type3
    lll,9937,type2
    mmm,5105,type2
    nnn,8209,type1
    
[/code]

このデータからカラム「分類」の三つの要素ごとに最大値、最小値、平均値を求めたいと思っております。  
下記のソースで最大値と最小値は求めることができたのですが、平均値だけ以上に大きく明らかにおかしい数値が出てしまいました。

最小値、最大値は求められていたのでデータ値に誤りがあるとは思えないのですが、  
何かおかしい点はありますでしょうか？

[code]

    #平均値を求める
    dfx_mean = dfx.groupby('分類').agg(['mean'])
    
    
[/code]

〇出力された値  
'''  
mean  
分類  
type1 8886377.5  
type2 2.76252E+86  
type3 1.85807E+15  
'''


CC BY-SA 4.0
2023-01-04T03:12:28.377
93175
2023-01-05T09:07:38.553
47546
question
python pandas
pandas .agg(['mean'])で正確な値を求めることができない。


`agg(['mean'])` の結果だけが可怪しいのであれば, その処理を(何らかの要因で)書き換えてしまった可能性があります。  
`dfx`の内容を(例えば) CSVなどの形式で保存し, 別環境で読み込み `agg(['mean'])` が正しい値で得られるならば, 原因は
「処理が置き換わった」 ~~ことでしょう~~ 可能性があります。  
(別環境でも失敗するのであれば手順を質問に追記してみてください)

* * *

#### 追記

原因は, 数値型でなかった ことのようですが  
`agg` に与える関数名には以下のようなものもあります。参考に。

数値項目でなければエラーになるパターン

[code]

    >>> dfx.groupby('分類').agg({'数値': 'ohlc'})   # '数値'項目だけ対象にするので辞書形式で
    
            数値
            open    high    low     close
    分類              
    type1   5926    9793    2795    8209
    type2   3141    9937    3141    5105
    type3   5358    5358    288     1693
    
[/code]

あとほかに `'dtypes'` も指定可能 (リスト指定ではなく 1項目で指定)

[code]

    df.groupby('分類').agg('dtypes')
    
[/code]


CC BY-SA 4.0
2023-01-04T12:27:15.600
93185
2023-01-05T09:07:38.553
2023-01-05T09:07:38.553
43025
43025
93175
answer