Ищете способ создать таблицу статистики из столбцов в фрейме данных - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть набор данных с категориями / кодами, например, мужчина / женщина, состояние службы, код службы и у меня есть столбец оплаченных претензий.

Я ищу способ создания таблицы / сводной таблицы с использованием Python для генерации выходных данных, в которых у меня есть только 10 самых высоких столбцов средних оплаченных претензий по коду обслуживания (т. Е. Каковы 10 лучших кодов с самыми высокими оплаченными средними претензиями) ). Я также хотел добавить с медианой, stdev, count, чтобы результат выглядел примерно как

Таблица:

gender, code, state, paid claim
F, 1234, TX, $300
F, 2345, NJ, $120
F, 3456, NJ, $30
M, 1234, MN, $250
M, 4567, CA, $50
F, 1234, MA, $70
F, 8901, CA, $150
F, 23457, NY, $160
F, 4567, SD, $125

Выходные данные, которые я пытаюсь сгенерировать (10 лучших заплаченных претензий по коду):

code, average claim, median claim, count claim
1234,  206, xxx, 3

Итак, я сделал что-то вроде:

service_code_average=df.groupby('service_code', as_index=False)['paid claim'].mean().sort_values(by='paid claim')

Мне не удалось ограничиться первой десяткой, и я изо всех сил пытался добавить СМИ и подсчитать.

1 Ответ

0 голосов
/ 25 апреля 2018

Здесь вы можете использовать функцию agg, где вы можете указать несколько функций агрегирования за один раз. Вы можете сделать следующее:

# convert string to integer
df['paid claim'] = df['paid claim'].str.extract('(\d+)')
df['paid claim'] = df['paid claim'].astype(int)

# set n value
top_n = 2 ## set this to 10 

# apply aggregation 
df1 = df.groupby('code').agg({'paid claim':{'average': lambda x: x.nlargest(top_n).mean(),
                                      'counts': lambda x: x.count(),
                                      'median': lambda x: x.median()}})

# reset column names
df1.columns = df1.columns.droplevel()
df1 = df1.reset_index()

print(df1)

    code  average  counts  median
0   1234    275.0       3   250.0
1   2345    120.0       1   120.0
2   3456     30.0       1    30.0
3   4567     87.5       2    87.5
4   8901    150.0       1   150.0
5  23457    160.0       1   160.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...