У меня есть pandas dataFrame, который содержит список переменных, которые я хочу преобразовать в фиктивные переменные. В основном я хочу конвертировать:
К этому:
2
laila
24 Апр 2017 в 22:49
2 ответа
Лучший ответ
df = pd.DataFrame({0: [['hello', 'motto'], ['motto', 'mania']]})
print(df)
0
0 [hello, motto]
1 [motto, mania]
Используйте str.join
, а затем str.get_dummies
сильный >
df[0].str.join('|').str.get_dummies()
hello mania motto
0 1 0 1
1 0 1 1
5
piRSquared
24 Апр 2017 в 19:53
Вот решение для экономии памяти, в котором будут использоваться разреженные матрицы и Pandas.Sparse Series:
from sklearn.feature_extraction.text import CountVectorizer
vect = CountVectorizer()
X = vect.fit_transform(df.pop(0).str.join(' '))
for i, col in enumerate(vect.get_feature_names()):
df[col] = pd.SparseSeries(X[:, i].toarray().ravel(), fill_value=0)
Результат:
In [81]: df
Out[81]:
hello mania motto
0 1 0 1
1 0 1 1
In [82]: df.memory_usage()
Out[82]:
Index 80
hello 8 # notice memory usage: # of ones multiplied by 8 bytes (int64)
mania 8
motto 16
dtype: int64
2
MaxU
24 Апр 2017 в 20:32
Похожие вопросы
Новые вопросы
pandas
Pandas - это библиотека Python для обработки и анализа данных, например, кадры данных, многомерные временные ряды и наборы данных поперечного сечения, обычно встречающиеся в статистике, результатах экспериментальной науки, эконометрике или финансах. Pandas - одна из основных библиотек данных в Python.