Tipos de dados
Vamos começar nossas analises sob a ótica da Estatística Descritiva, mas afinal o que isso quer dizer?
Segundo Robert Witte, ela nos fornece ferramentas para organizar, resumir e apresentar a variabilidade que encontramos em nossos dados.1 Dessa forma conseguimos tratar os dados brutos em informações que sejam mais fáceis de entender.
O nosso cinto de utilidades então começa a ser preenchido com as ferramentas desse ramo da estatística que são: Tabelas, Gráficos, Medidas de tendência central como por exemplo mediana e moda, entre outros que veremos a seguir. Utilizaremos muitas dessas ferramentas quando estivermos fazendo a Analise Exploratória de dados que é um dos passos importantes da Ciência de Dados
Tipos de Dados
flowchart TD Z[Variáveis] A[Qualitativas] B[Quantitativas] C[Nominal] D[Ordinal] E[Contínua] F[Discreta] Z --> A Z --> B A --> C A --> D B --> E B --> F C -.- G("Cor") D -.- H("Nível de Educação") E -.- I(Temperatura) F -.- J(Contagem) style H fill:#666, stroke-dasharray: 5 5 style G fill:#666, stroke-dasharray: 5 5 style I fill:#666, stroke-dasharray: 5 5 style J fill:#666, stroke-dasharray: 5 5
Os tipos de dados apresentados no diagrama têm um papel crucial na análise estatística, pois determinam quais métodos e abordagens são mais apropriados para entender os registros coletados.
Os dados qualitativos são aqueles que não podem ser medidos numericamente, mas podem ser categorizados em grupos ou classes. Ainda são subdivididos em duas categorias: nominais e ordinais.
Qualitativas nominais representam categorias distintas sem uma ordem específica, como cores, gêneros ou tipos de animais.
Qualitativas ordinais têm uma ordem intrínseca, mas as diferenças entre os valores não são uniformes, como níveis de educação (ensino fundamental, médio, superior).
Já os dados quantitativos, como o nome sugere, envolvem medidas numéricas e também são divididas em duas categorias: contínuas e discretas.
Dados quantitativos contínuos podem assumir qualquer valor dentro de um intervalo e podem ser subdivididos em partes menores significativas, como altura, peso ou temperatura.
Enquanto os dados quantitativos discretos são contáveis e geralmente representam valores inteiros, como o número de pessoas em uma família ou a contagem de itens em um estoque.
Compreender essas categorias é fundamental, pois influencia as escolhas estatísticas adequadas. Que iremos abordar ao longo dessa série
Em resumo, a classificação das dados em qualitativas e quantitativas, bem como suas subdivisões, fornece uma base sólida para a análise de dados e a tomada de decisões.
Retomando o dataset do post anterior:
Nome | Idade | Tipo de Usuário | Ticket Médio | Idade da Conta |
João | 28 | Premium | 150.50 | 3 |
Maria | 35 | Free | 45.20 | 2 |
Pedro | 22 | Free | 30.00 | 1 |
Ana | 45 | Premium | 200.75 | 5 |
Lúcia | 29 | Free | 40.80 | 2 |
Podemos fazer a seguinte leitura:
Nome | Qualitativo Nominal |
Idade | Quantitativo Discreto |
Tipo de usuário | Qualitativo Nominal, Categórico |
Ticket Médio | Quantitativo Contínuo |
Idade da Conta | Quantitativo Discreta |
A depender de nosso problema podemos ter leituras diferentes desse tipos de dados.
Vamos verificar como fazer isso em código:
R
Depois de carregar os dados, podemos verificar os tipos que o readr inferiu para nossas colunas:2
library(readr)
dados <- read_csv("dataset000.csv")
str(dados)
Isso resultou em:
spc_tbl_ [5 × 5] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
$ Nome : chr [1:5] "João" "Maria" "Pedro" "Ana" ...
$ Idade : num [1:5] 28 35 22 45 29
$ Tipo de Usuário: chr [1:5] "Premium" "Free" "Free" "Premium" ...
$ Ticket Médio : num [1:5] 150.5 45.2 30 200.8 40.8
$ Idade da Conta : num [1:5] 3 2 1 5 2
- attr(*, "spec")=
.. cols(
.. Nome = col_character(),
.. Idade = col_double(),
.. `Tipo de Usuário` = col_character(),
.. `Ticket Médio` = col_double(),
.. `Idade da Conta` = col_double()
.. )
- attr(*, "problems")=<externalptr>
Ou seja, Idade, Ticket Médio, e Idade da conta foram tratadas como dados numéricos, o que está correto.
Agora precisamos definir que o “Tipo de Usuário” é categórico, podemos fazer assim:
dados$"Tipo de Usuário" <- as.factor(dados$"Tipo de Usuário")
Se você rodar str(dados)
novamente, a coluna que alteramos deve estar como
abaixo:
$ Tipo de Usuário: Factor w/ 2 levels "Free","Premium": 2 1 1 2 1
Python
Vamos utilizar a função info()
do pandas3 para verificar os tipos de coluna:
import panda as pd
dados = pd.read_csv("dataset000.csv")
dados.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 5 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Nome 5 non-null object
1 Idade 5 non-null int64
2 Tipo de Usuário 5 non-null object
3 Ticket Médio 5 non-null float64
4 Idade da Conta 5 non-null int64
dtypes: float64(1), int64(2), object(2)
memory usage: 332.0+ bytes
Vamos tratar agora a coluna 2 com o astype
4 5:
dados["Tipo de Usuário"] = dados["Tipo de Usuário"].astype("category")
Resultando em:
Julia
Já em Julia, assim que carregamos os dados conseguimos ver os tipos, mas se você
quiser verificar podemos usar o método describe
6
using CSV
using DataFrames
dados = CSV.read("dataset000.csv", DataFrame)
describe(dados)
5×7 DataFrame
Row │ variable mean min median max nmissing eltype
│ Symbol Union… Any Union… Any Int64 DataType
─────┼────────────────────────────────────────────────────────────────────
1 │ Nome Ana Pedro 0 String7
2 │ Idade 31.8 22 29.0 45 0 Int64
3 │ Tipo de Usuário Free Premium 0 String7
4 │ Ticket Médio 93.45 30.0 45.2 200.75 0 Float64
5 │ Idade da Conta 2.6 1 2.0 5 0 Int64
Iremos precisar adicionar o pacote CategoricalArrays
7
using CategoricalArrays
dados."Tipo de Usuário" = categorical(dados."Tipo de Usuário")
Como resultado:
3 │ Tipo de Usuário Free Premium 0 CategoricalValue{String7, UInt32}