A estatística descritiva é usada para descrever as características básicas dos dados em um estudo. Elas fornecem resumos simples sobre a amostra e as medidas. Junto com a análise gráfica simples, elas formam a base de praticamente todas as análises quantitativas de dados.
Para começar, precisamos coletar os dados para o nosso DataFrame. Para este exemplo, eu coletei os seguintes dados sobre estudantes:
Nome | Idade | Pontuação |
---|---|---|
Rafael | 20 | 70 |
Miguel | 22 | 80 |
Gabriel | 27 | 87 |
Emanuel | 19 | 92 |
Maria | 25 | 77 |
Sofia | 30 | 98 |
Luana | 18 | 100 |
Cassandra | 17 |
Antes de iniciarmos, é necessário importar a biblioteca pandas:
import pandas as pd
Em seguida, precisamos criar o DataFrame com base nos dados coletados.
Para nosso exemplo, o código para criar o DataFrame é:
dados = {
'nome': ['Rafael', 'Miguel', 'Gabriel', 'Emanuel','Maria', 'Sofia', 'Luana', 'Cassandra'],
'idade': [20, 22, 27, 19, 25, 30, 18, 17],
'pontuação': [70, 80, 87, 92, 80, 98, 100, None],
}
df = pd.DataFrame(dados)
df
nome | idade | pontuação | |
---|---|---|---|
0 | Rafael | 20 | 70.0 |
1 | Miguel | 22 | 80.0 |
2 | Gabriel | 27 | 87.0 |
3 | Emanuel | 19 | 92.0 |
4 | Maria | 25 | 80.0 |
5 | Sofia | 30 | 98.0 |
6 | Luana | 18 | 100.0 |
7 | Cassandra | 17 | NaN |
Digamos que você deseja obter as estatísticas descritivas para o campo 'Idade', que contém dados numéricos.
Nesse caso, a sintaxe que precisamos aplicar é:
df['idade'].describe()
count 8.000000 mean 22.250000 std 4.652188 min 17.000000 25% 18.750000 50% 21.000000 75% 25.500000 max 30.000000 Name: idade, dtype: float64
Para saber as dimensões de nossos dados (quantas linhas e colunas existem), podemos acessar o atributo shape:
df.shape
(8, 3)
O atributo columns nos informa todas as colunas de nosso DataFrame:
df.columns
Index(['nome', 'idade', 'pontuação'], dtype='object')
O atributo dtypes nos informa os tipos de dados de cada coluna:
df.dtypes
nome object idade int64 pontuação float64 dtype: object
O método sum nos permite obter a soma dos dados de uma coluna numérica:
df['idade'].sum()
178
Podemos ainda dividir as estatísticas descritivas no seguinte:
df['pontuação'].count()
7
df['pontuação'].mean()
86.71428571428571
df['pontuação'].mode()
0 80.0 dtype: float64
df['pontuação'].median()
87.0
df['pontuação'].quantile(q=0.25)
80.0
df['pontuação'].quantile(q=0.50)
87.0
df['pontuação'].quantile(q=0.75)
95.0
df['pontuação'].std()
10.812250547631695
df['pontuação'].var()
116.90476190476188
df['pontuação'].cumsum()
0 70.0 1 150.0 2 237.0 3 329.0 4 409.0 5 507.0 6 607.0 7 NaN Name: pontuação, dtype: float64
df['pontuação'].min()
70.0
df['pontuação'].max()
100.0
df['pontuação'].isna().sum()
1
df['nome'].sort_values()
7 Cassandra 3 Emanuel 2 Gabriel 6 Luana 4 Maria 1 Miguel 0 Rafael 5 Sofia Name: nome, dtype: object
df["pontuação"] /= 100
df['pontuação'].head(3)
0 0.70 1 0.80 2 0.87 Name: pontuação, dtype: float64
df['pontuação'].tail(2)
6 1.0 7 NaN Name: pontuação, dtype: float64
df['pontuação'].skew()
-0.2482135835044105
df.corr()
idade | pontuação | |
---|---|---|
idade | 1.000000 | 0.124085 |
pontuação | 0.124085 | 1.000000 |
df.cov()
idade | pontuação | |
---|---|---|
idade | 21.642857 | 0.06000 |
pontuação | 0.060000 | 0.01169 |
df['pontuação'].plot.bar();
df['idade'].plot.line();