Как получить пропорцию логического значения для разных категорий в одной таблице - PullRequest
0 голосов
/ 10 мая 2019

Я новичок в Python, и это часть задания для курса, который я прохожу. Я должен найти группу (есть более 10 групп), которая имеет наибольшую долю значения A (это логическое значение - только A или B).

Я попытался найти общее количество значений для каждой группы и количество A и B для каждой группы. Я надеялся, что смогу как-нибудь написать простую формулу деления, чтобы получить долю каждой группы от значения А, но я застрял. На самом деле, я, вероятно, даже не принимаю правильного подхода с самого начала.

import numpy as np
import pandas as pd

Data = pd.read_csv('data.txt', header = None)

Data.head()
0  Group  Value
1   1       A
2   1       A
3   1       B
4   3       A
5   3       B 
6   2       A
7   2       B
8   2       A
9   2       A
10  4       B

Data.groupby('Group')['Value'].size()
# to get the total number of values applicable

Data.groupby(['Group', 'Value']).size()
# to get the count of rows for each Value (A and B only) for each Group (10+ groups) 

Пожалуйста, извините за мои объяснения, если я недостаточно разъясняю. Я постараюсь обратиться лучше, если это необходимо. Я надеюсь узнать, как получить процент от значения A для каждой группы.

Например.

    Group1 61% (or 0.61)
    Group2 54%
    Group3 49$ and so on...

Пожалуйста, сообщите.

Спасибо.

1 Ответ

0 голосов
/ 10 мая 2019

Что-то вроде этого делает работу (я теперь это не выглядит красиво)

for group in [1,2,3,4]:
    if 'A' in Data.loc[Data['Group'] == group].groupby(['Value']).count().index:
       proportion = (Data.loc[Data['Group'] == group].groupby(['Value']).count()/
                    Data.loc[Data['Group'] == group].count()).loc['A','Group']
       print('Group'+ str(group) + ' ' + str(proportion))
    else:
        print('Group'+ str(group) + ' ' + str(0))


Group1 0.6666666666666666
Group2 1.0
Group3 0.3333333333333333
Group4 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...