Это может показаться странным вопросом, но мне было интересно, можно ли временно заменить нечисловые значения в столбце числовыми значениями, чтобы мы могли видеть распределение.
Только потому, что если мы используем функцию distplot
, она работает только для числовых значений, а не для нечисловых значений.
Поэтому рассмотрим примеры данных, которые у меня есть (показаны ниже).
ID Colour
---------------
1 Red
---------------
2 Red
---------------
3 Blue
---------------
4 Red
---------------
5 Blue
---------------
Можно ли временно заменить «Красный» и «Синий» числовыми значениями? Например: замените «Красный» на 1 и «Синий» на 0.
Следовательно, заменив нечисловые значения (красный и синий) числовыми значениями (1 и 0), это позволило бы мне создать график распределения, чтобы увидеть плотность «красного» и «синего» в моем наборе данных.
Следовательно, как мне этого добиться, чтобы я мог видеть распределение и плотность красного и синего цветов в моем наборе данных с помощью distplot
.
Спасибо.
Рассмотрим пример данных:
>>> import pandas as pd
>>> data = ({"Colour": [Red, Red, Blue, Red, Blue]})
>>> df = pd.DataFrame(data)
>>> df
Colour
0 Red
1 Red
2 Blue
3 Red
4 Blue
Затем вы можете создать colour_map
для значений:
>>> colour_map = {'Red': 1, 'Blue': 0}
Затем, применив .map()
к столбцу:
>>> df['Colour'] = df['Colour'].map(colour_map)
Результат:
>>> df
Colour
0 1
1 1
2 0
3 1
4 0
Кажется, я получаю эту ошибку: значение пытается быть установлено для копии среза из DataFrame. Попробуйте вместо этого использовать .loc[row_indexer,col_indexer] = значение
Возможно, вы можете попробовать добавить новый столбец по цвету с помощью этого df['Colour_Map'] = df['Colour'].map(colour_map)
, чтобы не перезаписать исходные значения, которые должны быть нанесены.
Только что попробовал - все еще получаю значения NaN в новом столбце.
Хм, действительно не уверен. Может быть, вы можете проверить, есть ли в ваших данных какие-либо начальные или обучающие пробелы?
Теперь это работает. У меня где-то было двойное пространство. Извинения.
Спасибо за это решение. Я попробовал это, но мой результирующий фрейм данных по какой-то причине кажется замененным значениями NaN. Не уверен, что произошло.