我有一个大型数据集,需要读入 pandas 数据框。
它包含很多由一些相当长的字符串组成的分类数据。
尝试使用 pandas read_sql_query 方法时,我似乎无法指定应将哪些列视为分类数据。
这意味着我遇到了内存问题。
我有 R 的背景,我可以在其中指定诸如字符串作为因子之类的东西。这意味着您可以拥有内存占用较小的长字符串,因为它们在 R 中被索引为整数。我不能在 Python/Pandas 中做同样的事情吗?
我想在从数据库中读取数据时这样做!不之后。在数据框中将字符串转换为类别很容易,但这不是我要找的。p>
我知道我可以简单地对数据库中的数据进行编码,但我想避免这种情况。
最佳答案
我担心目前在数据库端编码(这可以使用 JOIN 和映射表来完成)是唯一可行的选择。
有一些类似的功能请求:
- https://github.com/pandas-dev/pandas/issues/17862
- https://github.com/pandas-dev/pandas/issues/13049
- https://github.com/pandas-dev/pandas/issues/6798
- https://github.com/pandas-dev/pandas/issues/17560
以 block 的形式读取数据并将每个 block 转换为 category
dtype 可能会很棘手,因为可能需要从所有 block 中加入类别。
关于Python pandas 字符串处理来自 SQL 数据库的分类数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47430996/