
400
12
章
pandas
:応用編
In [40]: my_cats_2.as_ordered()
Out[40]:
[foo, bar, baz, foo, foo, bar]
Categories (3, object): [foo < bar < baz]
最後に加えておくと、上の例では文字列データを例とした説明しかしていませんが、カテゴリ型デー
タは文字列である必要はありません。カテゴリ型の配列には、不変(
immutable
)な型であればどのよ
うな値も含めることができます。
12.1.3
カテゴリを用いた計算
pandas
の
Categorical
を使ってデータを処理する場合、通常は、エンコードされていない場合(例え
ば文字列の配列の場合)と同様の動作になります。しかし、
pandas
の一部の機能(例えば
groupby
メソッ
ド)では、カテゴリ型を用いた方が処理速度が上がります。また、
ordered
フラグを活用できる関数も
いくつかあります
。
乱数データを作成し、
pandas.qcut
関数を使ってビンに分割することを考えてみましょう。この分割
結果は
pandas.Categorical
インスタンスとして戻されます。この本では前に「7章 データのクリーニ
ングと前処理」でも
pandas.cut
を使っていますが、そのときはカテゴリ変数がどのようなものなのかの
詳細はごまかしていました。
In [41]: np.random.seed(12345)
In [42]: draws = np.random.randn(1000) ...