pandas 为什么要用 Category 类型 而不是 Str?

category是一种pandas的类型pd.Series(["a", "b", "c", "a"], dtype="category")pd.Series(["a", "b", "c", "a"], dtype="str")之前自己的代码都是用str,或者直接就是python自己的object类型,那么我们什么时候需要用category而不是str呢?当 这一列 的值的种类(numbe...
摘要由CSDN通过智能技术生成

category是一种pandas的类型

pd.Series(["a", "b", "c", "a"], dtype="category")
pd.Series(["a", "b", "c", "a"], dtype="str")

之前自己的代码都是用str,或者直接就是python自己的object类型,那么我们什么时候需要用category而不是str呢?

当 这一列 的值的种类(number of unique)非常少的时候,当需要给这一列的值表示某一个顺序的时候,用category。

  1. 在做groupby操作的时候可以提速
  2. 可以节省内存
  3. 支持order

为什么可以节省内存和提速groupby呢?
猜测是 如果你表明了category,它存储的其实是index,而不是每个值,进行groupby的时候不需要先进行sort操作,所以可以提速和节省内存,这也是它建议你的值的种类比较少的时候用。

官方文档:

This is an introduction to pandas categorical data type, including a short comparison with R’s factor.

Categoricals are a pandas data type corresponding to categoric
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值