# Instalando os pacotes
Pkg.add([
"DataFrames",
"RDatasets",
"MLDatasets",
"WorldBankData",
"YFinance"
])
# Aceita automaticamente os termos do MLDatasets
ENV["DATADEPS_ALWAYS_ACCEPT"] = "true";
# Carregando os pacotes
using DataFrames, RDatasets, MLDatasets, WorldBankData, YFinancePacotes com Bancos de Dados para trabalhar em Julia
Os dados são a matéria-prima do nosso trabalho. Pensando nisso, hoje vamos apresentar alguns pacotes em Julia que permitem acessar conjuntos de dados prontos para uso. Eles são ótimos para colocar em prática o que você vem aprendendo ao longo da jornada, testar novas ideias de análise ou até mesmo enriquecer o seu portfólio com projetos reais.
Introdução
Ao trabalhar com Estatística e Ciência de Dadps, é fundamental ter conjuntos de dados à disposição, seja para testar funções, praticar análises aprendidas ou realizar simulações com caracteristicas semelhantes às observadas em dados reais. No R, diversos bancos de dados já vêm carregados por padrão ou vem incorporados em diversos pacotes, o que torna o processo bem mais simples. Felizmente, Julia oferece vários pacotes que contêm conjuntos de dados prontos para utilizarmos em nossas análises.
Neste post, conheceremos alguns dos principais pacotes para acessar diversos bancos de dados úteis em análises estatísticas, econométricas e aprendizado de máquina.
Instalando e Carregando os Pacotes Necessários
Primeiro, vamos instalar e carregar os pacotes que serão utilizados. Para isso, basta executar o código abaixo no seu ambiente:
RDatasets.jl
O pacote RDatasets.jl faz exatamente o que o nome indica: disponibiliza em Julia os bancos de dados presentes no R e em muitos de seus pacotes. Dessa forma, conjuntos clássicos como iris, mtcars e vários outros ficam prontos para uso no ambiente.
Para acessá-los, basta utilizar a função dataset:
iris = dataset("datasets", "iris")150×5 DataFrame
Row │ SepalLength SepalWidth PetalLength PetalWidth Species
│ Float64 Float64 Float64 Float64 Cat…
─────┼─────────────────────────────────────────────────────────────
1 │ 5.1 3.5 1.4 0.2 setosa
2 │ 4.9 3.0 1.4 0.2 setosa
3 │ 4.7 3.2 1.3 0.2 setosa
4 │ 4.6 3.1 1.5 0.2 setosa
5 │ 5.0 3.6 1.4 0.2 setosa
6 │ 5.4 3.9 1.7 0.4 setosa
7 │ 4.6 3.4 1.4 0.3 setosa
8 │ 5.0 3.4 1.5 0.2 setosa
⋮ │ ⋮ ⋮ ⋮ ⋮ ⋮
144 │ 6.8 3.2 5.9 2.3 virginica
145 │ 6.7 3.3 5.7 2.5 virginica
146 │ 6.7 3.0 5.2 2.3 virginica
147 │ 6.3 2.5 5.0 1.9 virginica
148 │ 6.5 3.0 5.2 2.0 virginica
149 │ 6.2 3.4 5.4 2.3 virginica
150 │ 5.9 3.0 5.1 1.8 virginica
135 rows omitted
mtcars = dataset("datasets", "mtcars")32×12 DataFrame
Row │ Model MPG Cyl Disp HP DRat WT QS ⋯
│ String31 Float64 Int64 Float64 Int64 Float64 Float64 Fl ⋯
─────┼──────────────────────────────────────────────────────────────────────────
1 │ Mazda RX4 21.0 6 160.0 110 3.9 2.62 ⋯
2 │ Mazda RX4 Wag 21.0 6 160.0 110 3.9 2.875
3 │ Datsun 710 22.8 4 108.0 93 3.85 2.32
4 │ Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215
5 │ Hornet Sportabout 18.7 8 360.0 175 3.15 3.44 ⋯
6 │ Valiant 18.1 6 225.0 105 2.76 3.46
7 │ Duster 360 14.3 8 360.0 245 3.21 3.57
8 │ Merc 240D 24.4 4 146.7 62 3.69 3.19
⋮ │ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋱
26 │ Fiat X1-9 27.3 4 79.0 66 4.08 1.935 ⋯
27 │ Porsche 914-2 26.0 4 120.3 91 4.43 2.14
28 │ Lotus Europa 30.4 4 95.1 113 3.77 1.513
29 │ Ford Pantera L 15.8 8 351.0 264 4.22 3.17
30 │ Ferrari Dino 19.7 6 145.0 175 3.62 2.77 ⋯
31 │ Maserati Bora 15.0 8 301.0 335 3.54 3.57
32 │ Volvo 142E 21.4 4 121.0 109 4.11 2.78
5 columns and 17 rows omitted
Para verificar quais pacotes do R possuem bancos de dados disponíveis, usamos a função RDatasets.packages.
RDatasets.packages()34×2 DataFrame
Row │ Package Title
│ String15 String
─────┼─────────────────────────────────────────────────
1 │ COUNT Functions, data and code for cou…
2 │ Ecdat Data sets for econometrics
3 │ HSAUR A Handbook of Statistical Analys…
4 │ HistData Data sets from the history of st…
5 │ ISLR Data for An Introduction to Stat…
6 │ KMsurv Data sets from Klein and Moeschb…
7 │ MASS Support Functions and Datasets f…
8 │ SASmixed Data sets from "SAS System for M…
⋮ │ ⋮ ⋮
28 │ reshape2 Flexibly Reshape Data: A Reboot …
29 │ robustbase Basic Robust Statistics
30 │ rpart Recursive Partitioning and Regre…
31 │ sandwich Robust Covariance Matrix Estimat…
32 │ sem Structural Equation Models
33 │ survival Survival Analysis
34 │ vcd Visualizing Categorical Data
19 rows omitted
E para verificar quais bancos de dados estão disponíveis em cada pacote, utilizamos a função RDatasets.datasets (onde datasets se refere aos conjuntos de dados do R base).
RDatasets.datasets("datasets")50×5 DataFrame
Row │ Package Dataset Title Rows C ⋯
│ String15 String31 String Int64 I ⋯
─────┼──────────────────────────────────────────────────────────────────────────
1 │ datasets BOD Biochemical Oxygen Demand 6 ⋯
2 │ datasets CO2 Carbon Dioxide Uptake in Grass P… 84
3 │ datasets Formaldehyde Determination of Formaldehyde 6
4 │ datasets HairEyeColor Hair and Eye Color of Statistics… 32
5 │ datasets InsectSprays Effectiveness of Insect Sprays 72 ⋯
6 │ datasets LifeCycleSavings Intercountry Life-Cycle Savings … 50
7 │ datasets Loblolly Growth of Loblolly pine trees 84
8 │ datasets OrchardSprays Potency of Orchard Sprays 64
⋮ │ ⋮ ⋮ ⋮ ⋮ ⋱
44 │ datasets sleep Student's Sleep Data 20 ⋯
45 │ datasets stackloss Brownlee's Stack Loss Plant Data 21
46 │ datasets swiss Swiss Fertility and Socioeconomi… 47
47 │ datasets trees Girth, Height and Volume for Bla… 31
48 │ datasets volcano Topographic Information on Auckl… 87 ⋯
49 │ datasets warpbreaks The Number of Breaks in Yarn dur… 54
50 │ datasets women Average Heights and Weights for … 15
1 column and 35 rows omitted
MLDatasets.jl
O pacote MLDatasets.jl possui inúmeros bancos de dados com foco em Machine Learning, abrangendo tarefas que vão desde classificação de imagens até treinamento de modelos de linguagem natural. Como exemplo, vamos acessar o clássico conjunto de dados MNIST.
MNIST(:train)dataset MNIST:
metadata => Dict{String, Any} with 3 entries
split => :train
features => 28×28×60000 Array{Float32, 3}
targets => 60000-element Vector{Int64}
Para saber quais datasets estão disponíveis no pacote, verifique a documentação oficial ou utilize names(MLDatasets).
names(MLDatasets)38-element Vector{Symbol}:
:AQSOL
:BostonHousing
:CIFAR10
:CIFAR100
:CachedDataset
:ChickenPox
:CiteSeer
:Cora
:EMNIST
:FAUST
⋮
:TUDataset
:TemporalBrains
:Titanic
:UD_English
:WindMillEnergy
:Wine
:convert2image
:getobs
:numobs
WorldBankData.jl
O pacote WorldBankData.jl permite acessar diretamente os dados do Banco Mundial. Sua função principal, wdi(), possibilita consultar uma grande variedade de indicadores para diferentes países. Por exemplo, podemos usar essa função para obter a população total do Brasil ao longo dos anos.
wdi("SP.POP.TOTL", "BR", 1990, 2010)21×4 DataFrame
Row │ iso2c country year SP_POP_TOTL
│ String String Float64 Float64?
─────┼───────────────────────────────────────
1 │ BR Brazil 1990.0 1.49143e8
2 │ BR Brazil 1991.0 1.51724e8
3 │ BR Brazil 1992.0 1.54275e8
4 │ BR Brazil 1993.0 1.56795e8
5 │ BR Brazil 1994.0 1.59265e8
6 │ BR Brazil 1995.0 1.61735e8
7 │ BR Brazil 1996.0 1.64203e8
8 │ BR Brazil 1997.0 1.66662e8
⋮ │ ⋮ ⋮ ⋮ ⋮
15 │ BR Brazil 2004.0 1.82675e8
16 │ BR Brazil 2005.0 1.84688e8
17 │ BR Brazil 2006.0 1.86653e8
18 │ BR Brazil 2007.0 1.88552e8
19 │ BR Brazil 2008.0 1.90367e8
20 │ BR Brazil 2009.0 1.9208e8
21 │ BR Brazil 2010.0 1.93702e8
6 rows omitted
Para visualizar a lista de indicadores disponíveis, podemos utilizar a função search_wdi.
search_wdi("indicators", "name", r"." )25000×5 DataFrame
Row │ indicator name description ⋯
│ String String String ⋯
───────┼────────────────────────────────────────────────────────────────────────
1 │ 1.0.HCount.1.90usd Poverty Headcount ($1.90 a day) The poverty ⋯
2 │ 1.0.HCount.2.5usd Poverty Headcount ($2.50 a day) The poverty
3 │ 1.0.HCount.Mid10to50 Middle Class ($10-50 a day) Head… The poverty
4 │ 1.0.HCount.Ofcl Official Moderate Poverty Rate-N… The poverty
5 │ 1.0.HCount.Poor4uds Poverty Headcount ($4 a day) The poverty ⋯
6 │ 1.0.HCount.Vul4to10 Vulnerable ($4-10 a day) Headcou… The poverty
7 │ 1.0.PGap.1.90usd Poverty Gap ($1.90 a day) The poverty
8 │ 1.0.PGap.2.5usd Poverty Gap ($2.50 a day) The poverty
⋮ │ ⋮ ⋮ ⋱
24994 │ SG.OWN.LDJT.FE.Q1.ZS Women who own land jointly (% of… Women who ow ⋯
24995 │ SG.OWN.LDJT.FE.Q2.ZS Women who own land jointly (% of… Women who ow
24996 │ SG.OWN.LDJT.FE.Q3.ZS Women who own land jointly (% of… Women who ow
24997 │ SG.OWN.LDJT.FE.Q4.ZS Women who own land jointly (% of… Women who ow
24998 │ SG.OWN.LDJT.FE.Q5.ZS Women who own land jointly (% of… Women who ow ⋯
24999 │ SG.OWN.LDJT.FE.ZS Women who own land jointly (% of… Women who ow
25000 │ SG.OWN.LDJT.MA.Q1.ZS Men who own land jointly (% of m… Men who own
3 columns and 24985 rows omitted
YFinance.jl
O pacote YFinance.jl oferece uma maneira prática de acessar dados de ações, embora apresente algumas limitações de uso. Para carregar os dados, utilizamos a função get_prices(), na qual podemos especificar o ativo desejado, o intervalo total e a frequência das observações.
get_prices("AAPL", range="1y", interval="1d")OrderedCollections.OrderedDict{String, Union{Vector{Float64}, Vector{Dates.DateTime}, String}} with 8 entries:
"ticker" => "AAPL"
"timestamp" => [DateTime("2024-11-04T14:30:00"), DateTime("2024-11-05T14:30:0…
"open" => [219.966, 220.773, 221.579, 223.589, 226.366, 224.204, 223.756…
"high" => [221.758, 222.913, 225.023, 226.824, 227.851, 224.902, 224.792…
"low" => [218.692, 220.116, 220.165, 223.53, 225.609, 220.716, 222.57, …
"close" => [222.01, 223.45, 222.72, 227.48, 226.96, 224.23, 224.23, 225.1…
"adjclose" => [220.982, 222.415, 221.688, 226.426, 226.157, 223.437, 223.437…
"vol" => [4.47363e7, 2.79811e7, 5.43083e7, 4.19425e7, 3.81932e7, 4.1857…
Conclusão
Portanto, agora você já sabe como acessar diversos conjuntos de dados em Julia para suas análises estatísticas. Para continuar aprendendo, escolha um dos pacotes apresentados, explore os dados disponíveis e tente realizar uma análise completa.
Para auxiliar nesse processo, recomendamos os tutoriais Introdução à Análise Exploratória de Dados (EDA) em Julia e Gráficos em Julia: primeiros passos, publicados aqui no Do Zero ao Julia.
Ferramentas de IA foram utilizadas para correção ortográfica e aprimoramento do texto.