get_dummies kategorik bir değişkeni kukla değişkenlere dönüştürmeyi sağlar. Kategorik değişkeni yeniden yapılandırmanın önemsiz olmasının yanı sıra, bunu yapmanın tercih edilen/hızlı bir yolu var mıdır?pandalarda kuklalardan kategorik bir değişkenin yeniden yapılandırılması
9
A
cevap
6
In [46]: s = Series(list('aaabbbccddefgh')).astype('category')
In [47]: s
Out[47]:
0 a
1 a
2 a
3 b
4 b
5 b
6 c
7 c
8 d
9 d
10 e
11 f
12 g
13 h
dtype: category
Categories (8, object): [a < b < c < d < e < f < g < h]
In [48]: df = pd.get_dummies(s)
In [49]: df
Out[49]:
a b c d e f g h
0 1 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0
2 1 0 0 0 0 0 0 0
3 0 1 0 0 0 0 0 0
4 0 1 0 0 0 0 0 0
5 0 1 0 0 0 0 0 0
6 0 0 1 0 0 0 0 0
7 0 0 1 0 0 0 0 0
8 0 0 0 1 0 0 0 0
9 0 0 0 1 0 0 0 0
10 0 0 0 0 1 0 0 0
11 0 0 0 0 0 1 0 0
12 0 0 0 0 0 0 1 0
13 0 0 0 0 0 0 0 1
In [50]: x = df.stack()
# I don't think you actually need to specify ALL of the categories here, as by definition
# they are in the dummy matrix to start (and hence the column index)
In [51]: Series(pd.Categorical(x[x!=0].index.get_level_values(1)))
Out[51]:
0 a
1 a
2 a
3 b
4 b
5 b
6 c
7 c
8 d
9 d
10 e
11 f
12 g
13 h
Name: level_1, dtype: category
Categories (8, object): [a < b < c < d < e < f < g < h]
Bu yüzden, doğal bir işlem gibi göründüğü için bunu yapmak için bir işleve ihtiyacımız var. Belki get_categories()
, Bir kaç yıl oldu, bu nedenle bu soru başlangıçta sorulduğunda bu iyi geri pandas
araç setinde olmamış olabilir, ama bu yaklaşım bana biraz daha kolay görünüyor here
6
bakın. idxmax
, en büyük öğeye karşılık gelen dizini (yani, 1
olanı) döndürecektir. axis=1
yapıyoruz, çünkü 1
'un oluştuğu sütun adını istiyoruz.
DÜZENLEME: Sadece bir dize yerine kategorik yapmama zahmet etmedim, ancak bunu @ jeff pd.Categorical
(ve istenirse pd.Series
) ile sarmalayarak yaptığınız gibi yapabilirsiniz.
In [1]: import pandas as pd
In [2]: s = pd.Series(['a', 'b', 'a', 'c'])
In [3]: s
Out[3]:
0 a
1 b
2 a
3 c
dtype: object
In [4]: dummies = pd.get_dummies(s)
In [5]: dummies
Out[5]:
a b c
0 1 0 0
1 0 1 0
2 1 0 0
3 0 0 1
In [6]: s2 = dummies.idxmax(axis=1)
In [7]: s2
Out[7]:
0 a
1 b
2 a
3 c
dtype: object
In [8]: (s2 == s).all()
Out[8]: True
İlgili konular
- 1. Pandalarda yeniden adlandırma
- 2. Java komut satırı argümanlarının yeniden yapılandırılması
- 3. Pandalarda bir dizi değer nasıl gruplanır?
- 4. Pandalarda bir diziyi düzleştirme
- 5. Nasıl yeniden yazılır XML in yeniden yapılandırılması Yeniden Yapılandırılmış Test/Sphinx
- 6. ikili tepki değişkenlere birden kategorik değişkenler yeniden şekillendirme
- 7. Quartz.net ile ADOJobStore yapılandırılması
- 8. Toplayıcıda cpp kaynaklarının yapılandırılması
- 9. Dinlenmeyen yolların yapılandırılması
- 10. Pandalarda bir .rds dosyası yükleniyor
- 11. Pandalarda nasıl bir sütun oluşturabilirim?
- 12. Bir NSPredicate öğesinin birden çok koşulla yapılandırılması
- 13. Kategorik bir yordayıcı rstan nasıl temsil edilir?
- 14. Pandalarda koşullu değiştirme
- 15. python benzer kategorik değerleri gruplandırıyor
- 16. R Doğrusal Regresyonda Kategorik Değişken
- 17. Pandalarda bağıl sıra seçimi?
- 18. "Anti-birleştirme" pandalarda (Python)
- 19. Python Pandalarda, boole işlemi
- 20. Pandalarda koşullu aramalar Dataframe
- 21. Veri Levhaları Pandalarda Birleştirme
- 22. Her bir cpu değişkenin adresi
- 23. Bir değişkenin türünü alın ve
- 24. lldb: Bir değişkenin adresini yazdırma
- 25. Bir değişkenin değiştiği satırda durun
- 26. Bir Spring web uygulamasında bir HTTP proxy yapılandırılması
- 27. Pandalarda iki dizin içeren bir veri çerçevesi
- 28. İki zaman dizisini pandalarda bir araya getirme
- 29. Bir değişkenin bir nesne olduğundan emin olun
- 30. PHP'de bir değişkenin bir kopyasını nasıl oluşturuyorsunuz?