pandas 列最好有对象或字符串 dtype?

A pandas column better to have object or string dtype?

提问人:DazzRick 提问时间:8/10/2023 最后编辑:wjandreaDazzRick 更新时间:8/10/2023 访问量:75

问:

当我查看 pandas 列类型时,当我在里面放置字符串时,返回的 dtype 是 .我的数据帧将是只读的,这意味着我不介意类型是否为 .我在这个问题上看到,当 numpy 数组的类型是 object 时,它会失去速度......objects(size)

这让我产生了怀疑:

  • 当 pandas 系列的 dtype 为 object 时,我会失去速度吗?
  • 如果我输了,我该如何避免这种情况?
  • 有没有办法使系列具有预定的大小,例如?s256
Python Pandas 性能 系列 dtype

评论

2赞 wjandrea 8/10/2023
您阅读了用户指南的这一部分吗?文本数据类型
0赞 DazzRick 8/10/2023
是的,我想我会用到,但是在指南中说:“目前,对象dtype数组的字符串和数组的性能。StringArray 大致相同。StringDtype"
0赞 Jérôme Richard 8/10/2023
如果你能避免像瘟疫这样的字符串。它们本身就很慢(优化字符串操作很痛苦,尤其是 unicode 操作)。如果唯一字符串的数量很少,请考虑使用数据类型(内部使用整数)。如果你知道你的字符串很小,那么使用 Numpy 作弊可能会有所帮助。对于大型可变大小的字符串,基本上没有太多事情可做。Numpy 类型将产生巨大的开销(每个字符串将占用 256 个字节的内存,即使它们实际上更小)。categorys256
1赞 Jérôme Richard 8/10/2023
根据 Pandas 代码,它看起来像是一个同时支持 和 的数据类型。前者目前与 -dtyped 数组一样高效,但将来会进行优化。后者当然更有效(我猜尤其是对于短字符串)。StringDtypeStringArrayArrowStringArrayobject
0赞 DazzRick 8/10/2023
@JérômeRichard 如果我没有办法,除非使用字符串,那最好吗?或者是 ?categoryArrowStringArray

答: 暂无答案