77348


# 問題

以下のようなデータフレームがあります。

[![画像の説明をここに入力](https://i.stack.imgur.com/2jn89.jpg)](https://i.stack.imgur.com/2jn89.jpg)

都道府県名(47都道府県)と市区町村名(618種類)、面積がカラムになっております。

このDataFrameに対して、

都道府県名が`北海道`の行に対して、市区町村ごとに面積の平均を求めたいです。

そこで以下のようなコードを実行したところ

[code]

    # 都道府県ごとに面積当たりの価格の平均が高いところを調べたい
    df[df["都道府県名"]=="北海道"].groupby('市区町村名').mean()
    
[/code]

以下のような結果が出力されます。

[![画像の説明をここに入力](https://i.stack.imgur.com/oD2Ut.jpg)](https://i.stack.imgur.com/oD2Ut.jpg)

北海道だけ抽出したのにも関わらず、なぜかほかの県の市区町村が残っており、平均値が計算されています。

この現象の原因がわからずこまっています。  
わかる方ぜひとも教えてください。

追記  
SwarmPlotを試してみても以下のようにxが各都道府県になってしまいます。  
都道府県名には北海道のみなのですが、なぜでしょうか

[![画像の説明をここに入力](https://i.stack.imgur.com/xuaFw.jpg)](https://i.stack.imgur.com/xuaFw.jpg)

追記2  
北海道に対応する市区町村名の数を数えたところ、やはり正しいようです。  
そして、categoryという欄になぜかすべての市区町村名が載っています。

[![画像の説明をここに入力](https://i.stack.imgur.com/xUkuJ.jpg)](https://i.stack.imgur.com/xUkuJ.jpg)


CC BY-SA 4.0
2021-06-04T07:54:08.930
77334
2021-06-05T03:55:20.310
2021-06-04T08:50:05.830
44467
44467
question
python pandas
Pandasのgroupbyがうまく機能していないので教えていただきたいです。


コメントにも書きましたが、以下の承認された回答にある通りです。

[Pandas groupby with categories with redundant
nan](https://stackoverflow.com/a/50579578)

> Since Pandas 0.23.0, the groupby method can now take a parameter observed
> which fixes this issue if it is set to True (False by default). Below is the
> exact same code as in the question with just **observed=True** added:

[pandas.DataFrame.groupby — pandas 1.2.4
documentation](https://pandas.pydata.org/pandas-
docs/stable/reference/api/pandas.DataFrame.groupby.html)

> **observed: bool, default False**
>
> This only applies if any of the groupers are Categoricals. If True: only
> show observed values for categorical groupers. **If False: show all values
> for categorical groupers**.


CC BY-SA 4.0
2021-06-05T03:49:04.647
77348
2021-06-05T03:55:20.310
2021-06-05T03:55:20.310
77334
answer