#python #pandas #seaborn
#python #pandas #сиборн
Вопрос:
Прошу прощения за неясное название, но я не знал, как лучше это объяснить. У меня следующая проблема: используя pandas и seaborn, я хочу отобразить некоторую информацию, которая у меня есть в моем наборе данных. Набор данных выглядит следующим образом:
ParticpantID ColorID
1 3
2 3
3 4
4 2
5 1
6 1
7 3
8 1
Теперь я использую:
sns.set_style('darkgrid')
sns.countplot( x= "ColorID", data =dataset, palette = "magma" )
plt.title("Participants per Color")
plt.show()
И я получаю график подсчета. Проблема в том, что у меня есть другой файл, который выглядит следующим образом:
ColorID Color
1 Blue
2 Green
3 Red
4 Yellow
Каждый раз, когда я запускаю свою программу, я хочу открыть этот второй файл, обработать его и заменить на моей диаграмме подсчета числа 1-2-3-4 правильным названием цвета.
Я не уверен, как это сделать. Я думал об использовании функции xticks(), но я не уверен, как ее реализовать.
Прошу прощения за основной вопрос, но я полный новичок. Заранее большое вам спасибо!
Ответ №1:
Сначала вам нужно обновить свой набор данных с помощью строки, которую вы хотите установить, используя свой набор данных цветов.
Восстановление ваших наборов данных (обратите внимание на set_index
):
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
dataset = pd.DataFrame([
[1,3],
[2,3],
[3,4],
[4,2],
[5,1],
[6,1],
[7,3],
[8,1],
],
columns=['ParticpantID','ColorID']
).set_index('ParticpantID')
# ColorID
# ParticpantID
# 1 3
# 2 3
# 3 4
# 4 2
# 5 1
# 6 1
# 7 3
# 8 1
color_df = pd.DataFrame(
[
[1, 'Blue'],
[2, 'Green'],
[3, 'Red'],
[4, 'Yellow'],
],
columns=['ColorID', 'Color'],
).set_index('ColorID')
# Color
# ColorID
# 1 Blue
# 2 Green
# 3 Red
# 4 Yellow
Использование color_df
для перевода 'ColorID'
в цветную строку в dataset
:
dataset['Color'] = dataset['ColorID'].transform(lambda color: color_df['Color'][color])
Печать вашего графика, замена 'ColorID'
на 'Color'
(новый ключ для строки цвета) в качестве оси x:
sns.set_style('darkgrid')
sns.countplot(
x="Color",
data=dataset,
palette="magma",
)
plt.title("Participants per Color")
plt.show()
Ключевой операцией для понимания здесь является transform
метод: он позволяет преобразовать (с помощью лямбда-функции) один столбец в другой.
Комментарии:
1. Я думаю, это было бы немного проще, если бы вы использовали
.map
вместо.transform
2. @mcnew если вы оценили ответ, не могли бы вы подтвердить его и / или проголосовать за него?