Dask get_dummies不会转变变量

2024-10-01 11:29:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过dask使用get_dummies,但它不会转换我的变量,也不会出错:

>>> import dask.dataframe as dd
>>> import pandas as pd
>>> df_d = dd.read_csv('/datasets/dask_example/dask_get_dummies_example.csv')
>>> df_d.head()
   uid gender
0    1      M
1    2    NaN
2    3    NaN
3    4      F
4    5    NaN
>>> daskDataCategorical = df_d[['gender']]
>>> daskDataDummies = dd.get_dummies(daskDataCategorical) 
>>> daskDataDummies.head()
  gender
0      M
1    NaN
2    NaN
3      F
4    NaN
>>> daskDataDummies.compute() 
  gender
0      M
1    NaN
2    NaN
3      F
4    NaN
5      F
6      M
7      F
8      M
9      F
>>>

pandas等效(在新终端中运行以防万一)是:

^{pr2}$

我对this resolved issue的理解是它应该可以工作,但是它是否需要先被拉入{}?如果是这样的话,我使用它的目的就落空了,因为我的数据集(~500GB)无法放入pandas数据帧中。我误读了吗?蒂娅。在


Tags: csvimportpandasdfgetexampleasnan
1条回答
网友
1楼 · 发布于 2024-10-01 11:29:10

在尝试使用get_dummies之前,您需要将字符串列转换为CategoricalThis pull request添加了一个dask.dataframe.get_dummies,如果您试图传递object(string)列,这将导致错误,这与pd.get_dummies不同。在

要获得Categorical,您可以在dd.get_dummies之前使用.categorize,或者使用pandas>;=0.19,在CSV中使用read和dtype关键字,如下所示

df_d = dd.read_csv('/datasets/dask_example/dask_get_dummies_example.csv', dtype={"gender": "category"})

下面是一个小例子:

^{pr2}$

Dask需要get_dummies的分类,因为它需要知道它需要创建的所有新的虚拟变量。熊猫不必担心这些,因为你所有的数据都已经在内存中了。在

相关问题 更多 >