0

既知のカテゴリカル dtype を持つ Dask.Series があります。シリーズ全体を計算することなく、関連するマッピングを示す小さなデータフレームを作成したいと考えています。どうすればこれを達成できますか?

import pandas as pd
import dask.dataframe as dd
from dask_ml.preprocessing import Categorizer

df = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
df = dd.from_pandas(df, npartitions = 2)
df = Categorizer().fit_transform(df)

test = df['species']

上記のコードは、dask にカテゴリ シリーズを作成します。を使用test.cat.codesすると、カテゴリを次のようなコードに変換できます。


> test.compute()
Out[5]: 
0         setosa
1         setosa
2         setosa
3         setosa
4         setosa
   
145    virginica
146    virginica
147    virginica
148    virginica
149    virginica
Name: species, Length: 150, dtype: category
Categories (3, object): [setosa, versicolor, virginica]

> test.cat.codes.compute()
Out[6]: 
0      0
1      0
2      0
3      0
4      0
      ..
145    2
146    2
147    2
148    2
149    2
Length: 150, dtype: int8

望ましい結果は、最後まで計算コマンドを使用せずに、以下に示すようにカテゴリからコードへのマッピングを取得することです。

望ましい出力:

Category      Code
setosa        0
versicolor    1
virginica     2

私は多くのことを試しましたが、それらはすべて、シリーズを pandas シリーズまたはデータフレームに変換する必要があり、dask を使用する目的を無効にします。再パーティション化せずにこれを行うのに役立つものはdaskで見つかりませんでした。これはやりたくないことです。また、この例ではセットアップ目的で DataFrame にアクセスできますが、実際には元のデータフレームにアクセスできないため、一連の「テスト」から開始する必要があることに注意してください。

4

1 に答える 1