chr*_*ock 11
当您希望利用大量重复时使用类别.
例如,假设我想要一个大型交易表的每个交易所的聚合大小.使用默认值object
是完全合理的:
In [6]: %timeit trades.groupby('exch')['size'].sum()
1000 loops, best of 3: 1.25 ms per loop
Run Code Online (Sandbox Code Playgroud)
但由于可能的交换列表非常小,而且因为有很多重复,我可以通过使用category
:
In [7]: trades['exch'] = trades['exch'].astype('category')
In [8]: %timeit trades.groupby('exch')['size'].sum()
1000 loops, best of 3: 702 µs per loop
Run Code Online (Sandbox Code Playgroud)
请注意,类别实际上是动态枚举的一种形式.如果可能值的范围是固定且有限的,则它们最有用.