Как объединить данные из нескольких столбцов?

#pandas #bin

#pandas #bin

Вопрос:

У меня есть следующий df

 |   1   |   2   |   3   |
-------------------------
  0.11     0.25    0.74
  0.32     0.93    0.26
  0.44     0.28    0.76
  0.15     0.29    0.79
  

и т.д.

Я использую ячейки:

 bins = [0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1]
  

Я создал 3 столбца bin и запустил для них value_counts(). Итак, теперь я знаю, сколько значений в каждой ячейке для каждого из этих 3 столбцов. Но у меня возникли проблемы с отображением этого в виде столбчатой диаграммы. Ищете тройную гистограмму

 df['Bin1'] = pd.cut(df['1'], bins)
df['Bin2'] = pd.cut(df['2'], bins)
df['Bin3'] = pd.cut(df['3'], bins)
Bin1_count = df['Bin1'].value_counts().values
Bin2_count = df['Bin2'].value_counts().values
Bin3_count = df['Bin3'].value_counts().values
x_axis = df['Bin1'].value_counts().index

sns.barplot(x = x_axis, y = [Bin1_count,Bin2_count,Bin3_count])
  

Ответ №1:

Вы можете сначала использовать melt , затем использовать pd.crosstab и попробовать посмотреть на plot из pandas

 meltdf=df.melt()
meltdf.value=pd.cut(meltdf.value,bins)
pd.crosstab(meltdf.variable,meltdf.value).plot(kind='bar')
  

Комментарии:

1. У меня также есть другие столбцы в df других типов, поэтому я получаю ошибку «‘<‘ не поддерживается между экземплярами ‘int’ и ‘str'»

2. @user10939484 сделать meltdf=df[['1','2','3']].melt()

3. Неважно, просто создал отдельный фрейм данных из нужных мне столбцов. Спасибо