#python #pandas #dataframe
#python #pandas #фрейм данных
Вопрос:
У меня есть набор данных с мультиклассом, и я хочу получить репрезентативную строку для каждого класса. Например,
import pandas as pd
df = pd.DataFrame({'A':[1,2,3,4,5,1,2,3,4,5],
'B':['Apple','Orange','Apple','Banana','Kiwi','Apple','Orange','Apple','Banana','Kiwi'],
'C':['Boy','Boy','Boy','Girl','Girl','Boy','Boy','Boy','Girl','Girl'],
'D':[1000,2000,1000,3000,3000,1000,2000,1000,3000,3000],
'Target':['X','X','Y','Z','X','X','X','Y','Z','X']
})
Что мне нужно, так это найти строку агента с помощью целевой функции.
Я использовал этот способ, но это не то, что я хочу.
df.groupby('Target').mean()
Должен ли я преобразовать категориальные столбцы в числовые, а затем получить среднее значение? Что меня беспокоит, так это то, что после получения среднего значения я могу быть уверен, к какой категориальной переменной она должна принадлежать? Скажем, я получаю значение с плавающей запятой для B
столбца, к какому фрукту оно должно принадлежать? Должен ли я просто округлить? В и хотите иметь
from sklearn import preprocessing
le = preprocessing.LabelEncoder()
df['B'] = le.fit_transform(df['B'])
df['C'] = le.fit_transform(df['C'])
Результат для df.groupby('Target').mean()
Но как я могу получить репрезентативное наблюдение, как в dataframe?
Комментарии:
1. Если вы хотите округлять или нет и / или как предварительно обрабатывать категориальные переменные, это сильно зависит от формулировки вашей проблемы. Просто подумайте об этом, может ли вообще быть среднее значение банана и апельсина . Имеет ли это смысл?
2. На самом деле это не имеет большого значения. Все, что я хочу, это своего рода выборка из каждого класса
3. Да, но каково будет значение
Kiwi Apple Orange = 3 1 2 = 6
(при условии, что киви = 3, яблоко = 1, апельсин = 2) со средним значением группы6/3=2==Orange
? Если вы хотите сравнить цены, например, вам нужно убедиться, что cat. кодирование — это масштабирование с ценой, или более явно: замена строки — это цена.4. Я намерен получить 3 наблюдения для каждого (X, Y, Z) класса. Для меня это всего лишь примерный пример. Мой фактический набор данных не имеет такого же сценария. Это имеет смысл в этом наборе данных.
5. Да, тогда округление после кодирования может быть решением. Но, не зная точного варианта использования, еще сложнее определить, подходит ли округление в рамках вашей формулировки проблемы.