#python #python-3.x #pandas #dataframe #matplotlib
#python #python-3.x #pandas #фрейм данных #matplotlib
Вопрос:
Я хотел бы отобразить фрейм данных pandas в виде таблицы в matplotlib.
Фрейм данных (df):
name wait_value
cscas 2
cscas 6
dgref 3
dgref 7
Я использовал :
new_df = df.groupby(['name'])['wait_value'].mean().to_frame()
fig, axarr = plt.subplots(1, 2)
axarr[0].axis('off')
axarr[0].axis('tight')
axarr[0].table(cellText= new_df.values, colLabels=('ave_wait_value'), loc='center')
fig.tight_layout()
plt.show()
Но в таблице есть только один столбец «ave_wait_value». Мне нужны два столбца:
ave_wait_value
4
5
Как я могу добавить столбец «name» в таблицу?
Я также пытался :
new_df.rename(columns = {0:'name', 1:'ave_wait_value'}, inplace =True)
Но это не сработало.
Кроме того, мне нужно вычислить std.dev для каждого «имени» и поместить его в виде столбца в той же таблице, как спроектировать запрос? Спасибо!
Ответ №1:
Информация об имени есть; она просто хранится в индексе. Чтобы преобразовать индекс в столбец, используйте reset_index
:
In [45]: df.groupby(['name'])['wait_value'].mean().to_frame()
Out[45]:
wait_value
name
cscas 4
dgref 5
In [46]: df.groupby('name')['wait_value'].mean().reset_index()
Out[46]:
name wait_value
0 cscas 4
1 dgref 5
Чтобы получить среднее значение и стандартное отклонение, используйте agg
:
In [49]: df.groupby('name')['wait_value'].agg(['mean', 'std']).reset_index()
Out[49]:
name mean std
0 cscas 4 2.828427
1 dgref 5 2.828427