Python / Pandas: выберите конкретное значение и верните ряд - PullRequest
0 голосов
/ 12 мая 2018

У меня есть df, который содержит 'age_bracket' в форме 20-25, 25-30 и т. Д. И 'no_show', который имеет только значения 0 или 1 для указания того, пришел ли пациент на прием илине.

Для создания гистограммы мне нужны общие и пропорциональные значения для шоу против отсутствия шоу для возраста.Я попробовал это:

noshow_counts = df.groupby('age_bracket')['no_Show'].value_counts()[1]
show_counts = df.groupby('age_bracket')['no_Show'].value_counts()[0]
age_totals = df.groupby('age_bracket').count()['no_Show']

Вычисление пропорций, подобных этой

nowshow_proportions = noshow_counts / age_totals
show_proportions = show_counts /age_totals

И вот как это используется в гистограмме

#Bar Chart
ind = np.arange(len(nowshow_proportions))  
width = 0.40 
# plot bars
noshow_bars = plt.bar(ind, nowshow_proportions, width, color='g', 
alpha=.7, label='No Show')
show_bar = plt.bar(ind + width, show_proportions, width, color='b', 
alpha=.7, label='Show')

Это не продуктправильные значения.Я предполагаю, что это потому, что value_counts возвращает объект, а не серию.Так что это неверно

 noshow_counts = df.groupby('age_bracket')['no_Show'].value_counts()[1]
 show_counts = df.groupby('age_bracket')['no_Show'].value_counts()[0]

Есть ли способ выбрать только «1» и только «0» значения и вернуть серию?

1 Ответ

0 голосов
/ 12 мая 2018

Мне удалось получить правильный результат с

show_counts = df[df['no_Show'] == 0].groupby('age_bracket').count(). 
['no_Show']
noshow_counts=df[df['no_Show'] == 1].groupby('age_bracket').count(). 
['no_Show']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...