фильтрация данных из кадров данных Pandas - PullRequest
0 голосов
/ 28 июня 2018

Справочная информация: Я пытаюсь использовать данные из CSV-файла, чтобы задавать вопросы и делать выводы на основе данных. Данные представляют собой журнал посещений пациентов из клиники в Бразилии, включая дополнительные данные пациентов, а также данные о том, был ли пациент не представлен или нет. Я выбрал для изучения корреляции между возрастом пациента и данными неявки.

Проблема: С учетом количества посещений, идентификатора пациента, возраста и данных неявки, как мне составить массив возрастов, которые коррелируют с каждым уникальным идентификатором пациента (чтобы я мог оценить средний возраст всего уникальных пациентов, посещающих клинику).

Мой код:

# data set of no shows at a clinic in Brazil
noshow_data = pd.read_csv('noshowappointments-kagglev2-may-2016.csv')

noshow_df = pd.DataFrame(noshow_data)

Вот начало кода, с заголовком всего кадра данных csv, заданного

# Next I construct a dataframe with only the data I'm interested in:

ptid = noshow_df['PatientId']
ages = noshow_df['Age']
noshow = noshow_df['No-show']
ptid_ages_noshow = pd.DataFrame({'PatientId' : pt_id, 'Ages' : ages, 
                                 'No_show' : noshow})

ptid_ages_noshow

Здесь я отсортировал данные, чтобы показать множественные посещения уникального пациента

# Now, I know how to determine the total number of unique patients:

# total number of unique patients
num_unique_pts = noshow_df.PatientId.unique()
len(num_unique_pts)

Если я хочу определить средний возраст всех пациентов в течение всех посещений, я бы использовал:

# mean age of all vists
ages = noshow_data['Age']
ages.mean()

Итак, мой вопрос: как мне определить средний возраст всех уникальных пациентов?

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

То есть вы хотите сохранить только одно посещение для каждого пациента для расчета? Вот как это сделать:

noshow_df.drop_duplicates('PatientId')['Age'].mean()

Имейте в виду, что возраст людей меняется со временем. Вы должны решить, как вы хотите справиться с этим.

0 голосов
/ 28 июня 2018

Вы можете просто использовать функцию groupby , доступную в pandas с ограничением на соответствующие столбцы:

ptid_ages_noshow[['PatientId','Ages']].groupby('PatientId').mean()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...