2015-11-25 6 views
-2

У меня есть группа, где вертикальная ось - это статус учетной записи, «Хорошие» и «Плохие» счета, а горизонтальная ось - State (AK, AZ ... и т. Д.). Я хочу найти соотношение между хорошими и плохими счетами по штату, но я не могу найти, как работать с одной категорией («Хорошо») над другой («Плохой»).Выполнение операций внутри группы

Спасибо!

Подробнее:

Data(contained in "df"): 
astatus astate 
Good  AK 
Bad  AK 
Good  NY 
Good  GA 

Моя попытка:

d=df.groupby([astatus', 'astate']).size() 
d=d.unstack('astate') 

Результаты в:

astate  AK NY GA 
astatus 
Good   1  1 1 
Bad   1  0 0 

Я вижу, что, как представляется, тенденция в наборе данных, так что я хотел бы для определения% хороших счетов по штату, но я не уверен, что следующий шаг.

Еще раз спасибо!

ответ

0

Вам нужно предоставить немного больше информации о вашей структуре данных. Небольшой пример тестирования также будет очень полезен. В противном случае вам будет сложно помочь вам. В общей идеей, вы можете использовать apply на ваших сгруппированных данных взять вычислить соотношение для каждого состояния: sum(bads)/sum(goods)

Но опять же, не имея больше информации, то трудно посоветовать что-либо определенное.

+0

Понял, спасибо! –

+0

Если я правильно понимаю, государства могут иметь неограниченное количество «плохих» и «товаров», верно? Поскольку у меня нет доступа к вашим данным, я могу проверить идею, что у меня есть, поэтому, вероятно, это будет не так, но попробуйте 'df.groupby (« astatus »). Apply ((lambda x: (sum (x == 'хорошо')/сумма (х == "плохо")))) '. Если вы предоставите небольшой набор данных, я дам ему еще одну попытку. – userE

Смежные вопросы