You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Jun 21, 2025. It is now read-only.
Copy file name to clipboardExpand all lines: contents/julia_basics_pt.md
+32-32Lines changed: 32 additions & 32 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,10 @@
1
-
# Julia Basics {#sec:julia_basics}
1
+
# Básico de Julia {#sec:julia_basics}
2
2
3
3
> **_OBSERVAÇÃO:_**
4
4
> Neste capítulo, descreveremos o básico de Julia como linguagem de programação.
5
5
> Por favor, note que isso não é *estritamente necessário* para você usar Julia como uma ferramenta de manipulação e visualização de dados.
6
6
> Ter um conhecimento básico de Julia definitivamente o tornará mais *eficaz* e *eficiente* no uso de Julia.
7
-
> No entanto, se você preferir começar imediatamente, pode pular para @sec:dataframes e aprenda sobre dados tabulares em `DataFrames.jl`.
7
+
> No entanto, se você preferir começar imediatamente, pode pular para @sec:dataframes e aprender sobre dados tabulares em `DataFrames.jl`.
8
8
9
9
Aqui, vamos trazer uma visão mais geral sobre a linguagem Julia, *não* algo aprofundado.
10
10
Se você já está familiarizado e confortável com outras linguagens de programação, nós encorajamos você a ler a documentação de Julia (<https://docs.julialang.org/>).
@@ -40,14 +40,14 @@ Julia tem diversos tipos de variáveis, mas, em ciência de dados, usamos princi
40
40
41
41
* Números inteiros: `Int64`
42
42
* Números reais: `Float64`
43
-
*Booleana: `Bool`
43
+
*Booleanas: `Bool`
44
44
* Strings: `String`
45
45
46
46
Inteiros e números reais são armazenados usando 64 bits por padrão, é por isso que eles têm o sufixo `64` no nome do tipo.
47
-
Se você precisar de mais ou menos precisão, existem os tipos `Int8` ou `Int128`, por exemplo, nos quais um maior número significa uma maior significa mais precisão.
47
+
Se você precisar de mais ou menos precisão, existem os tipos `Int8` ou `Int128`, por exemplo, nos quais um maior número significa uma maior precisão.
48
48
Na maioria das vezes, isso não será um problema, então você pode simplesmente seguir os padrões.
49
49
50
-
Criamos novas variáveis escrevendo o nome da variável à esquerda e seu valor à direita, e no meio usamos o `=`operador de atribuição.
50
+
Criamos novas variáveis escrevendo o nome da variável à esquerda e seu valor à direita, e no meio usamos o operador de atribuição`=`.
51
51
Por exemplo:
52
52
53
53
```jl
@@ -149,10 +149,10 @@ s = """
149
149
sco(s)
150
150
```
151
151
152
-
Algo importante de se notar com os `struct` é que não podemos alterar seus valores, uma vez que são instanciados.
152
+
Algo importante de se notar com os `struct` é que não podemos alterar seus valores uma vez que são instanciados.
153
153
Podemos resolver isso com `mutable struct`.
154
154
Além disso, observe que objetos mutáveis geralmente serão mais lentos e mais propensos a erros.
155
-
Sempre que possível, faça que tudo seja *imutável*.
155
+
Sempre que possível, faça com que tudo seja *imutável*.
156
156
Vamos criar uma `mutable struct`.
157
157
158
158
```jl
@@ -210,12 +210,12 @@ Com relação à comparação numérica, Julia tem três tipos principais de com
210
210
1.**Igualdade**: ou algo é *igual* ou *não igual* em relação a outro
211
211
* == "igual"
212
212
* != ou ≠ "não igual"
213
-
1.**Menos que**: ou algo é *menos que* ou *menos que ou igual a*
214
-
* < "menos que"
215
-
* <= ou ≤ "menos que ou igual a"
216
-
1.**Maior que**: ou algo é *maior que* ou *maior que ou igual a*
213
+
1.**Menor que**: ou algo é *menor que* ou *menor ou igual a*
214
+
* < "menor que"
215
+
* <= ou ≤ "menor ou igual a"
216
+
1.**Maior que**: ou algo é *maior que* ou *maior ou igual a*
217
217
*\> "maior que"
218
-
*\>= ou ≥ "maior que ou igual a"
218
+
*\>= ou ≥ "maior ou igual a"
219
219
220
220
Aqui temos alguns exemplos:
221
221
@@ -443,7 +443,7 @@ s = """
443
443
scob(s)
444
444
```
445
445
446
-
#### Funções anônimas {#sec:function_anonymous}
446
+
#### Funções Anônimas {#sec:function_anonymous}
447
447
448
448
Muitas vezes não nos importamos com o nome da função e queremos criar uma rapidamente.
449
449
O que precisamos é das **funções anônimas**.
@@ -566,7 +566,7 @@ Aqui, precisamos avisar Julia que o `n` dentro do laço `while` está no escopo
566
566
567
567
Por fim, também usamos o operador `+=` que é uma boa abreviatura para `n = n + 1`.
568
568
569
-
## Estruturas nativas de dados {#sec:data_structures}
569
+
## Estruturas Nativas de Dados {#sec:data_structures}
570
570
571
571
Julia possui diversas estruturas de dados nativas.
572
572
Elas são abstrações de dados que representam alguma forma de dado estruturado.
@@ -898,7 +898,7 @@ Ou ainda, mais do que dois argumentos:
898
898
scob("map((x, y, z) -> x^y + z, 2, 3, 1)")
899
899
```
900
900
901
-
### Tupla nomeada {#sec:namedtuple}
901
+
### Tupla Nomeada {#sec:namedtuple}
902
902
903
903
Às vezes, você deseja nomear os valores contidos nas tuplas.
904
904
É aí que entram as **tuplas nomeadas**.
@@ -963,7 +963,7 @@ sco("typeof(1.0:10.0)")
963
963
```
964
964
965
965
Às vezes, queremos mudar o comportamento padrão do incremento do intervalo.
966
-
Podemos fazer isso adicionando um incremento específico por meio da sintaxe do range `start:step:stop`.
966
+
Podemos fazer isso adicionando um incremento específico por meio da sintaxe da range `start:step:stop`.
967
967
Por exemplo, suponha que queremos um range de `Float64` que vá de 0 a 1 com passos do tamanho de 0.2:
968
968
969
969
```jl
@@ -982,19 +982,19 @@ Já que estamos falando de arrays, vamos conversar sobre eles.
982
982
### Array {#sec:array}
983
983
984
984
Na sua forma mais básica, **arrays** contém múltiplos objetos.
985
-
Por exemplo, eles podem armazenar múltiplos números em uma dimensão:
985
+
Por exemplo, elas podem armazenar múltiplos números em uma dimensão:
986
986
987
987
```jl
988
988
sco("myarray = [1, 2, 3]")
989
989
```
990
990
991
-
Na maioria das vezes você quer ter **arrays de tipo único para evitar problemas de performance**, mas observe que eles também podem conter objetos de diferentes tipos:
991
+
Na maioria das vezes você quer ter **arrays de tipo único para evitar problemas de performance**, mas observe que elas também podem conter objetos de diferentes tipos:
Eles são o "pão com manteiga" da ciência de dados, porque as arrays são o que está por trás da maior parte do fluxo de trabalho em **manipulação de dados** e **visualização de dados**.
997
+
Elas são o "pão com manteiga" da ciência de dados, porque as arrays são o que está por trás da maior parte do fluxo de trabalho em **manipulação de dados** e **visualização de dados**.
998
998
999
999
Portanto, **arrays são uma estrutura de dados essencial**.
1000
1000
@@ -1006,7 +1006,7 @@ Existem vários, mas vamos nos concentrar nos dois mais usados em ciência de da
1006
1006
*`Vector{T}`: array **unidimensional**. Escrita alternativa para `Array{T, 1}`.
1007
1007
*`Matrix{T}`: array**bidimensional**. Escrita alternativa para `Array{T, 2}`.
1008
1008
1009
-
Observe aqui que `T` é o tipo do array subjacente.
1009
+
Observe aqui que `T` é o tipo da array subjacente.
1010
1010
Então, por exemplo, `Vector{Int64}` é um `Vector` no qual todos os elementos são `Int64`, e `Matrix{AbstractFloat}` é uma `Matrix` em que todos os elementos são subtipos de `AbstractFloat`.
1011
1011
1012
1012
Na maioria das vezes, especialmente ao lidar com dados tabulares, estamos usando arrays unidimensionais ou bidimensionais.
@@ -1043,7 +1043,7 @@ s = """
1043
1043
sco(s)
1044
1044
```
1045
1045
1046
-
Nós também temos algumas **açúcares sintáticos** para os elementos mais comuns na construção de arrays:
1046
+
Nós também temos algumas **apelidos sintáticos** para os elementos mais comuns na construção de arrays:
1047
1047
1048
1048
*`zeros` para todos os elementos inicializados em zero.
1049
1049
Observe que o tipo padrão é `Float64` que pode ser alterado se necessário:
@@ -1186,7 +1186,7 @@ sco(s)
1186
1186
```
1187
1187
1188
1188
Finalmente, também podemos criar arrays com **funções de concatenação**.
1189
-
Concatenação é um termo padrão em programação e significa "para acorrentar juntos".
1189
+
Concatenação é um termo padrão em programação e significa "acorrentar juntos".
1190
1190
Por exemplo, podemos concatenar strings com "aa" e "bb" para conseguir "aabb":
1191
1191
1192
1192
```jl
@@ -1382,7 +1382,7 @@ s = """
1382
1382
sco(s)
1383
1383
```
1384
1384
1385
-
Você pode convertê-lo de volta em um vetor especificando uma tupla com apenas uma dimensão como o segundo argumento:
1385
+
Você pode convertê-la de volta em um vetor especificando uma tupla com apenas uma dimensão como o segundo argumento:
1386
1386
1387
1387
```jl
1388
1388
sco("reshape(tree_two_matrix, (6, ))")
@@ -1428,7 +1428,7 @@ Além disso, `map` funciona com fatiamento:
1428
1428
sco("map(x -> x + 100, my_example_matrix[:, 3])")
1429
1429
```
1430
1430
1431
-
Finalmente, às vezes, e especialmente ao lidar com dados tabulares, queremos aplicar uma **função sobre todos os elementos em uma dimensão específica de um array**.
1431
+
Finalmente, às vezes, e especialmente ao lidar com dados tabulares, queremos aplicar uma **função sobre todos os elementos em uma dimensão específica de uma array**.
1432
1432
Isso pode ser feito com a função `mapslices`.
1433
1433
Parecido com `map`, o primeiro argumento é a função e o segundo argumento é a array.
1434
1434
A única mudança é que precisamos especificar o argumento `dims` para sinalizar em qual dimensão queremos transformar os elementos.
@@ -1558,13 +1558,13 @@ indexes
1558
1558
1559
1559
Muitas vezes é melhor usar funções especializadas para esses loops:
1560
1560
1561
-
*`eachcol`: itera sobre um array coluna a coluna
1561
+
*`eachcol`: itera sobre uma array coluna a coluna
1562
1562
1563
1563
```jl
1564
1564
sco("first(eachcol(column_major))")
1565
1565
```
1566
1566
1567
-
*`eachrow`: itera sobre um array linha a linha
1567
+
*`eachrow`: itera sobre uma array linha a linha
1568
1568
1569
1569
```jl
1570
1570
sco("first(eachrow(column_major))")
@@ -1773,7 +1773,7 @@ Também funciona para ranges:
1773
1773
scob("add_elements(1:3...)")
1774
1774
```
1775
1775
1776
-
## Sistema de arquivo {#sec:filesystem}
1776
+
## Sistema de Arquivos {#sec:filesystem}
1777
1777
1778
1778
Em ciência de dados, a maioria dos projetos é realizada em um esforço colaborativo.
1779
1779
Compartilhamos código, dados, tabelas, figuras e assim por diante.
@@ -1855,7 +1855,7 @@ Para começar, vamos carregar o módulo `Dates`:
1855
1855
using Dates
1856
1856
```
1857
1857
1858
-
#### Tipo`Date` e `DateTime` {#sec:dates_types}
1858
+
#### Tipos`Date` e `DateTime` {#sec:dates_types}
1859
1859
1860
1860
O módulo de biblioteca padrão `Dates` tem **dois tipos para trabalhar com datas**:
Você pode encontrar mais informações sobre como especificar diferentes formatos de data na [documentação `Dates`' de Julia](https://docs.julialang.org/en/v1/stdlib/Dates/#Dates.DateFormat).
1955
1955
Não se preocupe se você tiver que revisitá-lo o tempo todo, nós mesmos fazemos isso ao trabalhar com datas e timestamps.
1956
1956
1957
-
De acordo com a [documentação `Dates`' de Julia](https://docs.julialang.org/en/v1/stdlib/Dates/#Constructors), usar o `Date(date_string, format_string)` método é satisfatório se ele for chamado apenas algumas vezes.
1957
+
De acordo com a [documentação `Dates`' de Julia](https://docs.julialang.org/en/v1/stdlib/Dates/#Constructors), usar o método `Date(date_string, format_string)` é satisfatório se ele for chamado apenas algumas vezes.
1958
1958
Se houver muitas strings de data formatadas de forma semelhante para analisar, no entanto, é muito mais eficiente criar primeiro um tipo `DateFormat`, e, em seguida, o passar em vez de uma string de formato bruto.
1959
1959
Então, nosso exemplo anterior se torna:
1960
1960
@@ -1972,7 +1972,7 @@ Como alternativa, sem perda de desempenho, você pode usar o prefixo de string l
1972
1972
sco("""Date("19870913", dateformat"yyyymmdd")""")
1973
1973
```
1974
1974
1975
-
#### Extraindo informações de data {#sec:dates_information}
1975
+
#### Extraindo Informações de Data {#sec:dates_information}
1976
1976
1977
1977
É fácil **extrair as informações desejadas dos objetos `Date` e` DateTime`**.
1978
1978
Primeiro, vamos criar uma instância de uma data muito especial:
@@ -2030,7 +2030,7 @@ Sim, José nasceu no segundo domingo de setembro.
2030
2030
> Use o `filter` no `dayofweek(your_date) <= 5`.
2031
2031
> Para o dia útil, você pode verificar o pacote [`BusinessDays.jl`](https://github.com/JuliaFinance/BusinessDays.jl).
2032
2032
2033
-
#### Operações de data {#sec:dates_operations}
2033
+
#### Operações de Data {#sec:dates_operations}
2034
2034
2035
2035
Podemos realizar **operações** em instâncias de `Dates`.
2036
2036
Por exemplo, podemos adicionar dias a uma instância `Date` ou `DateTime`.
0 commit comments