2016-09-14 4 views
3

У меня есть 6 столбцов в моей кадре данных. 2 из них имеют около 3K уникальных значений. Когда я использую get_dummies() на всем фрейме данных или только один из двух столбцов, то получится тот же самый столбец со значениями 3k. get_dummies не подходит для больших столбцов. Некоторые столбцы действительно разогреваются, но большие нет.Ограничение Python Pandas get_dummies(). Не конвертирует все столбцы

Интересно, работает ли get_dummies только на множестве с малой мощностью.

Я считаю, что это было также обсуждается здесь: Need help with python(pandas) script

+1

Что такое dtypes? Если этот столбец с уникальными значениями 3k имеет тип integer, он будет отброшен в pd.get_dummies, да. Вы можете преобразовать его в категорию и применить pd.get_dummies ('df ['x'] = df ['x']. Astype ('category')'). Если количество уникальных значений невелико по сравнению с длиной блока данных, оно будет использовать значительно меньше памяти. – ayhan

+0

ах это была ошибка! Эти большие столбцы являются int (такие факторы, как R). Я изменю тип! Благодаря !! – cryp

ответ

3

Это, кажется, работает как задумано для меня.

Рассмотрим ряд s случайных 3 символьных строк

import pandas as pd 
import numpy as np 
from string import lowercase 

np.random.seed([3,1415]) 
s = pd.DataFrame(np.random.choice(list(lowercase), (10000, 3))).sum(1) 

s.nunique() 

7583 

Затем назначьте dataframe df

df = s.str.get_dummies() 

df.shape 

(10000, 7583) 

df.sum(1).describe() 

count 10000.0 
mean   1.0 
std   0.0 
min   1.0 
25%   1.0 
50%   1.0 
75%   1.0 
max   1.0 
dtype: float64 
Смежные вопросы