Pacotes com Bancos de Dados para trabalhar em Julia

Pacotes
Primeiros Passos

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.

Autores
Afiliação

Universidade Estadual de Campinas

Universidade Estadual de Campinas

Data de Publicação

5 de setembro de 2025

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:

# 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, YFinance

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.

Nota

Ferramentas de IA foram utilizadas para correção ortográfica e aprimoramento do texto.