49455


プログラミング初心者です。  
仕事でデータサイエンスを使おうということで、下記のリンクのPython Data Science
Handbookの例題を基に勉強しているのですが、例題通りの出力ができずに困っております。  
リンク：<https://jakevdp.github.io/PythonDataScienceHandbook/03.09-pivot-
tables.html>

ピボットテーブルの作成を行い、性別・年齢・クラスごとにタイタニックでの生存者を計算するという内容です。  
以下コード：

[code]

    import pandas as pd
    import seaborn as sns
    
    titanic = sns.load_dataset('titanic')
    age = pd.cut(titanic['age'], [0,18,80])
    titanic.pivot_table('survived', ['sex', age], 'class')
    
[/code]

これで出力が以下のようになります：

[code]

    class                   First       Second      Third
    sex      age                                   
    female   (18, 80]       0.909091    1.000000    0.511628
                  NaN       0.972973    0.900000    0.423729
    male     (18, 80]       0.800000    0.600000    0.215686
                  NaN       0.375000    0.071429    0.133663
    
[/code]

本来ならば、分類は0～18歳、18～80歳になるはずなのですが、18～80歳とNaNとなってしまいます。また、First, Second, Third
Classの順序は例題通りになるのに、年齢の並び順が入れ替わっており、正しく表示されません。  
以下はリンクから参照した正しい表示結果です。

[code]

    class                   First       Second      Third
    sex      age                                   
    female   (0, 18]        0.909091    1.000000    0.511628
             (18, 80]       0.972973    0.900000    0.423729
    male     (0, 18]        0.800000    0.600000    0.215686
             (18, 80]       0.375000    0.071429    0.133663
    
[/code]

このような結果になるのには仕様の変化が関係しているのでしょうか？  
そうであれば、どのようにコードを直せば正しく出力できるのでしょうか？  
Pandasのcutに関するドキュメントも読んでみましたが、特に触れておらずわかりませんでした。

使用しているIpythonのバージョンは6.4.0、Pandasは0.23.0です。  
以上よろしくお願い致します。


CC BY-SA 4.0
2018-10-19T09:12:34.637
49453
2018-10-19T10:07:12.813
2018-10-19T09:55:17.983
19110
30590
question
python pandas
pandasのcut()の分類がうまくいかない


Pandas 0.23.0 のバグです。0.23.1 で修正されており、私の手元でも 0.23.1 では正しく動作しました。Pandas
のバージョンアップを検討してください。

> v0.23.1
>
>   * Regression in [pivot_table()](http://pandas.pydata.org/pandas-
> docs/stable/generated/pandas.pivot_table.html#pandas.pivot_table) where an
> ordered Categorical with missing values for the pivot’s index would give a
> mis-aligned result ([GH21133](https://github.com/pandas-
> dev/pandas/issues/21133))
>

([Pandas の変更履歴](http://pandas.pydata.org/pandas-
docs/stable/whatsnew.html#v0-23-1)から抜粋しました。)


CC BY-SA 4.0
2018-10-19T10:07:12.813
49455
2018-10-19T10:07:12.813
19110
49453
answer