1
resposta

groupby por matéria no DF da aula não esta funcionando

Ola! Estou tentando aplicar o mesmo conceito do exercício no DF utilizado em aula, pois queria saber o desvio padrão em cada matéria. no entanto o groupby na coluna matéria não funciona

df da aula:

df = pd.DataFrame(data = {'Fulano': [8, 10, 4, 8, 6, 10, 8], 'Beltrano': [10, 2, 0.5, 1, 3, 9.5, 10], 'Sicrano': [7.5, 8, 7, 8, 8, 8.5, 7]}, index = ['Matemática', 'Português', 'Inglês', 'Geografia', 'História', 'Física', 'Química']) df.rename_axis('Matérias', axis = 'columns', inplace = True) df

Forma com eu estou tentando encontrar o std() por matérias:

df.groupby(['Matérias']).std()

erro:

KeyError Traceback (most recent call last) in () ----> 1 df.groupby(['Matérias']).std()

2 frames /usr/local/lib/python3.7/dist-packages/pandas/core/groupby/grouper.py in get_grouper(obj, key, axis, level, sort, observed, mutated, validate, dropna) 860 in_axis, level, gpr = False, gpr, None 861 else: --> 862 raise KeyError(gpr) 863 elif isinstance(gpr, Grouper) and gpr.key is not None: 864 # Add key to exclusions

KeyError: 'Matérias'

1 resposta

Olá Everton, tudo bem?

Naturalmente o .std() trará o desvio padrão das colunas do seu data frame, no caso, df.std() resultará no desvio padrão de fulano, beltrano e sicrano.

df.std()
Matérias
Fulano      2.138090
Beltrano    4.460141
Sicrano     0.566947

Uma possibilidade que podemos citar para saber o desvio padrão por matérias é transpor o dataframe, ou seja, transformando linhas em colunas, e logo em seguida calcular o desvio padrão. Para isso, usamos o comando df.T.std() trazendo assim a medida por matérias.

df.T.std()
Matemática    1.322876
Português     4.163332
Inglês        3.253204
Geografia     4.041452
História      2.516611
Física        0.763763
Química       1.527525

Espero ter ajudado.