├── .gitattributes
├── .github
└── workflows
│ └── greetings.yml
├── .gitignore
├── License
├── README.md
├── parte_1_introducao_python
├── README.md
├── condicional_e_lacos
│ ├── README.md
│ └── res_exercicios_condicional.py
├── dicionarios
│ └── README.md
├── funcoes
│ └── README.md
├── lacos
│ ├── README.md
│ └── res_exercicios.py
├── parte_1_projeto_1
│ ├── helper.py
│ └── projeto_01.ipynb
├── parte_1_projeto_2
│ ├── AppleStore.csv
│ ├── Projeto02.ipynb
│ └── googleplaystore.csv
└── variaveis.md
├── parte_2_analise_dados
├── README.md
├── exemplo01.ipynb
├── exemplo02.ipynb
├── exempĺo03.ipynb
├── functions_numpy.ipynb
├── matplotlib.md
├── numpy.md
├── pandas.md
├── projeto_02
│ ├── README.md
│ ├── autos.csv
│ └── projeto2.ipynb
├── projeto_3
│ ├── Metro_Interstate_Traffic_Volume.csv
│ ├── README.md
│ └── projeto3.ipynb
└── pyploy.ipynb
└── parte_3_machine_learning
├── Aula06_Machine_Learning.ipynb
├── README.md
├── figuras
├── fig1.png
└── fig2.png
├── hypothyroid.csv
└── projeto_04
├── README.md
├── imports-85.data
└── projeto04.ipynb
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.ipynb linguist-language=Python
--------------------------------------------------------------------------------
/.github/workflows/greetings.yml:
--------------------------------------------------------------------------------
1 | name: Greetings
2 |
3 | on: [pull_request_target, issues]
4 |
5 | jobs:
6 | greeting:
7 | runs-on: ubuntu-latest
8 | permissions:
9 | issues: write
10 | pull-requests: write
11 | steps:
12 | - uses: actions/first-interaction@v1
13 | with:
14 | repo-token: ${{ secrets.GITHUB_TOKEN }}
15 | issue-message: "Issue opened. Thanks!"
16 | pr-message: "Pull request opened. Thanks!"
17 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Ignore all files with the specified extension.
2 | # Scope is all repo folders.
3 | *.json
4 | *.ini
5 |
6 | # Byte-compiled / optimized / DLL files
7 | __pycache__/
8 | .__pycache__/
9 | *.py[cod]
10 | *$py.class
11 | __pypackages__/
12 |
13 | # Jupyter Notebook
14 | .ipynb_checkpoints
15 |
16 |
17 | # Distribution / packaging
18 | .Python
19 | build/
20 | develop-eggs/
21 | dist/
22 | downloads/
23 | eggs/
24 | .eggs/
25 | lib/
26 | lib64/
27 | parts/
28 | sdist/
29 | var/
30 | wheels/
31 | share/python-wheels/
32 | *.egg-info/
33 | .installed.cfg
34 | *.egg
35 | MANIFEST
36 |
37 |
38 | # IPython
39 | profile_default/
40 | ipython_config.py
41 |
42 | # Environments
43 | .env
44 | .venv
45 | env/
46 | venv/
47 | ENV/
48 | env.bak/
49 | venv.bak/
50 | cilab/
51 |
52 |
53 | ### VisualStudioCode ###
54 | .vscode/*
55 | .vscode/settings.json
56 | .vscode/tasks.json
57 | .vscode/launch.json
58 | .vscode/extensions.json
59 | *.code-workspace
60 |
61 | ### VisualStudioCode Patch ###
62 | # Ignore all local history of files
63 | .history
--------------------------------------------------------------------------------
/License:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 CILab
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Introdução a _machine learning_ com Python 3 🤖
2 |
3 | ---
4 |
5 |
6 | ### [Parte 1: Introdução a Python](https://github.com/cilab-ufersa/introduction_machine_learning/tree/main/parte_1_introducao_python) 💻
7 |
8 | ### [Parte 2: Análise e visualização de dados](https://github.com/cilab-ufersa/introduction_machine_learning/tree/main/parte_2_analise_dados) 📈
9 |
10 | ### [Parte 3: Introdução a _machine learning_](https://github.com/cilab-ufersa/introduction_machine_learning/tree/main/parte_3_machine_learning) 🧠
11 |
12 | ### Visite nossa Wiki 📚
13 |
14 | - [Wiki - Primeiros passos com Python](https://github.com/cilab-ufersa/introduction_machine_learning/wiki/Primeiros-passos-com-Python)
15 | - [Google Colab](https://github.com/cilab-ufersa/introduction_machine_learning/wiki/Google-Colab) - Ambiente para desenvolvimento
16 |
17 | ### Sites de _datasets_ 📊
18 |
19 | - [Kaggle](https://www.kaggle.com/)
20 | - [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/index.php)
21 | - [Google Dataset Search](https://datasetsearch.research.google.com/)
22 |
23 | ### Livros 📚
24 |
25 | - [Python para análise de dados](https://www.amazon.com.br/Python-An%C3%A1lise-Dados-Wes-McKinney/dp/8575224028)
26 | - [Python para ciência de dados](https://www.amazon.com.br/Python-Ci%C3%AAncia-Dados-Wes-McKinney/dp/8575224620)
27 | - [Python para análise de dados: manipulação, visualização e aprendizado de máquina](https://www.amazon.com.br/Python-An%C3%A1lise-Dados-Manipula%C3%A7%C3%A3o-Aprendizado/dp/8575225032)
28 | - [Machine Learning: uma abordagem de aprendizado de máquina](https://www.amazon.com.br/Machine-Learning-Aprendizado-Abordagem-Portuguese/dp/8575224736)
29 |
30 |
31 |
32 | ---
33 |
34 |
35 |
36 |
37 | UFERSA - Campus Pau dos Ferros
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/parte_1_introducao_python/README.md:
--------------------------------------------------------------------------------
1 | # Introdução a linguagem Python
2 | ---
3 | Python é uma linguagem de programação de alto nível, interpretada, de script, imperativa, orientada a objetos, funcional, de tipagem dinâmica e forte. Foi lançada por Guido van Rossum em 1991.
4 |
5 | Python é uma linguagem de programação interpretada, ou seja, não é necessário compilar o código fonte para que ele possa ser executado. O interpretador Python é capaz de interpretar e executar o código fonte em tempo de execução.
6 |
7 | Python é uma linguagem de programação orientada a objetos, ou seja, permite a criação de classes e objetos, além de utilizar herança múltipla.
8 |
9 | Python é uma linguagem de programação funcional, ou seja, permite a utilização de funções de primeira classe, funções anônimas e funções de alta ordem.
10 |
11 |
12 | ---
13 | ### 1. [Variáveis e tipos de dados](https://github.com/cilab-ufersa/introduction_machine_learning/blob/main/parte_1_introducao_python/variaveis.md)
14 | ### 2. [Condições](https://github.com/cilab-ufersa/introduction_machine_learning/tree/main/parte_1_introducao_python/condicional_e_lacos)
15 | ### 3. [Laços de Repetição](https://github.com/cilab-ufersa/introduction_machine_learning/tree/develop/parte_1_introducao_python/lacos)
16 | ### 4. [Dicionários](https://github.com/cilab-ufersa/introduction_machine_learning/tree/develop/parte_1_introducao_python/dicionarios)
17 | ### 5. [Funções](https://github.com/cilab-ufersa/introduction_machine_learning/tree/develop/parte_1_introducao_python/funcoes)
18 |
19 | ### 6. [Projeto 01 - Fuga das prisões ](https://github.com/cilab-ufersa/introduction_machine_learning/blob/main/parte_1_introducao_python/parte_1_projeto_1/projeto_01.ipynb)
20 |
--------------------------------------------------------------------------------
/parte_1_introducao_python/condicional_e_lacos/README.md:
--------------------------------------------------------------------------------
1 | # Condicional em Python
2 |
3 | Condicional é uma estrutura de controle que permite executar um bloco de código caso uma condição seja verdadeira.
4 |
5 | ## if
6 |
7 | O if é uma estrutura de controle que permite executar um bloco de código caso uma condição seja verdadeira.
8 |
9 | ```python
10 | if condicao:
11 | # bloco de código
12 | ```
13 |
14 | O bloco de código é executado caso a condição seja verdadeira. Caso contrário, o bloco de código não é executado.
15 |
16 | ```python
17 | if 2 > 1:
18 | print('2 é maior que 1')
19 | ```
20 |
21 | ## else
22 |
23 | O else é uma estrutura de controle que permite executar um bloco de código caso uma condição seja falsa.
24 |
25 | ```python
26 | if condicao:
27 | # bloco de código
28 | else:
29 | # bloco de código
30 | ```
31 |
32 | O bloco de código do else é executado caso a condição seja falsa. Caso contrário, o bloco de código do else não é executado.
33 |
34 | ```python
35 |
36 | if 2 < 1:
37 | print('2 é menor que 1')
38 | else:
39 | print('2 é maior que 1')
40 | ```
41 |
42 | ## elif
43 |
44 | O elif é uma estrutura de controle que permite executar um bloco de código caso uma condição seja verdadeira. O elif é uma abreviação de else if.
45 |
46 | ```python
47 |
48 | if condicao:
49 | # bloco de código
50 | elif condicao:
51 | # bloco de código
52 | else:
53 | # bloco de código
54 | ```
55 |
56 | O bloco de código do elif é executado caso a condição seja verdadeira. Caso contrário, o bloco de código do elif não é executado.
57 |
58 | ```python
59 | if 2 < 1:
60 | print('2 é menor que 1')
61 | elif 2 > 1:
62 | print('2 é maior que 1')
63 | else:
64 | print('2 é igual a 1')
65 | ```
66 |
67 | ## Operadores de comparação
68 |
69 | Os operadores de comparação são utilizados para comparar valores. Os operadores de comparação são:
70 |
71 | | Operador | Descrição |
72 | |----------|-----------|
73 | | == | Igual a |
74 | | != | Diferente de |
75 | | > | Maior que |
76 | | < | Menor que |
77 | | >= | Maior ou igual a |
78 | | <= | Menor ou igual a |
79 |
80 | ```python
81 | print(2 == 2) # True
82 | print(2 != 2) # False
83 | print(2 > 2) # False
84 | print(2 < 2) # False
85 | print(2 >= 2) # True
86 | print(2 <= 2) # True
87 | ```
88 |
89 | ## Operadores lógicos
90 |
91 | Os operadores lógicos são utilizados para combinar condições. Os operadores lógicos são:
92 |
93 | | Operador | Descrição |
94 | |----------|-----------|
95 | | and | E |
96 | | or | Ou |
97 | | not | Não |
98 |
99 | ```python
100 | print(2 == 2 and 2 > 1) # True
101 | print(2 == 2 or 2 > 1) # True
102 | print(not 2 == 2) # False
103 | ```
104 |
105 | ## Operadores de identidade
106 |
107 | Os operadores de identidade são utilizados para comparar objetos. Os operadores de identidade são:
108 |
109 | | Operador | Descrição |
110 | |----------|-----------|
111 | | is | É |
112 | | is not | Não é |
113 |
114 | ```python
115 | print(2 is 2) # True
116 | print(2 is not 2) # False
117 | ```
118 |
119 | ## Operadores de associação
120 |
121 | Os operadores de associação são utilizados para verificar se um valor faz parte de um objeto. Os operadores de associação são:
122 |
123 | | Operador | Descrição |
124 | |----------|-----------|
125 | | in | Está em |
126 | | not in | Não está em |
127 |
128 | ```python
129 | lista = [1, 2, 3]
130 | print(1 in lista) # True
131 | print(1 not in lista) # False
132 | ```
133 |
134 | ## Exercícios
135 |
136 | 1. Escreva um programa que leia um número inteiro e mostre na tela se ele é par ou ímpar.
137 |
138 | 2. Escreva um programa que leia um número inteiro e mostre na tela se ele é positivo ou negativo.
139 |
140 | 3. Escreva um programa que leia um número inteiro e mostre na tela se ele é par ou ímpar e se é positivo ou negativo.
141 |
142 | [Resposta dos exercícios ](https://github.com/cilab-ufersa/introduction_machine_learning/blob/main/parte_1_introducao_python/condicional_e_lacos/res_exercicios_condicional.py)
143 |
--------------------------------------------------------------------------------
/parte_1_introducao_python/condicional_e_lacos/res_exercicios_condicional.py:
--------------------------------------------------------------------------------
1 | # Escreva um programa que leia um número inteiro e mostre na tela se ele é par ou ímpar
2 |
3 | numero = int(input('Digite um número: '))
4 | if numero % 2 == 0:
5 | print('O número {} é par'.format(numero))
6 | else:
7 | print('O número {} é ímpar'.format(numero))
8 |
9 |
10 | # Escreva um programa que leia um número inteiro e mostre na tela se ele é positivo ou negativo.
11 |
12 | numero = int(input('Digite um número: '))
13 | if numero > 0:
14 | print('O número {} é positivo'.format(numero))
15 | else:
16 | print('O número {} é negativo'.format(numero))
17 |
18 |
19 | # Escreva um programa que leia um número inteiro e mostre na tela se ele é par ou ímpar e se é positivo ou negativo.
20 |
21 |
22 | numero = int(input('Digite um número: '))
23 | if numero % 2 == 0:
24 | print('O número {} é par'.format(numero))
25 | else:
26 | print('O número {} é ímpar'.format(numero))
27 |
--------------------------------------------------------------------------------
/parte_1_introducao_python/dicionarios/README.md:
--------------------------------------------------------------------------------
1 | # Dicionários em Python
2 |
3 | Dicionários são estruturas de dados que permitem armazenar pares de chave e valor.
4 |
5 | ```python
6 | dicionario = {
7 | 'chave1': 'valor1',
8 | 'chave2': 'valor2',
9 | 'chave3': 'valor3',
10 | }
11 | ```
12 |
13 | O dicionário acima possui três pares de chave e valor. A chave é uma string e o valor pode ser qualquer tipo de dado.
14 |
15 | ```python
16 | dicionario = {
17 | 'chave1': 'valor1',
18 | 'chave2': 2,
19 | 'chave3': 3.0,
20 | }
21 | ```
22 |
23 | ## Acessando valores
24 |
25 | Para acessar um valor de um dicionário, basta informar a chave do valor desejado.
26 |
27 | ```python
28 | dicionario = {
29 | 'chave1': 'valor1',
30 | 'chave2': 2,
31 | 'chave3': 3.0,
32 | }
33 |
34 | print(dicionario['chave1'])
35 | print(dicionario['chave2'])
36 | print(dicionario['chave3'])
37 | ```
38 |
39 | ## Adicionando valores
40 |
41 | Para adicionar um valor a um dicionário, basta informar a chave e o valor desejado.
42 |
43 | ```python
44 | dicionario = {
45 | 'chave1': 'valor1',
46 | 'chave2': 2,
47 | 'chave3': 3.0,
48 | }
49 |
50 | dicionario['chave4'] = 'valor4'
51 | dicionario['chave5'] = 5
52 | dicionario['chave6'] = 6.0
53 |
54 | print(dicionario)
55 | ```
56 |
57 | ## Removendo valores
58 |
59 | Para remover um valor de um dicionário, basta utilizar a função `pop()`.
60 |
61 | ```python
62 | dicionario = {
63 | 'chave1': 'valor1',
64 | 'chave2': 2,
65 | 'chave3': 3.0,
66 | }
67 |
68 | dicionario.pop('chave1')
69 |
70 | print(dicionario)
71 | ```
72 |
73 | ## Métodos
74 |
75 | ### keys()
76 |
77 | O método `keys()` retorna uma lista com as chaves de um dicionário.
78 |
79 | ```python
80 | dicionario = {
81 | 'chave1': 'valor1',
82 | 'chave2': 2,
83 | 'chave3': 3.0,
84 | }
85 |
86 | print(dicionario.keys())
87 | ```
88 |
89 | ### values()
90 |
91 | O método `values()` retorna uma lista com os valores de um dicionário.
92 |
93 | ```python
94 | dicionario = {
95 | 'chave1': 'valor1',
96 | 'chave2': 2,
97 | 'chave3': 3.0,
98 | }
99 |
100 | print(dicionario.values())
101 | ```
102 |
103 | ### items()
104 |
105 | O método `items()` retorna uma lista com os pares de chave e valor de um dicionário.
106 |
107 | ```python
108 | dicionario = {
109 | 'chave1': 'valor1',
110 | 'chave2': 2,
111 | 'chave3': 3.0,
112 | }
113 |
114 | print(dicionario.items())
115 | ```
116 |
117 | ### clear()
118 |
119 | O método `clear()` remove todos os pares de chave e valor de um dicionário.
120 |
121 | ```python
122 | dicionario = {
123 | 'chave1': 'valor1',
124 | 'chave2': 2,
125 | 'chave3': 3.0,
126 | }
127 |
128 | dicionario.clear()
129 |
130 | print(dicionario)
131 | ```
132 |
133 | ### copy()
134 |
135 | O método `copy()` retorna uma cópia de um dicionário.
136 |
137 | ```python
138 | dicionario = {
139 | 'chave1': 'valor1',
140 | 'chave2': 2,
141 | 'chave3': 3.0,
142 | }
143 |
144 | dicionario_copia = dicionario.copy()
145 |
146 | print(dicionario_copia)
147 | ```
148 |
149 | ### fromkeys()
150 |
151 | O método `fromkeys()` cria um dicionário com as chaves informadas e o valor informado.
152 |
153 | ```python
154 | chaves = ['chave1', 'chave2', 'chave3']
155 |
156 | dicionario = dict.fromkeys(chaves, 'valor')
157 |
158 | print(dicionario)
159 | ```
160 |
161 | ### get()
162 |
163 | O método `get()` retorna o valor de uma chave informada.
164 |
165 | ```python
166 | dicionario = {
167 | 'chave1': 'valor1',
168 | 'chave2': 2,
169 | 'chave3': 3.0,
170 | }
171 |
172 | print(dicionario.get('chave1'))
173 | ```
174 |
175 | ### popitem()
176 |
177 | O método `popitem()` remove o último par de chave e valor de um dicionário.
178 |
179 | ```python
180 | dicionario = {
181 | 'chave1': 'valor1',
182 | 'chave2': 2,
183 | 'chave3': 3.0,
184 | }
185 |
186 | dicionario.popitem()
187 |
188 | print(dicionario)
189 | ```
190 |
191 | ### setdefault()
192 |
193 | O método `setdefault()` retorna o valor de uma chave informada. Caso a chave não exista, o valor informado é adicionado ao dicionário.
194 |
195 | ```python
196 | dicionario = {
197 | 'chave1': 'valor1',
198 | 'chave2': 2,
199 | 'chave3': 3.0,
200 | }
201 |
202 | print(dicionario.setdefault('chave1', 'valor'))
203 | print(dicionario.setdefault('chave4', 'valor'))
204 | ```
205 |
206 | ### update()
207 |
208 | O método `update()` atualiza um dicionário com os pares de chave e valor de outro dicionário.
209 |
210 | ```python
211 |
212 | dicionario1 = {
213 | 'chave1': 'valor1',
214 | 'chave2': 2,
215 | 'chave3': 3.0,
216 | }
217 |
218 | dicionario2 = {
219 | 'chave4': 'valor4',
220 | 'chave5': 5,
221 | 'chave6': 6.0,
222 | }
223 |
224 | dicionario1.update(dicionario2)
225 |
226 | print(dicionario1)
227 | ```
228 |
229 | ## Exercícios
230 |
231 | 1. Crie um dicionário com 5 pares de chave e valor. Utilize o método `keys()` para exibir as chaves do dicionário. Utilize o método `values()` para exibir os valores do dicionário. Utilize o método `items()` para exibir os pares de chave e valor do dicionário. Utilize o método `clear()` para remover todos os pares de chave e valor do dicionário. Utilize o método `copy()` para criar uma cópia do dicionário. Utilize o método `fromkeys()` para criar um dicionário com as chaves informadas e o valor informado. Utilize o método `get()` para exibir o valor de uma chave informada. Utilize o método `popitem()` para remover o último par de chave e valor do dicionário. Utilize o método `setdefault()` para exibir o valor de uma chave informada. Caso a chave não exista, o valor informado é adicionado ao dicionário. Utilize o método `update()` para atualizar o dicionário com os pares de chave e valor de outro dicionário.
232 |
233 | 2. Crie um dicionário com 5 pares de chave e valor. Utilize o método `popitem()` para remover um par de chave e valor do dicionário.
234 |
--------------------------------------------------------------------------------
/parte_1_introducao_python/funcoes/README.md:
--------------------------------------------------------------------------------
1 | # Definição de Funções com Python 3
2 |
3 | ## Definição de Funções
4 |
5 | Uma função é um bloco de código que executa uma tarefa específica. Uma função é definida usando a palavra-chave def. A sintaxe é a seguinte:
6 |
7 | ```python
8 | def nome_da_funcao():
9 | # código da função
10 | ```
11 |
12 | As funções são importantes para a reutilização de código. Por exemplo, se você precisar executar a mesma tarefa várias vezes, você pode definir uma função para executar essa tarefa e, em seguida, chamar a função sempre que você precisar executar a tarefa.
13 |
14 | ## Chamando uma Função
15 |
16 | Para chamar uma função, digite o nome da função seguido de parênteses:
17 |
18 | ```python
19 | nome_da_funcao()
20 | ```
21 |
22 | ## Argumentos
23 |
24 | As funções podem receber argumentos. Os argumentos são especificados após o nome da função, dentro dos parênteses. Você pode adicionar quantos argumentos quiser, basta separá-los com uma vírgula.
25 |
26 | Os argumentos são frequentemente abreviados como args.
27 |
28 | O exemplo abaixo tem uma função com um argumento (fname). Quando a função é chamada, passamos um argumento, ou valor, que é usado dentro da função para imprimir o nome completo:
29 |
30 | ```python
31 | def nome_completo(fname):
32 | print(fname + " Santos")
33 |
34 | nome_completo("João")
35 | nome_completo("Maria")
36 | nome_completo("José")
37 | ```
38 |
39 | ## Número Arbitrário de Argumentos
40 |
41 | Se você não souber quantos argumentos que serão passados para sua função, adicione um * antes do nome do parâmetro na definição da função.
42 |
43 | Isso fará com que o parâmetro receba uma tupla de argumentos e você pode acessar os itens de acordo com a necessidade.
44 |
45 | ```python
46 | def nome_completo(*nomes):
47 | print("O nome completo é: " + nomes[0] + " " + nomes[1])
48 |
49 | nome_completo("João", "Santos")
50 | nome_completo("Maria", "Santos")
51 | nome_completo("José", "Santos")
52 | ```
53 |
54 | ## Parâmetros de Palavra-chave
55 |
56 | Se você quiser que uma função receba um número fixo de argumentos, adicione dois pontos (:) após o parâmetro e, em seguida, defina os valores padrão para os parâmetros. Isso fará com que o parâmetro seja opcional.
57 |
58 | ```python
59 | def nome_completo(nome, sobrenome = "Santos"):
60 | print(nome + " " + sobrenome)
61 |
62 | nome_completo("João")
63 | nome_completo("Maria")
64 | nome_completo("José")
65 | ```
66 |
67 | ## Retornando Valores
68 |
69 | Para deixar uma função retornar um valor, use a instrução return:
70 |
71 | ```python
72 | def soma(x, y):
73 | return x + y
74 |
75 | print(soma(5, 3))
76 | ```
77 |
78 | ## Recursão
79 |
80 | Uma função pode chamar a si mesma. Isso é chamado de recursão.
81 |
82 | A função abaixo imprime uma sequência de números, começando em 0, e terminando em 10:
83 |
84 | ```python
85 | def recursao(i):
86 | if (i < 10):
87 | print(i)
88 | recursao(i + 1)
89 |
90 | recursao(0)
91 | ```
92 |
93 | ## Exemplo: Resolvendo o Fatorial com recursão
94 |
95 | O fatorial de um número é o produto de todos os inteiros inferiores a e incluindo ele mesmo. O fatorial de 5 é escrito como 5! e é igual a 1 * 2 * 3 * 4 * 5 = 120. Escreva uma função que calcule o fatorial de um número.
96 |
97 | ```python
98 | def fatorial(n):
99 | if n == 1:
100 | return 1
101 | else:
102 | return n * fatorial(n - 1)
103 |
104 | print(fatorial(5))
105 | ```
106 |
107 | ## Exemplo: Resolvendo o Fibonacci com recursão
108 |
109 | O número de Fibonacci é uma sequência de números inteiros, começando normalmente por 0 e 1, na qual, cada termo subsequente corresponde à soma dos dois anteriores. Escreva uma função que calcule o n-ésimo número de Fibonacci.
110 |
111 | ```python
112 |
113 | def fibonacci(n):
114 | if n <= 1:
115 | return n
116 | else:
117 | return(fibonacci(n-1) + fibonacci(n-2))
118 |
119 | print(fibonacci(9))
120 |
121 | ```
122 |
123 | ## Função Lambda
124 |
125 | Uma função lambda é uma pequena função anônima.
126 |
127 | Uma função lambda pode receber qualquer número de argumentos, mas pode ter apenas uma expressão.
128 |
129 | ```python
130 |
131 | x = lambda a : a + 10
132 | print(x(5))
133 |
134 | ```
135 |
136 | ## Função Map
137 |
138 | A função map() aplica uma função a todos os itens de um iterável.
139 |
140 | ```python
141 |
142 | def dobro(x):
143 | return x * 2
144 |
145 | valores = [1, 2, 3, 4, 5]
146 |
147 | valores_dobrados = map(dobro, valores)
148 |
149 | print(list(valores_dobrados))
150 |
151 | ```
152 |
153 | ## Função Filter
154 |
155 | A função filter() cria uma lista de elementos para os quais uma função retorna True.
156 |
157 | ```python
158 |
159 | def maior_que_5(x):
160 | if x > 5:
161 | return True
162 | else:
163 | return False
164 |
165 | valores = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
166 |
167 | valores_maiores_que_5 = filter(maior_que_5, valores)
168 |
169 | print(list(valores_maiores_que_5))
170 |
171 | ```
172 |
173 |
174 |
175 |
--------------------------------------------------------------------------------
/parte_1_introducao_python/lacos/README.md:
--------------------------------------------------------------------------------
1 | # Laços de repetição em Python
2 |
3 | Laços de repetição são estruturas de controle que permitem executar um bloco de código várias vezes. Existe dois tipos de laços de repetição em Python: **for** e **while**.
4 |
5 | ## while
6 |
7 | O while é uma estrutura de controle que permite executar um bloco de código enquanto uma condição for verdadeira. Sua sintaxe é:
8 |
9 |
10 | ```python
11 | while condicao:
12 | # bloco de código
13 | ```
14 |
15 | O bloco de código é executado enquanto a condição for verdadeira. Caso contrário, o bloco de código não é executado.
16 |
17 | Exemplo:
18 |
19 | ```python
20 | contador = 0
21 | while contador < 10:
22 | print(contador)
23 | contador += 1
24 | ```
25 |
26 | No exemplo acima, o bloco de código é executado enquanto o contador for menor que 10. A cada iteração, o contador é incrementado em 1.
27 |
28 | ## for
29 |
30 | O for é uma estrutura de controle que permite executar um bloco de código varias vezes. No exemplo a seguir, o laço for é executado para cada elemento de uma sequência.
31 |
32 | ```python
33 | for elemento in sequencia:
34 | # bloco de código
35 | ```
36 |
37 | O bloco de código é executado para cada elemento da sequência. Caso contrário, o bloco de código não é executado.
38 |
39 | Exemplo:
40 |
41 | ```python
42 | for numero in range(10):
43 | print(numero)
44 | ```
45 |
46 | No exemplo acima, o bloco de código é executado para cada elemento da sequência. A sequência é gerada pelo método range(). O método range() gera uma sequência de números inteiros. O método range() recebe como parâmetro a quantidade de numeros sequência. Portanto, range(10) gera os números de 0 a 9. Assim, o bloco de código é executado 10 vezes, em que cada iteração a variavel numero recebe um valor diferente, iniciando em 0 e terminando em 9.
47 |
48 | ## break
49 |
50 | O break é uma palavra-chave que permite interromper um laço de repetição.
51 |
52 | ```python
53 | while True:
54 | # bloco de código
55 | break
56 | ```
57 |
58 | O bloco de código é executado até que o break seja executado.
59 |
60 | ```python
61 | contador = 0
62 | while True:
63 | print(contador)
64 | contador += 1
65 | if contador == 10:
66 | break
67 | ```
68 |
69 | ## continue
70 |
71 | O continue é uma palavra-chave que permite interromper a execução do laço de repetição atual e continuar a execução do próximo laço de repetição.
72 |
73 | ```python
74 | while True:
75 | # bloco de código
76 | continue
77 | ```
78 |
79 | O bloco de código é executado até que o continue seja executado.
80 |
81 | ```python
82 | contador = 0
83 | while True:
84 | contador += 1
85 | if contador == 10:
86 | continue
87 | print(contador)
88 | if contador == 20:
89 | break
90 | ```
91 |
92 | ## else
93 |
94 | O else é uma estrutura de controle que permite executar um bloco de código caso um laço de repetição seja executado até o fim.
95 |
96 | ```python
97 | while condicao:
98 | # bloco de código
99 | else:
100 | # bloco de código
101 | ```
102 |
103 | O bloco de código do else é executado caso o laço de repetição seja executado até o fim. Caso contrário, o bloco de código do else não é executado.
104 |
105 | ```python
106 | contador = 0
107 | while contador < 10:
108 | print(contador)
109 | contador += 1
110 | else:
111 | print('Fim do laço de repetição')
112 | ```
113 |
114 | ## Exercícios
115 |
116 | 1. Escreva um programa que imprima os números de 1 a 10.
117 |
118 | 2. Escreva um programa que imprima os números de 10 a 1.
119 |
120 | 3. Escreva um programa que imprima os números pares de 1 a 10.
121 |
122 | 4. Escreva um programa que imprima os números ímpares de 1 a 10.
123 |
--------------------------------------------------------------------------------
/parte_1_introducao_python/lacos/res_exercicios.py:
--------------------------------------------------------------------------------
1 | # Escreva um programa que imprima os números de 1 a 10.
2 |
3 | numeros = range(1, 11)
4 |
5 | for numero in numeros:
6 | print(numero)
7 |
8 |
9 | # Escreva um programa que imprima os números de 10 a 1.
10 |
11 | numeros = range(10, 0, -1)
12 |
13 | for numero in numeros:
14 | print(numero)
15 |
16 |
17 | # Escreva um programa que imprima os números pares de 1 a 10.
18 |
19 | numeros = range(1, 11)
20 |
21 | for numero in numeros:
22 | if numero % 2 == 0:
23 | print(numero)
24 |
25 |
26 | # Escreva um programa que imprima os números ímpares de 1 a 10.
27 |
28 | numeros = range(1, 11)
29 |
30 | for numero in numeros:
31 | if numero % 2 != 0:
32 | print(numero)
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/parte_1_introducao_python/parte_1_projeto_1/helper.py:
--------------------------------------------------------------------------------
1 | import pandas as pd
2 | import re
3 | import matplotlib.pyplot as plt
4 | from IPython.core.display import display, HTML
5 |
6 | def data_from_url(url):
7 | df = pd.read_html(url)[1]
8 | lol = df.to_numpy().tolist()
9 | return lol
10 |
11 | def fetch_year(date_string):
12 | return int(re.findall("\d{4}", date_string)[0])
13 |
14 | def barplot(list_of_2_element_list):
15 | d = {ya[0]:ya[1] for ya in list_of_2_element_list}
16 | plt.figure(figsize=(9,15))
17 | axes = plt.axes()
18 | axes.get_xaxis().set_visible(False)
19 |
20 | spines = axes.spines
21 | spines['top'].set_visible(False)
22 | spines['right'].set_visible(False)
23 | spines['bottom'].set_visible(False)
24 | spines['left'].set_visible(False)
25 | ax = plt.barh(*zip(*d.items()), height=.5)
26 | plt.yticks(list(d.keys()), list(d.keys()))
27 | plt.xticks(range(4), range(4))
28 | rectangles = ax.patches
29 | for rectangle in rectangles:
30 | x_value = rectangle.get_width()
31 | y_value = rectangle.get_y() + rectangle.get_height() / 2
32 | space = 5
33 | ha = 'left'
34 | label = "{}".format(x_value)
35 | if x_value > 0:
36 | plt.annotate(
37 | label,
38 | (x_value, y_value),
39 | xytext=(space, 0),
40 | textcoords="offset points",
41 | va='center',
42 | ha=ha)
43 |
44 | axes.tick_params(tick1On=False)
45 | plt.show()
46 |
47 | def unique_countries(countries):
48 | s = pd.Series(countries)
49 | return list(s.unique())
50 |
51 | def display_no_index(df):
52 | display(HTML(df.to_html(index=False)))
53 |
54 | def print_pretty_table(countries_frequency):
55 | countries = df.Country.value_counts().index
56 | occurrences = df.Country.value_counts().values
57 | d = {"Country": countries, "Number of Occurrences": occurrences}
58 | display_no_index(pd.DataFrame(d))
59 |
60 | df = pd.read_html("https://en.wikipedia.org/wiki/List_of_helicopter_prison_escapes")[1]
61 | df = df[["Date", "Prison name", "Country", "Succeeded", "Escapee(s)"]]
--------------------------------------------------------------------------------
/parte_1_introducao_python/parte_1_projeto_1/projeto_01.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {
6 | "id": "ZHJEPvzxaXDI"
7 | },
8 | "source": [
9 | "# Projeto 01: Fuga da Prisão\n",
10 | "\n",
11 | "Vamos trabalhar com um conjunto de dados de fugas de prisões de helicóptero!"
12 | ]
13 | },
14 | {
15 | "cell_type": "markdown",
16 | "metadata": {
17 | "id": "xeuKMUX_aXDL"
18 | },
19 | "source": [
20 | "Começamos importando algumas funções auxiliares."
21 | ]
22 | },
23 | {
24 | "cell_type": "code",
25 | "execution_count": null,
26 | "metadata": {
27 | "id": "vMJVoMPpaXDR"
28 | },
29 | "outputs": [],
30 | "source": [
31 | "from helper import *"
32 | ]
33 | },
34 | {
35 | "cell_type": "markdown",
36 | "metadata": {
37 | "id": "WaS4LybdaXDT"
38 | },
39 | "source": [
40 | "## Parte 01: Obtendo os dados"
41 | ]
42 | },
43 | {
44 | "cell_type": "markdown",
45 | "metadata": {
46 | "id": "BgCX9h-KaXDU"
47 | },
48 | "source": [
49 | "\n",
50 | "Agora, vamos obter os dados da Lista de fugas de helicópteros da Wikipédia. [List of helicopter prison escapes](https://en.wikipedia.org/wiki/List_of_helicopter_prison_escapes) "
51 | ]
52 | },
53 | {
54 | "cell_type": "code",
55 | "execution_count": null,
56 | "metadata": {
57 | "id": "1mIAmtQwaXDW"
58 | },
59 | "outputs": [],
60 | "source": [
61 | "url = \"https://en.wikipedia.org/wiki/List_of_helicopter_prison_escapes\"\n",
62 | "data = data_from_url(url)"
63 | ]
64 | },
65 | {
66 | "cell_type": "markdown",
67 | "metadata": {
68 | "id": "6b4wRbnUaXDX"
69 | },
70 | "source": [
71 | "Vamos imprimir as três primeiras linhas."
72 | ]
73 | },
74 | {
75 | "cell_type": "code",
76 | "execution_count": null,
77 | "metadata": {
78 | "tags": [],
79 | "colab": {
80 | "base_uri": "https://localhost:8080/"
81 | },
82 | "id": "FQD2-El4aXDZ",
83 | "outputId": "1d5dbd1e-c29f-4dba-91c6-cc4da4acb1b2"
84 | },
85 | "outputs": [
86 | {
87 | "output_type": "stream",
88 | "name": "stdout",
89 | "text": [
90 | "['August 19, 1971', 'Santa Martha Acatitla', 'Mexico', 'Yes', 'Joel David Kaplan Carlos Antonio Contreras Castro', \"Joel David Kaplan was a New York businessman who had been arrested for murder in 1962 in Mexico City and was incarcerated at the Santa Martha Acatitla prison in the Iztapalapa borough of Mexico City. Joel's sister, Judy Kaplan, arranged the means to help Kaplan escape, and on August 19, 1971, a helicopter landed in the prison yard. The guards mistakenly thought this was an official visit. In two minutes, Kaplan and his cellmate Carlos Antonio Contreras, a Venezuelan counterfeiter, were able to board the craft and were piloted away, before any shots were fired.[9] Both men were flown to Texas and then different planes flew Kaplan to California and Castro to Guatemala.[3] The Mexican government never initiated extradition proceedings against Kaplan.[9] The escape is told in a book, The 10-Second Jailbreak: The Helicopter Escape of Joel David Kaplan.[4] It also inspired the 1975 action movie Breakout, which starred Charles Bronson and Robert Duvall.[9]\"]\n",
91 | "['October 31, 1973', 'Mountjoy Jail', 'Ireland', 'Yes', \"JB O'Hagan Seamus TwomeyKevin Mallon\", 'On October 31, 1973 an IRA member hijacked a helicopter and forced the pilot to land in the exercise yard of Dublin\\'s Mountjoy Jail\\'s D Wing at 3:40\\xa0p.m., October 31, 1973. Three members of the IRA were able to escape: JB O\\'Hagan, Seamus Twomey and Kevin Mallon. Another prisoner who also was in the prison was quoted as saying, \"One shamefaced screw apologised to the governor and said he thought it was the new Minister for Defence (Paddy Donegan) arriving. I told him it was our Minister of Defence leaving.\" The Mountjoy helicopter escape became Republican lore and was immortalized by \"The Helicopter Song\", which contains the lines \"It\\'s up like a bird and over the city. There\\'s three men a\\'missing I heard the warder say\".[1]']\n",
92 | "['May 24, 1978', 'United States Penitentiary, Marion', 'United States', 'No', 'Garrett Brock TrapnellMartin Joseph McNallyJames Kenneth Johnson', \"43-year-old Barbara Ann Oswald hijacked a Saint Louis-based charter helicopter and forced the pilot to land in the yard at USP Marion. While landing the aircraft, the pilot, Allen Barklage, who was a Vietnam War veteran, struggled with Oswald and managed to wrestle the gun away from her. Barklage then shot and killed Oswald, thwarting the escape.[10] A few months later Oswald's daughter hijacked TWA Flight 541 in an effort to free Trapnell.\"]\n"
93 | ]
94 | }
95 | ],
96 | "source": [
97 | "for row in data[:3]:\n",
98 | " print(row)"
99 | ]
100 | },
101 | {
102 | "cell_type": "markdown",
103 | "metadata": {
104 | "id": "mEwv2lmTaXDc"
105 | },
106 | "source": [
107 | "## Parte 02: Tratar os dados\n",
108 | "\n",
109 | "### Removendo os detalhes"
110 | ]
111 | },
112 | {
113 | "cell_type": "markdown",
114 | "metadata": {
115 | "id": "cY95FnFRaXDd"
116 | },
117 | "source": [
118 | "Inicializamos uma variável `index` com o valor de `0`. O objetivo dessa variável é nos ajudar a rastrear qual linha estamos modificando."
119 | ]
120 | },
121 | {
122 | "cell_type": "code",
123 | "execution_count": null,
124 | "metadata": {
125 | "id": "pqlE7euUaXDf"
126 | },
127 | "outputs": [],
128 | "source": [
129 | "index = 0\n",
130 | "for row in data:\n",
131 | " data[index] = row[:-1]\n",
132 | " index += 1"
133 | ]
134 | },
135 | {
136 | "cell_type": "code",
137 | "execution_count": null,
138 | "metadata": {
139 | "colab": {
140 | "base_uri": "https://localhost:8080/"
141 | },
142 | "id": "WUcqaBTOaXDi",
143 | "outputId": "6a6c2bb4-6499-48db-d3e9-758e88852746"
144 | },
145 | "outputs": [
146 | {
147 | "output_type": "stream",
148 | "name": "stdout",
149 | "text": [
150 | "[['August 19, 1971', 'Santa Martha Acatitla', 'Mexico', 'Yes', 'Joel David Kaplan Carlos Antonio Contreras Castro'], ['October 31, 1973', 'Mountjoy Jail', 'Ireland', 'Yes', \"JB O'Hagan Seamus TwomeyKevin Mallon\"], ['May 24, 1978', 'United States Penitentiary, Marion', 'United States', 'No', 'Garrett Brock TrapnellMartin Joseph McNallyJames Kenneth Johnson']]\n"
151 | ]
152 | }
153 | ],
154 | "source": [
155 | "print(data[:3])"
156 | ]
157 | },
158 | {
159 | "cell_type": "markdown",
160 | "metadata": {
161 | "id": "IZjKKSxfaXDk"
162 | },
163 | "source": [
164 | "### Extraindo o ano"
165 | ]
166 | },
167 | {
168 | "cell_type": "markdown",
169 | "metadata": {
170 | "id": "RreCkvoeaXDl"
171 | },
172 | "source": [
173 | "Na célula de código abaixo, iteramos sobre `data` usando a variável iterável `row` e:\n",
174 | "\n",
175 | "- Com cada ocorrência de `row[0]`, nos referimos à primeira entrada de `row`, ou seja, a data (date).\n",
176 | "- Assim, com `date = fetch_year(row[0])`, estamos extraindo o ano da data em `row[0]` e atribuindo-o à variável `date`.\n",
177 | "- Em seguida, substituímos o valor de `row[0]` pelo ano que acabamos de extrair."
178 | ]
179 | },
180 | {
181 | "cell_type": "code",
182 | "execution_count": null,
183 | "metadata": {
184 | "tags": [],
185 | "id": "nkdcnc9RaXDl"
186 | },
187 | "outputs": [],
188 | "source": [
189 | "for row in data:\n",
190 | " date = fetch_year(row[0])\n",
191 | " row[0] = date"
192 | ]
193 | },
194 | {
195 | "cell_type": "code",
196 | "execution_count": null,
197 | "metadata": {
198 | "colab": {
199 | "base_uri": "https://localhost:8080/"
200 | },
201 | "id": "JEEdI7raaXDn",
202 | "outputId": "812bd18c-34d6-461e-c9f5-f70a3d2ee8b9"
203 | },
204 | "outputs": [
205 | {
206 | "output_type": "stream",
207 | "name": "stdout",
208 | "text": [
209 | "[[1971, 'Santa Martha Acatitla', 'Mexico', 'Yes', 'Joel David Kaplan Carlos Antonio Contreras Castro'], [1973, 'Mountjoy Jail', 'Ireland', 'Yes', \"JB O'Hagan Seamus TwomeyKevin Mallon\"], [1978, 'United States Penitentiary, Marion', 'United States', 'No', 'Garrett Brock TrapnellMartin Joseph McNallyJames Kenneth Johnson']]\n"
210 | ]
211 | }
212 | ],
213 | "source": [
214 | "print(data[:3])"
215 | ]
216 | },
217 | {
218 | "cell_type": "markdown",
219 | "metadata": {
220 | "id": "csNvx5u9aXDp"
221 | },
222 | "source": [
223 | "### Tentativas por ano"
224 | ]
225 | },
226 | {
227 | "cell_type": "code",
228 | "execution_count": null,
229 | "metadata": {
230 | "id": "tBvk6oSqaXDp"
231 | },
232 | "outputs": [],
233 | "source": [
234 | "min_year = min(data, key=lambda x: x[0])[0]\n",
235 | "max_year = max(data, key=lambda x: x[0])[0]"
236 | ]
237 | },
238 | {
239 | "cell_type": "markdown",
240 | "metadata": {
241 | "id": "PDPQoNExaXDq"
242 | },
243 | "source": [
244 | "Antes de prosseguirmos, vamos verificar quais são as datas mais antigas e mais recentes que temos em nosso conjunto de dados."
245 | ]
246 | },
247 | {
248 | "cell_type": "code",
249 | "execution_count": null,
250 | "metadata": {
251 | "colab": {
252 | "base_uri": "https://localhost:8080/"
253 | },
254 | "id": "aqTNss4HaXDq",
255 | "outputId": "42d8b01b-61f6-49ee-82b1-8287c2dc89d8"
256 | },
257 | "outputs": [
258 | {
259 | "output_type": "stream",
260 | "name": "stdout",
261 | "text": [
262 | "1971\n",
263 | "2020\n"
264 | ]
265 | }
266 | ],
267 | "source": [
268 | "print(min_year)\n",
269 | "print(max_year)"
270 | ]
271 | },
272 | {
273 | "cell_type": "markdown",
274 | "metadata": {
275 | "id": "79XqeHLMaXDr"
276 | },
277 | "source": [
278 | "Agora vamos criar uma lista de todos os anos variando de `min_year` a `max_year`. Nosso objetivo é então determinar quantas tentativas de fuga da prisão ocorreram em cada ano. Como os anos em que não houve fugas de prisão não estão presentes no conjunto de dados, isso garantirá que os capturemos."
279 | ]
280 | },
281 | {
282 | "cell_type": "code",
283 | "execution_count": null,
284 | "metadata": {
285 | "id": "GUAskRcEaXDs"
286 | },
287 | "outputs": [],
288 | "source": [
289 | "years = []\n",
290 | "for y in range(min_year, max_year + 1):\n",
291 | " years.append(y)"
292 | ]
293 | },
294 | {
295 | "cell_type": "markdown",
296 | "metadata": {
297 | "id": "Jyqwn5e6aXDt"
298 | },
299 | "source": [
300 | "Vamos dar uma olhada em `years` para ver se parece com o que esperávamos."
301 | ]
302 | },
303 | {
304 | "cell_type": "code",
305 | "execution_count": null,
306 | "metadata": {
307 | "colab": {
308 | "base_uri": "https://localhost:8080/"
309 | },
310 | "id": "MWLbAq2JaXDt",
311 | "outputId": "b1e902eb-b7d2-421c-ec7b-15161b620c25"
312 | },
313 | "outputs": [
314 | {
315 | "output_type": "stream",
316 | "name": "stdout",
317 | "text": [
318 | "[1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020]\n"
319 | ]
320 | }
321 | ],
322 | "source": [
323 | "print(years)"
324 | ]
325 | },
326 | {
327 | "cell_type": "markdown",
328 | "metadata": {
329 | "id": "nJI44zIDaXDv"
330 | },
331 | "source": [
332 | "Ótimo!"
333 | ]
334 | },
335 | {
336 | "cell_type": "markdown",
337 | "metadata": {
338 | "id": "uwUnmQLbaXDw"
339 | },
340 | "source": [
341 | "Agora criamos uma lista onde cada elemento será`[, 0]`."
342 | ]
343 | },
344 | {
345 | "cell_type": "code",
346 | "execution_count": null,
347 | "metadata": {
348 | "id": "r5kUSh-zaXDx"
349 | },
350 | "outputs": [],
351 | "source": [
352 | "attempts_per_year = []\n",
353 | "for y in years:\n",
354 | " attempts_per_year.append([y, 0])"
355 | ]
356 | },
357 | {
358 | "cell_type": "markdown",
359 | "metadata": {
360 | "id": "CQyYJQ23aXDy"
361 | },
362 | "source": [
363 | "E finalmente incrementamos a segunda entrada (a do índice `1` que começa como sendo `0`) em `1` cada vez que um ano aparece nos dados."
364 | ]
365 | },
366 | {
367 | "cell_type": "code",
368 | "execution_count": null,
369 | "metadata": {
370 | "colab": {
371 | "base_uri": "https://localhost:8080/"
372 | },
373 | "id": "RzY-_qEmaXDy",
374 | "outputId": "ddb8028f-112e-4313-b676-798dcc6caa49"
375 | },
376 | "outputs": [
377 | {
378 | "output_type": "stream",
379 | "name": "stdout",
380 | "text": [
381 | "[[1971, 1], [1972, 0], [1973, 1], [1974, 0], [1975, 0], [1976, 0], [1977, 0], [1978, 1], [1979, 0], [1980, 0], [1981, 2], [1982, 0], [1983, 1], [1984, 0], [1985, 2], [1986, 3], [1987, 1], [1988, 1], [1989, 2], [1990, 1], [1991, 1], [1992, 2], [1993, 1], [1994, 0], [1995, 0], [1996, 1], [1997, 1], [1998, 0], [1999, 1], [2000, 2], [2001, 3], [2002, 2], [2003, 1], [2004, 0], [2005, 2], [2006, 1], [2007, 3], [2008, 0], [2009, 3], [2010, 1], [2011, 0], [2012, 1], [2013, 2], [2014, 1], [2015, 0], [2016, 1], [2017, 0], [2018, 1], [2019, 0], [2020, 1]]\n"
382 | ]
383 | }
384 | ],
385 | "source": [
386 | "for row in data:\n",
387 | " for ya in attempts_per_year:\n",
388 | " y = ya[0]\n",
389 | " if row[0] == y:\n",
390 | " ya[1] += 1\n",
391 | " \n",
392 | "print(attempts_per_year) "
393 | ]
394 | },
395 | {
396 | "cell_type": "markdown",
397 | "source": [
398 | "## Gráfico \n",
399 | "\n",
400 | "Para visualizar os resultados, vamos plotar um gráfico do tipo barra."
401 | ],
402 | "metadata": {
403 | "id": "CyTHTguJcC2Z"
404 | }
405 | },
406 | {
407 | "cell_type": "code",
408 | "execution_count": null,
409 | "metadata": {
410 | "colab": {
411 | "base_uri": "https://localhost:8080/",
412 | "height": 846
413 | },
414 | "id": "jkOkcHUiaXDy",
415 | "outputId": "9785c887-e6e9-42e8-a95c-fd7cdee9f510"
416 | },
417 | "outputs": [
418 | {
419 | "output_type": "display_data",
420 | "data": {
421 | "text/plain": [
422 | "
\n",
200 | " "
201 | ]
202 | },
203 | "metadata": {},
204 | "execution_count": 29
205 | }
206 | ],
207 | "source": [
208 | "import pandas as pd\n",
209 | "import matplotlib.pyplot as plt\n",
210 | "\n",
211 | "dados = pd.read_csv('programacao2023.csv')\n",
212 | "\n",
213 | "subconjunto1 = dados.loc[dados['Media'] < 6]\n",
214 | "\n",
215 | "subconjunto2 = dados.loc[dados['Media'] > 9]\n",
216 | "\n",
217 | "subconjunto3 = pd.concat([subconjunto1, subconjunto2], axis=0)\n",
218 | "\n",
219 | "subconjunto3\n"
220 | ]
221 | }
222 | ]
223 | }
--------------------------------------------------------------------------------
/parte_2_analise_dados/functions_numpy.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "provenance": []
7 | },
8 | "kernelspec": {
9 | "name": "python3",
10 | "display_name": "Python 3"
11 | },
12 | "language_info": {
13 | "name": "python"
14 | }
15 | },
16 | "cells": [
17 | {
18 | "cell_type": "markdown",
19 | "source": [
20 | "O NumPy é uma biblioteca de código aberto para a linguagem de programação Python, que é usada principalmente para computação científica e análise de dados. O NumPy é projetado para trabalhar com matrizes e vetores, tornando-o uma ferramenta poderosa para tarefas como processamento de imagens, aprendizado de máquina e outras áreas de ciência de dados."
21 | ],
22 | "metadata": {
23 | "id": "PWjUdXlM0xEx"
24 | }
25 | },
26 | {
27 | "cell_type": "markdown",
28 | "source": [
29 | "np.array(): A função np.array() é usada para criar arrays NumPy. Ela pode receber uma lista Python ou uma sequência como entrada e retorna um array NumPy."
30 | ],
31 | "metadata": {
32 | "id": "Mfi2fZr-1xy5"
33 | }
34 | },
35 | {
36 | "cell_type": "code",
37 | "execution_count": null,
38 | "metadata": {
39 | "colab": {
40 | "base_uri": "https://localhost:8080/"
41 | },
42 | "id": "sTr7INXj0t0f",
43 | "outputId": "bb629333-3f09-46aa-847f-c8ec9c11c91f"
44 | },
45 | "outputs": [
46 | {
47 | "output_type": "stream",
48 | "name": "stdout",
49 | "text": [
50 | "[1 2 3 4 5]\n"
51 | ]
52 | }
53 | ],
54 | "source": [
55 | "import numpy as np\n",
56 | "\n",
57 | "a = np.array([1, 2, 3, 4, 5])\n",
58 | "print(a)\n"
59 | ]
60 | },
61 | {
62 | "cell_type": "markdown",
63 | "source": [
64 | "Indexação e slicing:\n",
65 | "Você pode acessar elementos específicos de um array NumPy usando a indexação. Por exemplo, a[0] retorna o primeiro elemento do array a. Você também pode usar o slicing para acessar subconjuntos do array, por exemplo, a[1:3] retorna uma nova matriz contendo os elementos 2 e 3 de a."
66 | ],
67 | "metadata": {
68 | "id": "C-kuDOSj1Ebe"
69 | }
70 | },
71 | {
72 | "cell_type": "markdown",
73 | "source": [
74 | "np.arange(): A função np.arange() é usada para criar um array com valores espaçados uniformemente dentro de um intervalo especificado. Por exemplo, np.arange(0, 10, 2) cria um array com valores 0, 2, 4, 6 e 8."
75 | ],
76 | "metadata": {
77 | "id": "yM4c67yR157U"
78 | }
79 | },
80 | {
81 | "cell_type": "code",
82 | "source": [
83 | "# Criando um array com valores espaçados uniformemente\n",
84 | "c = np.arange(0, 10, 2)\n",
85 | "print(c) # output: [0 2 4 6 8]"
86 | ],
87 | "metadata": {
88 | "colab": {
89 | "base_uri": "https://localhost:8080/"
90 | },
91 | "id": "7ve2kRFs13R3",
92 | "outputId": "b42e4c92-5b40-48cb-9625-a6c7f800678a"
93 | },
94 | "execution_count": null,
95 | "outputs": [
96 | {
97 | "output_type": "stream",
98 | "name": "stdout",
99 | "text": [
100 | "[0 2 4 6 8]\n"
101 | ]
102 | }
103 | ]
104 | },
105 | {
106 | "cell_type": "markdown",
107 | "source": [
108 | "np.linspace(): A função np.linspace() é usada para criar um array com valores espaçados uniformemente entre dois limites. Por exemplo, np.linspace(0, 1, 5) cria um array com valores 0, 0.25, 0.5, 0.75 e 1."
109 | ],
110 | "metadata": {
111 | "id": "0VxpQi_V19j6"
112 | }
113 | },
114 | {
115 | "cell_type": "code",
116 | "source": [
117 | "# Criando um array com valores espaçados uniformemente entre dois limites\n",
118 | "d = np.linspace(0, 1, 5)\n",
119 | "print(d) # output: [0. 0.25 0.5 0.75 1. ]"
120 | ],
121 | "metadata": {
122 | "colab": {
123 | "base_uri": "https://localhost:8080/"
124 | },
125 | "id": "55D7w9Vg2Acx",
126 | "outputId": "b8894289-dc29-4fe9-e4e5-b183eb5f290d"
127 | },
128 | "execution_count": null,
129 | "outputs": [
130 | {
131 | "output_type": "stream",
132 | "name": "stdout",
133 | "text": [
134 | "[0. 0.25 0.5 0.75 1. ]\n"
135 | ]
136 | }
137 | ]
138 | },
139 | {
140 | "cell_type": "markdown",
141 | "source": [
142 | "np.zeros() e np.ones(): As funções np.zeros() e np.ones() são usadas para criar arrays de zeros e uns, respectivamente, com a forma especificada. Por exemplo, np.zeros((3, 4)) cria um array de zeros com a forma 3x4."
143 | ],
144 | "metadata": {
145 | "id": "MQvYHmyH2E3z"
146 | }
147 | },
148 | {
149 | "cell_type": "code",
150 | "source": [
151 | "# Criando um array de zeros com forma 3x4\n",
152 | "e = np.zeros((3, 4))\n",
153 | "print(e)\n",
154 | "\n",
155 | "# Criando um array de uns com forma 2x2x2\n",
156 | "f = np.ones((2, 2, 2))\n",
157 | "print(f)"
158 | ],
159 | "metadata": {
160 | "id": "s8jxMFbS2EdS"
161 | },
162 | "execution_count": null,
163 | "outputs": []
164 | },
165 | {
166 | "cell_type": "markdown",
167 | "source": [
168 | "np.random.rand(): A função np.random.rand() é usada para criar um array de números aleatórios uniformemente distribuídos entre 0 e 1 com a forma especificada. Por exemplo, np.random.rand(2, 3) cria um array de 2x3 com números aleatórios."
169 | ],
170 | "metadata": {
171 | "id": "RywWBUV22MhP"
172 | }
173 | },
174 | {
175 | "cell_type": "code",
176 | "source": [
177 | "# Criando um array de números aleatórios uniformemente distribuídos\n",
178 | "# entre 0 e 1 com forma 2x3\n",
179 | "g = np.random.rand(2, 3)\n",
180 | "print(g)"
181 | ],
182 | "metadata": {
183 | "colab": {
184 | "base_uri": "https://localhost:8080/"
185 | },
186 | "id": "Wfrsnp5m2PVf",
187 | "outputId": "98597f16-fd88-4ae4-f254-3d178a01c9bd"
188 | },
189 | "execution_count": null,
190 | "outputs": [
191 | {
192 | "output_type": "stream",
193 | "name": "stdout",
194 | "text": [
195 | "[[0.4876336 0.67037529 0.27268246]\n",
196 | " [0.37398026 0.18575964 0.42623253]]\n"
197 | ]
198 | }
199 | ]
200 | },
201 | {
202 | "cell_type": "markdown",
203 | "source": [
204 | "np.reshape(): A função np.reshape() é usada para reorganizar o formato de um array. Por exemplo, np.reshape(a, (2, 3)) reorganiza o array a em uma matriz de 2x3."
205 | ],
206 | "metadata": {
207 | "id": "QB9UUzwe2SYA"
208 | }
209 | },
210 | {
211 | "cell_type": "code",
212 | "source": [
213 | "# Reorganizando o formato de um array\n",
214 | "h = np.array([[1, 2, 3], [4, 5, 6]])\n",
215 | "i = np.reshape(h, (3, 2))\n",
216 | "print(i)"
217 | ],
218 | "metadata": {
219 | "colab": {
220 | "base_uri": "https://localhost:8080/"
221 | },
222 | "id": "LxYjbX6c2VAd",
223 | "outputId": "391dbf46-71bf-49cd-a3a2-ac9e973655ae"
224 | },
225 | "execution_count": null,
226 | "outputs": [
227 | {
228 | "output_type": "stream",
229 | "name": "stdout",
230 | "text": [
231 | "[[1 2]\n",
232 | " [3 4]\n",
233 | " [5 6]]\n"
234 | ]
235 | }
236 | ]
237 | },
238 | {
239 | "cell_type": "markdown",
240 | "source": [
241 | "np.max(), np.min(), np.mean() e np.std(): As funções np.max(), np.min(), np.mean() e np.std() são usadas para calcular o valor máximo, mínimo, média e desvio padrão de um array NumPy, respectivamente."
242 | ],
243 | "metadata": {
244 | "id": "PalE9xac2Wb8"
245 | }
246 | },
247 | {
248 | "cell_type": "code",
249 | "source": [
250 | "# Calculando o valor máximo, mínimo, média e desvio padrão de um array\n",
251 | "j = np.array([1, 2, 3, 4, 5])\n",
252 | "print(np.max(j)) # output: 5\n",
253 | "print(np.min(j)) # output: 1\n",
254 | "print(np.mean(j)) # output: 3.0\n",
255 | "print(np.std(j)) # output: 1.41421356"
256 | ],
257 | "metadata": {
258 | "colab": {
259 | "base_uri": "https://localhost:8080/"
260 | },
261 | "id": "ZKk0xjwS2Y6-",
262 | "outputId": "73185eaf-beb4-45de-b63e-a4850464ee0c"
263 | },
264 | "execution_count": null,
265 | "outputs": [
266 | {
267 | "output_type": "stream",
268 | "name": "stdout",
269 | "text": [
270 | "5\n",
271 | "1\n",
272 | "3.0\n",
273 | "1.4142135623730951\n"
274 | ]
275 | }
276 | ]
277 | },
278 | {
279 | "cell_type": "markdown",
280 | "source": [
281 | "np.dot(): A função np.dot() é usada para realizar a multiplicação de matrizes. Por exemplo, np.dot(a, b) realiza a multiplicação de matrizes entre os arrays a e b."
282 | ],
283 | "metadata": {
284 | "id": "_2RjZBt52fB8"
285 | }
286 | },
287 | {
288 | "cell_type": "code",
289 | "source": [
290 | "# Realizando a multiplicação de matrizes entre dois arrays\n",
291 | "k = np.array([[1, 2], [3, 4]])\n",
292 | "l = np.array([[5, 6], [7, 8]])\n",
293 | "m = np.dot(k, l)\n",
294 | "print(m)"
295 | ],
296 | "metadata": {
297 | "colab": {
298 | "base_uri": "https://localhost:8080/"
299 | },
300 | "id": "yqy5s-0P2i-k",
301 | "outputId": "25b94baa-dddc-4639-e15c-8e7b0ed67ffc"
302 | },
303 | "execution_count": null,
304 | "outputs": [
305 | {
306 | "output_type": "stream",
307 | "name": "stdout",
308 | "text": [
309 | "[[19 22]\n",
310 | " [43 50]]\n"
311 | ]
312 | }
313 | ]
314 | },
315 | {
316 | "cell_type": "markdown",
317 | "source": [
318 | "np.transpose(): A função np.transpose() é usada para transpor um array. Por exemplo, np.transpose(a) transpõe o array a."
319 | ],
320 | "metadata": {
321 | "id": "o5Vrlb_r2lKY"
322 | }
323 | },
324 | {
325 | "cell_type": "code",
326 | "source": [
327 | "# Transpondo um array\n",
328 | "n = np.array([[1, 2], [3, 4]])\n",
329 | "o = np.transpose(n)\n",
330 | "print(o)"
331 | ],
332 | "metadata": {
333 | "colab": {
334 | "base_uri": "https://localhost:8080/"
335 | },
336 | "id": "oB0pzWH22mDs",
337 | "outputId": "d1bbd0ee-b855-46ca-e4fe-b0d202940130"
338 | },
339 | "execution_count": null,
340 | "outputs": [
341 | {
342 | "output_type": "stream",
343 | "name": "stdout",
344 | "text": [
345 | "[[1 3]\n",
346 | " [2 4]]\n"
347 | ]
348 | }
349 | ]
350 | },
351 | {
352 | "cell_type": "code",
353 | "source": [
354 | "\n",
355 | "a = np.array([1, 2, 3]) # array de uma dimensão\n",
356 | "b = np.array([[1, 2, 3], [4, 5, 6]]) # array de duas dimensões\n",
357 | "c = np.zeros((3, 4)) # array de zeros de 3x4\n",
358 | "d = np.ones((2, 3)) # array de uns de 2x3\n",
359 | "e = np.random.rand(2, 3) # array de números aleatórios de 2x3\n"
360 | ],
361 | "metadata": {
362 | "id": "-TrFcMts02oK"
363 | },
364 | "execution_count": null,
365 | "outputs": []
366 | },
367 | {
368 | "cell_type": "code",
369 | "source": [
370 | "\n",
371 | "a = np.array([1, 2, 3, 4, 5, 6])\n",
372 | "b = np.reshape(a, (2, 3)) # reshape para um array de 2x3\n"
373 | ],
374 | "metadata": {
375 | "id": "qNF7jSIp1GAB"
376 | },
377 | "execution_count": null,
378 | "outputs": []
379 | },
380 | {
381 | "cell_type": "code",
382 | "source": [
383 | "a = np.array([1, 2, 3])\n",
384 | "b = np.array([4, 5, 6])\n",
385 | "c = np.concatenate([a, b]) # combinar os arrays a e b\n",
386 | "d = np.stack([a, b]) # empilhar os arrays a e b verticalmente\n"
387 | ],
388 | "metadata": {
389 | "id": "4FeMxSuS1Iho"
390 | },
391 | "execution_count": null,
392 | "outputs": []
393 | },
394 | {
395 | "cell_type": "code",
396 | "source": [],
397 | "metadata": {
398 | "id": "r3AuyAdm1Ldf"
399 | },
400 | "execution_count": null,
401 | "outputs": []
402 | }
403 | ]
404 | }
405 |
--------------------------------------------------------------------------------
/parte_2_analise_dados/matplotlib.md:
--------------------------------------------------------------------------------
1 | # Biblioteca Matplotlib
2 |
3 | A biblioteca Matplotlib é uma biblioteca de visualização de dados em Python. Ela permite que você crie gráficos de linhas, gráficos de dispersão, histogramas, gráficos de barras, gráficos de pizza, etc. Com ela, você pode criar gráficos de alta qualidade com apenas algumas linhas de código.
4 |
5 | ## Instalação
6 |
7 | Para instalar a biblioteca Matplotlib, basta executar o seguinte comando no terminal:
8 |
9 | ```bash
10 | pip install matplotlib
11 | ```
12 |
13 | ## Importando a biblioteca
14 |
15 | Para importar a biblioteca Matplotlib, basta executar o seguinte comando:
16 |
17 | ```python
18 | import matplotlib.pyplot as plt
19 | ```
20 |
21 | ## Criando um gráfico de linha
22 |
23 | Para criar um gráfico de linha, basta executar o seguinte código:
24 |
25 | ```python
26 | import matplotlib.pyplot as plt
27 |
28 | x = [1, 2, 3, 4, 5]
29 | y = [1, 4, 9, 16, 25]
30 |
31 | plt.plot(x, y)
32 |
33 | plt.show()
34 | ```
35 |
36 | ## Criando um gráfico de dispersão
37 |
38 | Para criar um gráfico de dispersão, basta executar o seguinte código:
39 |
40 | ```python
41 | import matplotlib.pyplot as plt
42 |
43 | x = [1, 2, 3, 4, 5]
44 | y = [1, 4, 9, 16, 25]
45 |
46 | plt.scatter(x, y)
47 |
48 | plt.show()
49 | ```
50 |
51 | ## %matplotlib inline
52 |
53 | O comando `%matplotlib inline` é usado para mostrar os gráficos no Jupyter Notebook.
54 |
55 | Exemplo:
56 |
57 | ```python
58 | %matplotlib inline
59 |
60 | import matplotlib.pyplot as plt
61 |
62 | x = [1, 2, 3, 4, 5]
63 | y = [1, 4, 9, 16, 25]
64 |
65 | plt.plot(x, y)
66 | ```
67 |
--------------------------------------------------------------------------------
/parte_2_analise_dados/numpy.md:
--------------------------------------------------------------------------------
1 | # Biblioteca Numpy
2 |
3 | Numpy é uma biblioteca para computação científica em Python. Ela é utilizada para trabalhar com arrays multidimensionais, que são mais eficientes que as listas do Python.
4 |
5 |
6 | ## Importando a biblioteca Numpy
7 |
8 | Para importar a biblioteca Numpy, você pode utilizar o comando abaixo:
9 |
10 | ```python
11 | import numpy as np
12 | ```
13 |
14 | ## Criando um array
15 |
16 | Para criar um array, você pode utilizar o comando abaixo:
17 |
18 | ```python
19 | array = np.array([1, 2, 3, 4, 5])
20 | ```
21 |
22 | ## Visualizando o array
23 |
24 | Para visualizar o array, você pode utilizar o comando abaixo:
25 |
26 | ```python
27 | array
28 | ```
29 |
30 | Exemplo:
31 |
32 | ```python
33 | import numpy as np
34 |
35 | array = np.array([1, 2, 3, 4, 5])
36 |
37 | array
38 | ```
39 |
40 | ## Visualizando o tipo do array
41 |
42 | Para visualizar o tipo do array, você pode utilizar o comando abaixo:
43 |
44 | ```python
45 | array.dtype
46 | ```
47 |
48 | Exemplo:
49 |
50 | ```python
51 | import numpy as np
52 |
53 | array = np.array([1, 2, 3, 4, 5])
54 |
55 | array.dtype
56 | ```
57 |
58 | ## Visualizando o formato do array
59 |
60 | Para visualizar o formato/tamanho do array, você pode utilizar o comando abaixo:
61 |
62 | ```python
63 | array.shape
64 | ```
65 |
66 | Exemplo:
67 |
68 | ```python
69 | import numpy as np
70 |
71 | array = np.array([1, 2, 3, 4, 5])
72 |
73 | array.shape
74 | ```
75 |
76 | ## Criando um array multidimensional
77 |
78 | Para criar um array multidimensional, você pode utilizar o comando abaixo:
79 |
80 | ```python
81 | array = np.array([[1, 2, 3], [4, 5, 6]])
82 | ```
83 |
84 | ## Funções para criar arrays
85 |
86 | Para criar arrays, você pode utilizar as funções abaixo:
87 |
88 | ```python
89 | np.zeros((2, 3)) # Cria um array de zeros
90 | np.ones((2, 3)) # Cria um array de uns
91 | np.full((2, 3), 7) # Cria um array com o valor 7
92 | np.eye(3) # Cria uma matriz identidade
93 | np.random.random((2, 3)) # Cria um array com valores aleatórios
94 | ```
95 |
96 | ## Criando um array com valores sequenciais
97 |
98 | Para criar um array com valores sequenciais, você pode utilizar o comando abaixo:
99 |
100 | ```python
101 | np.arange(0, 10, 2) # Cria um array com valores de 0 a 10, pulando de 2 em 2
102 | ```
103 |
104 | ## Criando um array com valores espaçados uniformemente
105 |
106 | Para criar um array com valores espaçados uniformemente, você pode utilizar o comando abaixo:
107 |
108 | ```python
109 | np.linspace(0, 1, 5) # Cria um array com 5 valores de 0 a 1
110 | ```
111 |
112 | ## Visualizando o tamanho do array
113 |
114 | Para visualizar o tamanho do array, você pode utilizar o comando abaixo:
115 |
116 | ```python
117 | array.size
118 | ```
119 |
120 | ## Utilidade de arrays
121 |
122 | Arrays são muito utilizados para trabalhar com dados numéricos. Por exemplo, você pode utilizar arrays para representar uma imagem, onde cada pixel é um número que representa a intensidade de cor. Ou você pode utilizar arrays para representar um sinal de áudio, onde cada amostra é um número que representa a intensidade sonora.
123 |
124 | ## Visualizando o número de dimensões do array
125 |
126 | Para visualizar o número de dimensões do array, você pode utilizar o comando abaixo:
127 |
128 | ```python
129 | array.ndim
130 | ```
131 |
132 |
133 | ## Ndarray
134 |
135 | Um ndarray é um array multidimensional, onde todos os elementos são do mesmo tipo. Os elementos de um ndarray são acessados por um índice, que é uma tupla de números inteiros não negativos. O número de índices é o número de dimensões do array. O ndarray possui os seguintes atributos:
136 |
137 | * ndim: número de dimensões do array
138 | * shape: tupla com o tamanho do array em cada dimensão
139 | * size: número total de elementos do array
140 | * dtype: tipo dos elementos do array
141 |
142 | ## Indexação de arrays
143 |
144 | Para acessar um elemento de um array, você pode utilizar o comando abaixo:
145 |
146 | ```python
147 | array[0, 0]
148 | ```
149 |
150 | Exemplo:
151 |
152 | ```python
153 | import numpy as np
154 |
155 | array = np.array([[1, 2, 3], [4, 5, 6]])
156 |
157 | array[0, 0]
158 | ```
159 |
160 | ## Fatiamento de arrays
161 |
162 | Para acessar uma fatia de um array, você pode utilizar o comando abaixo:
163 |
164 | ```python
165 | array[0:2, 1]
166 | ```
167 |
168 | Exemplo:
169 |
170 | ```python
171 | import numpy as np
172 |
173 | array = np.array([[1, 2, 3], [4, 5, 6]])
174 |
175 | array[0:2, 1]
176 | ```
177 |
178 | ## Indexação booleana
179 |
180 | Para acessar elementos de um array utilizando uma condição, você pode utilizar o comando abaixo:
181 |
182 | ```python
183 | array[array > 2]
184 | ```
185 |
186 |
--------------------------------------------------------------------------------
/parte_2_analise_dados/pandas.md:
--------------------------------------------------------------------------------
1 | ## Análise exploratória de dados com Python
2 |
3 | Para realizar a análise exploratória de dados, você pode utilizar a biblioteca Pandas.
4 |
5 | A biblioteca Pandas é uma biblioteca de código aberto, que fornece estruturas de dados e ferramentas de análise de dados para a linguagem de programação Python. Essa biblioteca é uma das mais utilizadas para análise de dados em Python.
6 |
7 | Na biblioteca Pandas, você pode manipular dados de forma muito simples. Você pode ler arquivos CSV, JSON, TXT, HTML, entre outros, e transformá-los em DataFrames, que são estruturas de dados muito utilizadas para análise de dados.
8 |
9 | ### import
10 |
11 | Os módulos Python podem obter acesso ao código de outro módulo importando o arquivo/função usando `import`. Dessa forma, para realizar a importação de qualquer biblioteca no python utilizamos o comando ` import`.
12 |
13 | Exemplo:
14 |
15 | ```python
16 | import nome_do_modulo
17 | ```
18 | ou ainda
19 |
20 | ```python
21 | import nome_do_modulo as ndm
22 | ```
23 | Nesse último exemplo parâmetro "as" serve para renomearmos o nome da biblioteca e esse parâmetro é opcional. Ele é muito útil caso o nome da biblioteca esteja dando conflito com o nome de alguma variável.
24 |
25 | ### Importando a biblioteca Pandas
26 |
27 | Para importar a biblioteca Pandas, você pode utilizar o comando abaixo:
28 |
29 | ```python
30 | import pandas as pd
31 | ```
32 |
33 | ### Carregando os dados
34 |
35 | Para carregar os dados, você pode utilizar o comando abaixo:
36 |
37 | ```python
38 | df = pd.read_csv('caminho_do_arquivo')
39 | ```
40 |
41 | ### Visualizando os dados
42 |
43 | Para visualizar os dados, você pode utilizar o comando abaixo:
44 |
45 | ```python
46 | df.head()
47 | ```
48 |
49 | Exemplo:
50 |
51 | ```python
52 | import pandas as pd
53 |
54 | df = pd.read_csv('https://raw.githubusercontent.com/alura-cursos/introducao-a-data-science/master/aula0/ml-latest-small/movies.csv')
55 |
56 | df.head()
57 | ```
58 |
59 |
60 | ### Visualizando as informações dos dados
61 |
62 | Para visualizar as informações dos dados, você pode utilizar o comando abaixo:
63 |
64 | ```python
65 | df.info()
66 | ```
67 |
68 | ### Visualizando as estatísticas dos dados
69 |
70 | Para visualizar as estatísticas dos dados, você pode utilizar o comando abaixo:
71 |
72 | ```python
73 | df.describe()
74 | ```
75 |
76 | ### Visualizando a correlação dos dados
77 |
78 | Para visualizar a correlação dos dados, você pode utilizar o comando abaixo:
79 |
80 | ```python
81 | df.corr()
82 | ```
83 |
84 | ### Visualizando a quantidade de valores únicos
85 |
86 | Para visualizar a quantidade de valores únicos, você pode utilizar o comando abaixo:
87 |
88 | ```python
89 | df['nome_da_coluna'].value_counts()
90 | ```
91 |
92 | ## Criando dataframes
93 |
94 | Para criar dataframes, você pode utilizar o comando abaixo:
95 |
96 | ```python
97 | df = pd.DataFrame(dicionario)
98 | ```
99 |
100 | Exemplo:
101 |
102 | ```python
103 | import pandas as pd
104 |
105 | dicionario = {
106 | 'nome': ['João', 'Maria', 'José'],
107 | 'idade': [20, 25, 30]
108 | }
109 |
110 | df = pd.DataFrame(dicionario)
111 |
112 | df.head()
113 | ```
114 |
--------------------------------------------------------------------------------
/parte_2_analise_dados/projeto_02/README.md:
--------------------------------------------------------------------------------
1 | # Projeto: Explorando dados de vendas de carros no eBay
2 |
3 | Neste projeto guiado, trabalharemos com um conjunto de dados de carros usados do eBay Kleinanzeigen, uma seção de classificados do site alemão eBay.
4 |
5 | O conjunto de dados foi originalmente copiado e carregado no Kaggle pelo usuário orgesleka.
6 |
7 | Fizemos algumas modificações no conjunto de dados original:
8 |
9 | O dicionário de dados fornecido é o seguinte:
10 |
11 |
12 | ---
13 | dateCrawled- Quando este anúncio foi rastreado pela primeira vez. Todos os valores de campo são obtidos a partir desta data.
14 |
15 | name- Nome do carro.
16 |
17 | seller- Se o vendedor é particular ou comerciante.
18 |
19 | offerType- O tipo de listagem
20 |
21 | price- O preço no anúncio para vender o carro.
22 |
23 | abtest- Se a listagem está incluída em um teste A/B.
24 |
25 | vehicleType- O tipo de veículo.
26 |
27 | yearOfRegistration- O ano em que o carro foi matriculado pela primeira vez.
28 | gearbox- O tipo de transmissão.
29 |
30 | powerPS- A potência do carro em PS.
31 |
32 | model- O nome do modelo do carro.
33 |
34 | kilometer- Quantos quilômetros o carro percorreu.
35 |
36 | monthOfRegistration- O mês em que o carro foi matriculado pela primeira vez.
37 |
38 | fuelType- Que tipo de combustível o carro usa.
39 |
40 | brand- A marca do carro.
41 |
42 | notRepairedDamage- Se o carro tiver um dano que ainda não foi reparado.
43 |
44 | dateCreated- A data em que a listagem do eBay foi criada.
45 |
46 | nrOfPictures- O número de fotos no anúncio.
47 |
48 | postalCode- O código postal da localização do veículo.
49 |
50 | lastSeenOnline- Quando o rastreador viu este anúncio online pela última vez.
51 |
52 | ---
53 |
54 | O objetivo deste projeto é limpar os dados e analisar as listas de carros usados incluídos. Você também se familiarizará com alguns dos benefícios exclusivos que o jupyter notebook oferece aos pandas.
55 |
56 | [Acesse o guia do projeto](https://github.com/cilab-ufersa/introduction_machine_learning/blob/main/parte_2_analise_dados/projeto_02/projeto2.ipynb)
57 |
--------------------------------------------------------------------------------
/parte_2_analise_dados/projeto_02/autos.csv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cilab-ufersa/introduction_machine_learning/03bd2e50e8c7db62c4ca39997e827f1cbe047f27/parte_2_analise_dados/projeto_02/autos.csv
--------------------------------------------------------------------------------
/parte_2_analise_dados/projeto_3/README.md:
--------------------------------------------------------------------------------
1 | # Projeto: Dados de tráfego da I-94
2 |
3 | No início do curso, vimos que existem dois tipos de visualização de dados:
4 |
5 | * Visualização exploratória de dados: criamos gráficos para nós mesmos explorarmos dados e encontrarmos padrões.
6 |
7 | * Visualização de dados explicativos: criamos gráficos para que outros se comuniquem e expliquem os padrões que encontramos através da exploração de dados.
8 |
9 |
10 | Ao longo deste curso, nos concentramos apenas na visualização exploratória de dados e aprendemos o seguinte:
11 |
12 | 1. Como visualizar dados de séries temporais com gráficos de linha.
13 |
14 | 2. Como visualizar correlações com gráficos de dispersão.
15 |
16 | 3. Como visualizar distribuições de frequência com gráficos de barras e histogramas.
17 |
18 | 4. Como acelerar nosso fluxo de trabalho de visualização de dados exploratórios com a biblioteca de pandas.
19 |
20 | 5. Como comparar gráficos usando gráficos de grade.
21 |
22 | Para tornar o aprendizado mais fácil e eficiente, aprendemos sobre cada um desses tópicos isoladamente. Neste projeto guiado, daremos um passo adiante e aprenderemos a combinar essas habilidades.
23 |
24 |
25 | Vamos analisar um conjunto de dados sobre o tráfego no sentido oeste na rodovia interestadual I-94.
26 |
27 | John Hogue disponibilizou o conjunto de dados e você pode baixá-lo no Repositório de Machine Learning da UCI.
28 |
29 | O objetivo de nossa análise é determinar alguns indicadores de tráfego intenso na I-94. Esses indicadores podem ser o tipo de clima, hora do dia, hora da semana, etc. Por exemplo, podemos descobrir que o tráfego costuma ser mais intenso no verão ou quando neva.
30 |
31 | [Acesse o projeto](https://github.com/cilab-ufersa/introduction_machine_learning/blob/main/parte_2_analise_dados/projeto_3/projeto3.ipynb)
--------------------------------------------------------------------------------
/parte_3_machine_learning/README.md:
--------------------------------------------------------------------------------
1 | # Introdução a aprendizagem de máquina
2 |
3 | ## O que é aprendizagem de máquina?
4 |
5 | Aprendizagem de máquina é uma área de estudo que consiste em fazer com que as máquinas aprendam a partir da experiência. Essa experiência é representada por dados, e a partir desses dados, a máquina aprende a fazer previsões ou classificações.
6 |
7 | 
8 |
9 | ## Por que aprender sobre aprendizagem de máquina?
10 |
11 | Aprendizagem de máquina é uma área de estudo que está em constante crescimento e que está presente em diversas áreas do conhecimento. Por exemplo, a área de saúde utiliza aprendizagem de máquina para prever doenças, a área de finanças utiliza aprendizagem de máquina para prever o comportamento do mercado financeiro, a área de segurança utiliza aprendizagem de máquina para prever crimes, a área de marketing utiliza aprendizagem de máquina para prever o comportamento do consumidor, a área de engenharia utiliza aprendizagem de máquina para prever falhas em máquinas, a área de meteorologia utiliza aprendizagem de máquina para prever o tempo, a área de agronomia utiliza aprendizagem de máquina para prever a produtividade de culturas.
12 |
13 | ## O que é um algoritmo de aprendizagem de máquina?
14 |
15 | Um algoritmo de aprendizagem de máquina é um algoritmo que recebe dados e aprende a partir desses dados. A aprendizagem pode ser classificada em quatros tipos:
16 |
17 | * Aprendizagem supervisionada
18 | * Aprendizagem não supervisionada
19 | * Aprendizagem por reforço
20 | * Aprendizagem por semissupervisionada
21 |
22 | ## Aprendizagem supervisionada
23 |
24 | Aprendizagem supervisionada é um tipo de aprendizagem em que os dados de entrada são rotulados. Por exemplo, se temos um conjunto de dados com a altura e o peso de pessoas, e queremos prever o sexo dessas pessoas, então temos um conjunto de dados de entrada com altura e peso, e um conjunto de dados de saída com o sexo.
25 |
26 |
27 |
28 | ## Aprendizagem não supervisionada
29 |
30 | Aprendizagem não supervisionada é um tipo de aprendizagem em que os dados de entrada não são rotulados. Por exemplo, se temos um conjunto de dados com a altura e o peso de pessoas, e queremos agrupar essas pessoas em grupos, então temos um conjunto de dados de entrada com altura e peso, mas não temos um conjunto de dados de saída.
31 |
32 | ## Aprendizagem por reforço
33 |
34 | Aprendizagem por reforço é um tipo de aprendizagem em que o algoritmo de aprendizagem de máquina recebe uma recompensa ou uma punição a cada ação que ele toma. Por exemplo, se temos um robô que precisa aprender a andar, então o robô recebe uma recompensa a cada passo que ele dá, e uma punição a cada passo que ele dá errado.
35 |
36 | ## Aprendizagem por semissupervisionada
37 |
38 | Aprendizagem por semissupervisionada é um tipo de aprendizagem em que temos um conjunto de dados rotulados e um conjunto de dados não rotulados. Por exemplo, se temos um conjunto de dados com a altura e o peso de pessoas, e queremos prever o sexo dessas pessoas, e temos um conjunto de dados com a altura e o peso de outras pessoas, e queremos agrupar essas pessoas em grupos, então temos um conjunto de dados de entrada com altura e peso, e um conjunto de dados de saída com o sexo, e um conjunto de dados de entrada com altura e peso, mas não temos um conjunto de dados de saída.
39 |
40 | ## O que é um modelo de aprendizagem de máquina?
41 |
42 | Um modelo de aprendizagem de máquina é um modelo que representa o conhecimento que o algoritmo de aprendizagem de máquina aprendeu a partir dos dados. Por exemplo, se temos um conjunto de dados com a altura e o peso de pessoas, e queremos prever o sexo dessas pessoas, então o modelo de aprendizagem de máquina é uma função que recebe a altura e o peso de uma pessoa, e retorna o sexo dessa pessoa.
43 |
44 |
45 | ## O que veremos nessa parte do curso?
46 |
47 | Nessa parte do curso, veremos uma introdução a machine learning. Os topicos que veremos são:
48 |
49 | * Introdução a aprendizagem de máquina
50 | * Método KNN (K-Nearest Neighbors)
51 | * Avaliação de modelos de aprendizagem de máquina
52 | * Otimização de hiperparâmetros
53 | * Validação cruzada
54 |
55 | [Acesse o projeto](https://github.com/cilab-ufersa/introduction_machine_learning/tree/develop/parte_3_machine_learning/projeto_04)
56 |
57 | ## Referências Recomendadas
58 |
59 | * [Machine Learning Crash Course](https://developers.google.com/machine-learning/crash-course/ml-intro)
60 |
61 | * [Machine Learning: A Probabilistic Perspective](https://www.amazon.com/Machine-Learning-Probabilistic-Perspective-Computation/dp/0262018020)
62 |
63 | * [Pattern Recognition and Machine Learning](https://www.amazon.com/Pattern-Recognition-Learning-Information-Statistics/dp/0387310738)
64 |
65 | * [Machine Learning: An Algorithmic Perspective](https://www.amazon.com/Machine-Learning-Algorithmic-Perspective-Recognition/dp/1107003855)
66 |
67 | * [Machine larning algorithms](https://www.amazon.com/Machine-Learning-Algorithms-Andrew-Ng/dp/1783555130)
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/parte_3_machine_learning/figuras/fig1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cilab-ufersa/introduction_machine_learning/03bd2e50e8c7db62c4ca39997e827f1cbe047f27/parte_3_machine_learning/figuras/fig1.png
--------------------------------------------------------------------------------
/parte_3_machine_learning/figuras/fig2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cilab-ufersa/introduction_machine_learning/03bd2e50e8c7db62c4ca39997e827f1cbe047f27/parte_3_machine_learning/figuras/fig2.png
--------------------------------------------------------------------------------
/parte_3_machine_learning/projeto_04/README.md:
--------------------------------------------------------------------------------
1 | # Projeto: Previsão de preços de carros com KNN
2 |
3 |
4 | Neste curso, exploramos os fundamentos do aprendizado de máquina usando o algoritmo de k-vizinhos mais próximos. Neste projeto guiado, você praticará o fluxo de trabalho de aprendizado de máquina que aprendeu até agora para prever o preço de mercado de um carro usando seus atributos.
5 |
6 |
7 | O conjunto de dados com o qual trabalharemos contém informações sobre vários carros. Para cada carro, temos informações sobre os aspectos técnicos do veículo, como o deslocamento do motor, o peso do carro, as milhas por galão, a velocidade com que o carro acelera e muito mais.
8 |
9 |
10 | ## Processo de Machine Learning
11 |
12 | O processo de aprendizado de máquina é um processo iterativo e envolve as seguintes etapas:
13 |
14 | 1. Definir o problema
15 | 2. Obter os dados
16 | 3. Preparar os dados (Limpeza, transformação, etc.)
17 | 4. Analisar os dados (Extração de características, seleção de características, etc.)
18 | 5. Treinar o modelo
19 | 6. Avaliar o modelo
20 | 7. Ajustar o modelo
21 | 8. Deploy do modelo
22 |
23 |
24 | 
--------------------------------------------------------------------------------
/parte_3_machine_learning/projeto_04/imports-85.data:
--------------------------------------------------------------------------------
1 | 3,?,alfa-romero,gas,std,two,convertible,rwd,front,88.60,168.80,64.10,48.80,2548,dohc,four,130,mpfi,3.47,2.68,9.00,111,5000,21,27,13495
2 | 3,?,alfa-romero,gas,std,two,convertible,rwd,front,88.60,168.80,64.10,48.80,2548,dohc,four,130,mpfi,3.47,2.68,9.00,111,5000,21,27,16500
3 | 1,?,alfa-romero,gas,std,two,hatchback,rwd,front,94.50,171.20,65.50,52.40,2823,ohcv,six,152,mpfi,2.68,3.47,9.00,154,5000,19,26,16500
4 | 2,164,audi,gas,std,four,sedan,fwd,front,99.80,176.60,66.20,54.30,2337,ohc,four,109,mpfi,3.19,3.40,10.00,102,5500,24,30,13950
5 | 2,164,audi,gas,std,four,sedan,4wd,front,99.40,176.60,66.40,54.30,2824,ohc,five,136,mpfi,3.19,3.40,8.00,115,5500,18,22,17450
6 | 2,?,audi,gas,std,two,sedan,fwd,front,99.80,177.30,66.30,53.10,2507,ohc,five,136,mpfi,3.19,3.40,8.50,110,5500,19,25,15250
7 | 1,158,audi,gas,std,four,sedan,fwd,front,105.80,192.70,71.40,55.70,2844,ohc,five,136,mpfi,3.19,3.40,8.50,110,5500,19,25,17710
8 | 1,?,audi,gas,std,four,wagon,fwd,front,105.80,192.70,71.40,55.70,2954,ohc,five,136,mpfi,3.19,3.40,8.50,110,5500,19,25,18920
9 | 1,158,audi,gas,turbo,four,sedan,fwd,front,105.80,192.70,71.40,55.90,3086,ohc,five,131,mpfi,3.13,3.40,8.30,140,5500,17,20,23875
10 | 0,?,audi,gas,turbo,two,hatchback,4wd,front,99.50,178.20,67.90,52.00,3053,ohc,five,131,mpfi,3.13,3.40,7.00,160,5500,16,22,?
11 | 2,192,bmw,gas,std,two,sedan,rwd,front,101.20,176.80,64.80,54.30,2395,ohc,four,108,mpfi,3.50,2.80,8.80,101,5800,23,29,16430
12 | 0,192,bmw,gas,std,four,sedan,rwd,front,101.20,176.80,64.80,54.30,2395,ohc,four,108,mpfi,3.50,2.80,8.80,101,5800,23,29,16925
13 | 0,188,bmw,gas,std,two,sedan,rwd,front,101.20,176.80,64.80,54.30,2710,ohc,six,164,mpfi,3.31,3.19,9.00,121,4250,21,28,20970
14 | 0,188,bmw,gas,std,four,sedan,rwd,front,101.20,176.80,64.80,54.30,2765,ohc,six,164,mpfi,3.31,3.19,9.00,121,4250,21,28,21105
15 | 1,?,bmw,gas,std,four,sedan,rwd,front,103.50,189.00,66.90,55.70,3055,ohc,six,164,mpfi,3.31,3.19,9.00,121,4250,20,25,24565
16 | 0,?,bmw,gas,std,four,sedan,rwd,front,103.50,189.00,66.90,55.70,3230,ohc,six,209,mpfi,3.62,3.39,8.00,182,5400,16,22,30760
17 | 0,?,bmw,gas,std,two,sedan,rwd,front,103.50,193.80,67.90,53.70,3380,ohc,six,209,mpfi,3.62,3.39,8.00,182,5400,16,22,41315
18 | 0,?,bmw,gas,std,four,sedan,rwd,front,110.00,197.00,70.90,56.30,3505,ohc,six,209,mpfi,3.62,3.39,8.00,182,5400,15,20,36880
19 | 2,121,chevrolet,gas,std,two,hatchback,fwd,front,88.40,141.10,60.30,53.20,1488,l,three,61,2bbl,2.91,3.03,9.50,48,5100,47,53,5151
20 | 1,98,chevrolet,gas,std,two,hatchback,fwd,front,94.50,155.90,63.60,52.00,1874,ohc,four,90,2bbl,3.03,3.11,9.60,70,5400,38,43,6295
21 | 0,81,chevrolet,gas,std,four,sedan,fwd,front,94.50,158.80,63.60,52.00,1909,ohc,four,90,2bbl,3.03,3.11,9.60,70,5400,38,43,6575
22 | 1,118,dodge,gas,std,two,hatchback,fwd,front,93.70,157.30,63.80,50.80,1876,ohc,four,90,2bbl,2.97,3.23,9.41,68,5500,37,41,5572
23 | 1,118,dodge,gas,std,two,hatchback,fwd,front,93.70,157.30,63.80,50.80,1876,ohc,four,90,2bbl,2.97,3.23,9.40,68,5500,31,38,6377
24 | 1,118,dodge,gas,turbo,two,hatchback,fwd,front,93.70,157.30,63.80,50.80,2128,ohc,four,98,mpfi,3.03,3.39,7.60,102,5500,24,30,7957
25 | 1,148,dodge,gas,std,four,hatchback,fwd,front,93.70,157.30,63.80,50.60,1967,ohc,four,90,2bbl,2.97,3.23,9.40,68,5500,31,38,6229
26 | 1,148,dodge,gas,std,four,sedan,fwd,front,93.70,157.30,63.80,50.60,1989,ohc,four,90,2bbl,2.97,3.23,9.40,68,5500,31,38,6692
27 | 1,148,dodge,gas,std,four,sedan,fwd,front,93.70,157.30,63.80,50.60,1989,ohc,four,90,2bbl,2.97,3.23,9.40,68,5500,31,38,7609
28 | 1,148,dodge,gas,turbo,?,sedan,fwd,front,93.70,157.30,63.80,50.60,2191,ohc,four,98,mpfi,3.03,3.39,7.60,102,5500,24,30,8558
29 | -1,110,dodge,gas,std,four,wagon,fwd,front,103.30,174.60,64.60,59.80,2535,ohc,four,122,2bbl,3.34,3.46,8.50,88,5000,24,30,8921
30 | 3,145,dodge,gas,turbo,two,hatchback,fwd,front,95.90,173.20,66.30,50.20,2811,ohc,four,156,mfi,3.60,3.90,7.00,145,5000,19,24,12964
31 | 2,137,honda,gas,std,two,hatchback,fwd,front,86.60,144.60,63.90,50.80,1713,ohc,four,92,1bbl,2.91,3.41,9.60,58,4800,49,54,6479
32 | 2,137,honda,gas,std,two,hatchback,fwd,front,86.60,144.60,63.90,50.80,1819,ohc,four,92,1bbl,2.91,3.41,9.20,76,6000,31,38,6855
33 | 1,101,honda,gas,std,two,hatchback,fwd,front,93.70,150.00,64.00,52.60,1837,ohc,four,79,1bbl,2.91,3.07,10.10,60,5500,38,42,5399
34 | 1,101,honda,gas,std,two,hatchback,fwd,front,93.70,150.00,64.00,52.60,1940,ohc,four,92,1bbl,2.91,3.41,9.20,76,6000,30,34,6529
35 | 1,101,honda,gas,std,two,hatchback,fwd,front,93.70,150.00,64.00,52.60,1956,ohc,four,92,1bbl,2.91,3.41,9.20,76,6000,30,34,7129
36 | 0,110,honda,gas,std,four,sedan,fwd,front,96.50,163.40,64.00,54.50,2010,ohc,four,92,1bbl,2.91,3.41,9.20,76,6000,30,34,7295
37 | 0,78,honda,gas,std,four,wagon,fwd,front,96.50,157.10,63.90,58.30,2024,ohc,four,92,1bbl,2.92,3.41,9.20,76,6000,30,34,7295
38 | 0,106,honda,gas,std,two,hatchback,fwd,front,96.50,167.50,65.20,53.30,2236,ohc,four,110,1bbl,3.15,3.58,9.00,86,5800,27,33,7895
39 | 0,106,honda,gas,std,two,hatchback,fwd,front,96.50,167.50,65.20,53.30,2289,ohc,four,110,1bbl,3.15,3.58,9.00,86,5800,27,33,9095
40 | 0,85,honda,gas,std,four,sedan,fwd,front,96.50,175.40,65.20,54.10,2304,ohc,four,110,1bbl,3.15,3.58,9.00,86,5800,27,33,8845
41 | 0,85,honda,gas,std,four,sedan,fwd,front,96.50,175.40,62.50,54.10,2372,ohc,four,110,1bbl,3.15,3.58,9.00,86,5800,27,33,10295
42 | 0,85,honda,gas,std,four,sedan,fwd,front,96.50,175.40,65.20,54.10,2465,ohc,four,110,mpfi,3.15,3.58,9.00,101,5800,24,28,12945
43 | 1,107,honda,gas,std,two,sedan,fwd,front,96.50,169.10,66.00,51.00,2293,ohc,four,110,2bbl,3.15,3.58,9.10,100,5500,25,31,10345
44 | 0,?,isuzu,gas,std,four,sedan,rwd,front,94.30,170.70,61.80,53.50,2337,ohc,four,111,2bbl,3.31,3.23,8.50,78,4800,24,29,6785
45 | 1,?,isuzu,gas,std,two,sedan,fwd,front,94.50,155.90,63.60,52.00,1874,ohc,four,90,2bbl,3.03,3.11,9.60,70,5400,38,43,?
46 | 0,?,isuzu,gas,std,four,sedan,fwd,front,94.50,155.90,63.60,52.00,1909,ohc,four,90,2bbl,3.03,3.11,9.60,70,5400,38,43,?
47 | 2,?,isuzu,gas,std,two,hatchback,rwd,front,96.00,172.60,65.20,51.40,2734,ohc,four,119,spfi,3.43,3.23,9.20,90,5000,24,29,11048
48 | 0,145,jaguar,gas,std,four,sedan,rwd,front,113.00,199.60,69.60,52.80,4066,dohc,six,258,mpfi,3.63,4.17,8.10,176,4750,15,19,32250
49 | 0,?,jaguar,gas,std,four,sedan,rwd,front,113.00,199.60,69.60,52.80,4066,dohc,six,258,mpfi,3.63,4.17,8.10,176,4750,15,19,35550
50 | 0,?,jaguar,gas,std,two,sedan,rwd,front,102.00,191.70,70.60,47.80,3950,ohcv,twelve,326,mpfi,3.54,2.76,11.50,262,5000,13,17,36000
51 | 1,104,mazda,gas,std,two,hatchback,fwd,front,93.10,159.10,64.20,54.10,1890,ohc,four,91,2bbl,3.03,3.15,9.00,68,5000,30,31,5195
52 | 1,104,mazda,gas,std,two,hatchback,fwd,front,93.10,159.10,64.20,54.10,1900,ohc,four,91,2bbl,3.03,3.15,9.00,68,5000,31,38,6095
53 | 1,104,mazda,gas,std,two,hatchback,fwd,front,93.10,159.10,64.20,54.10,1905,ohc,four,91,2bbl,3.03,3.15,9.00,68,5000,31,38,6795
54 | 1,113,mazda,gas,std,four,sedan,fwd,front,93.10,166.80,64.20,54.10,1945,ohc,four,91,2bbl,3.03,3.15,9.00,68,5000,31,38,6695
55 | 1,113,mazda,gas,std,four,sedan,fwd,front,93.10,166.80,64.20,54.10,1950,ohc,four,91,2bbl,3.08,3.15,9.00,68,5000,31,38,7395
56 | 3,150,mazda,gas,std,two,hatchback,rwd,front,95.30,169.00,65.70,49.60,2380,rotor,two,70,4bbl,?,?,9.40,101,6000,17,23,10945
57 | 3,150,mazda,gas,std,two,hatchback,rwd,front,95.30,169.00,65.70,49.60,2380,rotor,two,70,4bbl,?,?,9.40,101,6000,17,23,11845
58 | 3,150,mazda,gas,std,two,hatchback,rwd,front,95.30,169.00,65.70,49.60,2385,rotor,two,70,4bbl,?,?,9.40,101,6000,17,23,13645
59 | 3,150,mazda,gas,std,two,hatchback,rwd,front,95.30,169.00,65.70,49.60,2500,rotor,two,80,mpfi,?,?,9.40,135,6000,16,23,15645
60 | 1,129,mazda,gas,std,two,hatchback,fwd,front,98.80,177.80,66.50,53.70,2385,ohc,four,122,2bbl,3.39,3.39,8.60,84,4800,26,32,8845
61 | 0,115,mazda,gas,std,four,sedan,fwd,front,98.80,177.80,66.50,55.50,2410,ohc,four,122,2bbl,3.39,3.39,8.60,84,4800,26,32,8495
62 | 1,129,mazda,gas,std,two,hatchback,fwd,front,98.80,177.80,66.50,53.70,2385,ohc,four,122,2bbl,3.39,3.39,8.60,84,4800,26,32,10595
63 | 0,115,mazda,gas,std,four,sedan,fwd,front,98.80,177.80,66.50,55.50,2410,ohc,four,122,2bbl,3.39,3.39,8.60,84,4800,26,32,10245
64 | 0,?,mazda,diesel,std,?,sedan,fwd,front,98.80,177.80,66.50,55.50,2443,ohc,four,122,idi,3.39,3.39,22.70,64,4650,36,42,10795
65 | 0,115,mazda,gas,std,four,hatchback,fwd,front,98.80,177.80,66.50,55.50,2425,ohc,four,122,2bbl,3.39,3.39,8.60,84,4800,26,32,11245
66 | 0,118,mazda,gas,std,four,sedan,rwd,front,104.90,175.00,66.10,54.40,2670,ohc,four,140,mpfi,3.76,3.16,8.00,120,5000,19,27,18280
67 | 0,?,mazda,diesel,std,four,sedan,rwd,front,104.90,175.00,66.10,54.40,2700,ohc,four,134,idi,3.43,3.64,22.00,72,4200,31,39,18344
68 | -1,93,mercedes-benz,diesel,turbo,four,sedan,rwd,front,110.00,190.90,70.30,56.50,3515,ohc,five,183,idi,3.58,3.64,21.50,123,4350,22,25,25552
69 | -1,93,mercedes-benz,diesel,turbo,four,wagon,rwd,front,110.00,190.90,70.30,58.70,3750,ohc,five,183,idi,3.58,3.64,21.50,123,4350,22,25,28248
70 | 0,93,mercedes-benz,diesel,turbo,two,hardtop,rwd,front,106.70,187.50,70.30,54.90,3495,ohc,five,183,idi,3.58,3.64,21.50,123,4350,22,25,28176
71 | -1,93,mercedes-benz,diesel,turbo,four,sedan,rwd,front,115.60,202.60,71.70,56.30,3770,ohc,five,183,idi,3.58,3.64,21.50,123,4350,22,25,31600
72 | -1,?,mercedes-benz,gas,std,four,sedan,rwd,front,115.60,202.60,71.70,56.50,3740,ohcv,eight,234,mpfi,3.46,3.10,8.30,155,4750,16,18,34184
73 | 3,142,mercedes-benz,gas,std,two,convertible,rwd,front,96.60,180.30,70.50,50.80,3685,ohcv,eight,234,mpfi,3.46,3.10,8.30,155,4750,16,18,35056
74 | 0,?,mercedes-benz,gas,std,four,sedan,rwd,front,120.90,208.10,71.70,56.70,3900,ohcv,eight,308,mpfi,3.80,3.35,8.00,184,4500,14,16,40960
75 | 1,?,mercedes-benz,gas,std,two,hardtop,rwd,front,112.00,199.20,72.00,55.40,3715,ohcv,eight,304,mpfi,3.80,3.35,8.00,184,4500,14,16,45400
76 | 1,?,mercury,gas,turbo,two,hatchback,rwd,front,102.70,178.40,68.00,54.80,2910,ohc,four,140,mpfi,3.78,3.12,8.00,175,5000,19,24,16503
77 | 2,161,mitsubishi,gas,std,two,hatchback,fwd,front,93.70,157.30,64.40,50.80,1918,ohc,four,92,2bbl,2.97,3.23,9.40,68,5500,37,41,5389
78 | 2,161,mitsubishi,gas,std,two,hatchback,fwd,front,93.70,157.30,64.40,50.80,1944,ohc,four,92,2bbl,2.97,3.23,9.40,68,5500,31,38,6189
79 | 2,161,mitsubishi,gas,std,two,hatchback,fwd,front,93.70,157.30,64.40,50.80,2004,ohc,four,92,2bbl,2.97,3.23,9.40,68,5500,31,38,6669
80 | 1,161,mitsubishi,gas,turbo,two,hatchback,fwd,front,93,157.30,63.80,50.80,2145,ohc,four,98,spdi,3.03,3.39,7.60,102,5500,24,30,7689
81 | 3,153,mitsubishi,gas,turbo,two,hatchback,fwd,front,96.30,173.00,65.40,49.40,2370,ohc,four,110,spdi,3.17,3.46,7.50,116,5500,23,30,9959
82 | 3,153,mitsubishi,gas,std,two,hatchback,fwd,front,96.30,173.00,65.40,49.40,2328,ohc,four,122,2bbl,3.35,3.46,8.50,88,5000,25,32,8499
83 | 3,?,mitsubishi,gas,turbo,two,hatchback,fwd,front,95.90,173.20,66.30,50.20,2833,ohc,four,156,spdi,3.58,3.86,7.00,145,5000,19,24,12629
84 | 3,?,mitsubishi,gas,turbo,two,hatchback,fwd,front,95.90,173.20,66.30,50.20,2921,ohc,four,156,spdi,3.59,3.86,7.00,145,5000,19,24,14869
85 | 3,?,mitsubishi,gas,turbo,two,hatchback,fwd,front,95.90,173.20,66.30,50.20,2926,ohc,four,156,spdi,3.59,3.86,7.00,145,5000,19,24,14489
86 | 1,125,mitsubishi,gas,std,four,sedan,fwd,front,96.30,172.40,65.40,51.60,2365,ohc,four,122,2bbl,3.35,3.46,8.50,88,5000,25,32,6989
87 | 1,125,mitsubishi,gas,std,four,sedan,fwd,front,96.30,172.40,65.40,51.60,2405,ohc,four,122,2bbl,3.35,3.46,8.50,88,5000,25,32,8189
88 | 1,125,mitsubishi,gas,turbo,four,sedan,fwd,front,96.30,172.40,65.40,51.60,2403,ohc,four,110,spdi,3.17,3.46,7.50,116,5500,23,30,9279
89 | -1,137,mitsubishi,gas,std,four,sedan,fwd,front,96.30,172.40,65.40,51.60,2403,ohc,four,110,spdi,3.17,3.46,7.50,116,5500,23,30,9279
90 | 1,128,nissan,gas,std,two,sedan,fwd,front,94.50,165.30,63.80,54.50,1889,ohc,four,97,2bbl,3.15,3.29,9.40,69,5200,31,37,5499
91 | 1,128,nissan,diesel,std,two,sedan,fwd,front,94.50,165.30,63.80,54.50,2017,ohc,four,103,idi,2.99,3.47,21.90,55,4800,45,50,7099
92 | 1,128,nissan,gas,std,two,sedan,fwd,front,94.50,165.30,63.80,54.50,1918,ohc,four,97,2bbl,3.15,3.29,9.40,69,5200,31,37,6649
93 | 1,122,nissan,gas,std,four,sedan,fwd,front,94.50,165.30,63.80,54.50,1938,ohc,four,97,2bbl,3.15,3.29,9.40,69,5200,31,37,6849
94 | 1,103,nissan,gas,std,four,wagon,fwd,front,94.50,170.20,63.80,53.50,2024,ohc,four,97,2bbl,3.15,3.29,9.40,69,5200,31,37,7349
95 | 1,128,nissan,gas,std,two,sedan,fwd,front,94.50,165.30,63.80,54.50,1951,ohc,four,97,2bbl,3.15,3.29,9.40,69,5200,31,37,7299
96 | 1,128,nissan,gas,std,two,hatchback,fwd,front,94.50,165.60,63.80,53.30,2028,ohc,four,97,2bbl,3.15,3.29,9.40,69,5200,31,37,7799
97 | 1,122,nissan,gas,std,four,sedan,fwd,front,94.50,165.30,63.80,54.50,1971,ohc,four,97,2bbl,3.15,3.29,9.40,69,5200,31,37,7499
98 | 1,103,nissan,gas,std,four,wagon,fwd,front,94.50,170.20,63.80,53.50,2037,ohc,four,97,2bbl,3.15,3.29,9.40,69,5200,31,37,7999
99 | 2,168,nissan,gas,std,two,hardtop,fwd,front,95.10,162.40,63.80,53.30,2008,ohc,four,97,2bbl,3.15,3.29,9.40,69,5200,31,37,8249
100 | 0,106,nissan,gas,std,four,hatchback,fwd,front,97.20,173.40,65.20,54.70,2324,ohc,four,120,2bbl,3.33,3.47,8.50,97,5200,27,34,8949
101 | 0,106,nissan,gas,std,four,sedan,fwd,front,97.20,173.40,65.20,54.70,2302,ohc,four,120,2bbl,3.33,3.47,8.50,97,5200,27,34,9549
102 | 0,128,nissan,gas,std,four,sedan,fwd,front,100.40,181.70,66.50,55.10,3095,ohcv,six,181,mpfi,3.43,3.27,9.00,152,5200,17,22,13499
103 | 0,108,nissan,gas,std,four,wagon,fwd,front,100.40,184.60,66.50,56.10,3296,ohcv,six,181,mpfi,3.43,3.27,9.00,152,5200,17,22,14399
104 | 0,108,nissan,gas,std,four,sedan,fwd,front,100.40,184.60,66.50,55.10,3060,ohcv,six,181,mpfi,3.43,3.27,9.00,152,5200,19,25,13499
105 | 3,194,nissan,gas,std,two,hatchback,rwd,front,91.30,170.70,67.90,49.70,3071,ohcv,six,181,mpfi,3.43,3.27,9.00,160,5200,19,25,17199
106 | 3,194,nissan,gas,turbo,two,hatchback,rwd,front,91.30,170.70,67.90,49.70,3139,ohcv,six,181,mpfi,3.43,3.27,7.80,200,5200,17,23,19699
107 | 1,231,nissan,gas,std,two,hatchback,rwd,front,99.20,178.50,67.90,49.70,3139,ohcv,six,181,mpfi,3.43,3.27,9.00,160,5200,19,25,18399
108 | 0,161,peugot,gas,std,four,sedan,rwd,front,107.90,186.70,68.40,56.70,3020,l,four,120,mpfi,3.46,3.19,8.40,97,5000,19,24,11900
109 | 0,161,peugot,diesel,turbo,four,sedan,rwd,front,107.90,186.70,68.40,56.70,3197,l,four,152,idi,3.70,3.52,21.00,95,4150,28,33,13200
110 | 0,?,peugot,gas,std,four,wagon,rwd,front,114.20,198.90,68.40,58.70,3230,l,four,120,mpfi,3.46,3.19,8.40,97,5000,19,24,12440
111 | 0,?,peugot,diesel,turbo,four,wagon,rwd,front,114.20,198.90,68.40,58.70,3430,l,four,152,idi,3.70,3.52,21.00,95,4150,25,25,13860
112 | 0,161,peugot,gas,std,four,sedan,rwd,front,107.90,186.70,68.40,56.70,3075,l,four,120,mpfi,3.46,2.19,8.40,95,5000,19,24,15580
113 | 0,161,peugot,diesel,turbo,four,sedan,rwd,front,107.90,186.70,68.40,56.70,3252,l,four,152,idi,3.70,3.52,21.00,95,4150,28,33,16900
114 | 0,?,peugot,gas,std,four,wagon,rwd,front,114.20,198.90,68.40,56.70,3285,l,four,120,mpfi,3.46,2.19,8.40,95,5000,19,24,16695
115 | 0,?,peugot,diesel,turbo,four,wagon,rwd,front,114.20,198.90,68.40,58.70,3485,l,four,152,idi,3.70,3.52,21.00,95,4150,25,25,17075
116 | 0,161,peugot,gas,std,four,sedan,rwd,front,107.90,186.70,68.40,56.70,3075,l,four,120,mpfi,3.46,3.19,8.40,97,5000,19,24,16630
117 | 0,161,peugot,diesel,turbo,four,sedan,rwd,front,107.90,186.70,68.40,56.70,3252,l,four,152,idi,3.70,3.52,21.00,95,4150,28,33,17950
118 | 0,161,peugot,gas,turbo,four,sedan,rwd,front,108.00,186.70,68.30,56.00,3130,l,four,134,mpfi,3.61,3.21,7.00,142,5600,18,24,18150
119 | 1,119,plymouth,gas,std,two,hatchback,fwd,front,93.70,157.30,63.80,50.80,1918,ohc,four,90,2bbl,2.97,3.23,9.40,68,5500,37,41,5572
120 | 1,119,plymouth,gas,turbo,two,hatchback,fwd,front,93.70,157.30,63.80,50.80,2128,ohc,four,98,spdi,3.03,3.39,7.60,102,5500,24,30,7957
121 | 1,154,plymouth,gas,std,four,hatchback,fwd,front,93.70,157.30,63.80,50.60,1967,ohc,four,90,2bbl,2.97,3.23,9.40,68,5500,31,38,6229
122 | 1,154,plymouth,gas,std,four,sedan,fwd,front,93.70,167.30,63.80,50.80,1989,ohc,four,90,2bbl,2.97,3.23,9.40,68,5500,31,38,6692
123 | 1,154,plymouth,gas,std,four,sedan,fwd,front,93.70,167.30,63.80,50.80,2191,ohc,four,98,2bbl,2.97,3.23,9.40,68,5500,31,38,7609
124 | -1,74,plymouth,gas,std,four,wagon,fwd,front,103.30,174.60,64.60,59.80,2535,ohc,four,122,2bbl,3.35,3.46,8.50,88,5000,24,30,8921
125 | 3,?,plymouth,gas,turbo,two,hatchback,rwd,front,95.90,173.20,66.30,50.20,2818,ohc,four,156,spdi,3.59,3.86,7.00,145,5000,19,24,12764
126 | 3,186,porsche,gas,std,two,hatchback,rwd,front,94.50,168.90,68.30,50.20,2778,ohc,four,151,mpfi,3.94,3.11,9.50,143,5500,19,27,22018
127 | 3,?,porsche,gas,std,two,hardtop,rwd,rear,89.50,168.90,65.00,51.60,2756,ohcf,six,194,mpfi,3.74,2.90,9.50,207,5900,17,25,32528
128 | 3,?,porsche,gas,std,two,hardtop,rwd,rear,89.50,168.90,65.00,51.60,2756,ohcf,six,194,mpfi,3.74,2.90,9.50,207,5900,17,25,34028
129 | 3,?,porsche,gas,std,two,convertible,rwd,rear,89.50,168.90,65.00,51.60,2800,ohcf,six,194,mpfi,3.74,2.90,9.50,207,5900,17,25,37028
130 | 1,?,porsche,gas,std,two,hatchback,rwd,front,98.40,175.70,72.30,50.50,3366,dohcv,eight,203,mpfi,3.94,3.11,10.00,288,5750,17,28,?
131 | 0,?,renault,gas,std,four,wagon,fwd,front,96.10,181.50,66.50,55.20,2579,ohc,four,132,mpfi,3.46,3.90,8.70,?,?,23,31,9295
132 | 2,?,renault,gas,std,two,hatchback,fwd,front,96.10,176.80,66.60,50.50,2460,ohc,four,132,mpfi,3.46,3.90,8.70,?,?,23,31,9895
133 | 3,150,saab,gas,std,two,hatchback,fwd,front,99.10,186.60,66.50,56.10,2658,ohc,four,121,mpfi,3.54,3.07,9.31,110,5250,21,28,11850
134 | 2,104,saab,gas,std,four,sedan,fwd,front,99.10,186.60,66.50,56.10,2695,ohc,four,121,mpfi,3.54,3.07,9.30,110,5250,21,28,12170
135 | 3,150,saab,gas,std,two,hatchback,fwd,front,99.10,186.60,66.50,56.10,2707,ohc,four,121,mpfi,2.54,2.07,9.30,110,5250,21,28,15040
136 | 2,104,saab,gas,std,four,sedan,fwd,front,99.10,186.60,66.50,56.10,2758,ohc,four,121,mpfi,3.54,3.07,9.30,110,5250,21,28,15510
137 | 3,150,saab,gas,turbo,two,hatchback,fwd,front,99.10,186.60,66.50,56.10,2808,dohc,four,121,mpfi,3.54,3.07,9.00,160,5500,19,26,18150
138 | 2,104,saab,gas,turbo,four,sedan,fwd,front,99.10,186.60,66.50,56.10,2847,dohc,four,121,mpfi,3.54,3.07,9.00,160,5500,19,26,18620
139 | 2,83,subaru,gas,std,two,hatchback,fwd,front,93.70,156.90,63.40,53.70,2050,ohcf,four,97,2bbl,3.62,2.36,9.00,69,4900,31,36,5118
140 | 2,83,subaru,gas,std,two,hatchback,fwd,front,93.70,157.90,63.60,53.70,2120,ohcf,four,108,2bbl,3.62,2.64,8.70,73,4400,26,31,7053
141 | 2,83,subaru,gas,std,two,hatchback,4wd,front,93.30,157.30,63.80,55.70,2240,ohcf,four,108,2bbl,3.62,2.64,8.70,73,4400,26,31,7603
142 | 0,102,subaru,gas,std,four,sedan,fwd,front,97.20,172.00,65.40,52.50,2145,ohcf,four,108,2bbl,3.62,2.64,9.50,82,4800,32,37,7126
143 | 0,102,subaru,gas,std,four,sedan,fwd,front,97.20,172.00,65.40,52.50,2190,ohcf,four,108,2bbl,3.62,2.64,9.50,82,4400,28,33,7775
144 | 0,102,subaru,gas,std,four,sedan,fwd,front,97.20,172.00,65.40,52.50,2340,ohcf,four,108,mpfi,3.62,2.64,9.00,94,5200,26,32,9960
145 | 0,102,subaru,gas,std,four,sedan,4wd,front,97.00,172.00,65.40,54.30,2385,ohcf,four,108,2bbl,3.62,2.64,9.00,82,4800,24,25,9233
146 | 0,102,subaru,gas,turbo,four,sedan,4wd,front,97.00,172.00,65.40,54.30,2510,ohcf,four,108,mpfi,3.62,2.64,7.70,111,4800,24,29,11259
147 | 0,89,subaru,gas,std,four,wagon,fwd,front,97.00,173.50,65.40,53.00,2290,ohcf,four,108,2bbl,3.62,2.64,9.00,82,4800,28,32,7463
148 | 0,89,subaru,gas,std,four,wagon,fwd,front,97.00,173.50,65.40,53.00,2455,ohcf,four,108,mpfi,3.62,2.64,9.00,94,5200,25,31,10198
149 | 0,85,subaru,gas,std,four,wagon,4wd,front,96.90,173.60,65.40,54.90,2420,ohcf,four,108,2bbl,3.62,2.64,9.00,82,4800,23,29,8013
150 | 0,85,subaru,gas,turbo,four,wagon,4wd,front,96.90,173.60,65.40,54.90,2650,ohcf,four,108,mpfi,3.62,2.64,7.70,111,4800,23,23,11694
151 | 1,87,toyota,gas,std,two,hatchback,fwd,front,95.70,158.70,63.60,54.50,1985,ohc,four,92,2bbl,3.05,3.03,9.00,62,4800,35,39,5348
152 | 1,87,toyota,gas,std,two,hatchback,fwd,front,95.70,158.70,63.60,54.50,2040,ohc,four,92,2bbl,3.05,3.03,9.00,62,4800,31,38,6338
153 | 1,74,toyota,gas,std,four,hatchback,fwd,front,95.70,158.70,63.60,54.50,2015,ohc,four,92,2bbl,3.05,3.03,9.00,62,4800,31,38,6488
154 | 0,77,toyota,gas,std,four,wagon,fwd,front,95.70,169.70,63.60,59.10,2280,ohc,four,92,2bbl,3.05,3.03,9.00,62,4800,31,37,6918
155 | 0,81,toyota,gas,std,four,wagon,4wd,front,95.70,169.70,63.60,59.10,2290,ohc,four,92,2bbl,3.05,3.03,9.00,62,4800,27,32,7898
156 | 0,91,toyota,gas,std,four,wagon,4wd,front,95.70,169.70,63.60,59.10,3110,ohc,four,92,2bbl,3.05,3.03,9.00,62,4800,27,32,8778
157 | 0,91,toyota,gas,std,four,sedan,fwd,front,95.70,166.30,64.40,53.00,2081,ohc,four,98,2bbl,3.19,3.03,9.00,70,4800,30,37,6938
158 | 0,91,toyota,gas,std,four,hatchback,fwd,front,95.70,166.30,64.40,52.80,2109,ohc,four,98,2bbl,3.19,3.03,9.00,70,4800,30,37,7198
159 | 0,91,toyota,diesel,std,four,sedan,fwd,front,95.70,166.30,64.40,53.00,2275,ohc,four,110,idi,3.27,3.35,22.50,56,4500,34,36,7898
160 | 0,91,toyota,diesel,std,four,hatchback,fwd,front,95.70,166.30,64.40,52.80,2275,ohc,four,110,idi,3.27,3.35,22.50,56,4500,38,47,7788
161 | 0,91,toyota,gas,std,four,sedan,fwd,front,95.70,166.30,64.40,53.00,2094,ohc,four,98,2bbl,3.19,3.03,9.00,70,4800,38,47,7738
162 | 0,91,toyota,gas,std,four,hatchback,fwd,front,95.70,166.30,64.40,52.80,2122,ohc,four,98,2bbl,3.19,3.03,9.00,70,4800,28,34,8358
163 | 0,91,toyota,gas,std,four,sedan,fwd,front,95.70,166.30,64.40,52.80,2140,ohc,four,98,2bbl,3.19,3.03,9.00,70,4800,28,34,9258
164 | 1,168,toyota,gas,std,two,sedan,rwd,front,94.50,168.70,64.00,52.60,2169,ohc,four,98,2bbl,3.19,3.03,9.00,70,4800,29,34,8058
165 | 1,168,toyota,gas,std,two,hatchback,rwd,front,94.50,168.70,64.00,52.60,2204,ohc,four,98,2bbl,3.19,3.03,9.00,70,4800,29,34,8238
166 | 1,168,toyota,gas,std,two,sedan,rwd,front,94.50,168.70,64.00,52.60,2265,dohc,four,98,mpfi,3.24,3.08,9.40,112,6600,26,29,9298
167 | 1,168,toyota,gas,std,two,hatchback,rwd,front,94.50,168.70,64.00,52.60,2300,dohc,four,98,mpfi,3.24,3.08,9.40,112,6600,26,29,9538
168 | 2,134,toyota,gas,std,two,hardtop,rwd,front,98.40,176.20,65.60,52.00,2540,ohc,four,146,mpfi,3.62,3.50,9.30,116,4800,24,30,8449
169 | 2,134,toyota,gas,std,two,hardtop,rwd,front,98.40,176.20,65.60,52.00,2536,ohc,four,146,mpfi,3.62,3.50,9.30,116,4800,24,30,9639
170 | 2,134,toyota,gas,std,two,hatchback,rwd,front,98.40,176.20,65.60,52.00,2551,ohc,four,146,mpfi,3.62,3.50,9.30,116,4800,24,30,9989
171 | 2,134,toyota,gas,std,two,hardtop,rwd,front,98.40,176.20,65.60,52.00,2679,ohc,four,146,mpfi,3.62,3.50,9.30,116,4800,24,30,11199
172 | 2,134,toyota,gas,std,two,hatchback,rwd,front,98.40,176.20,65.60,52.00,2714,ohc,four,146,mpfi,3.62,3.50,9.30,116,4800,24,30,11549
173 | 2,134,toyota,gas,std,two,convertible,rwd,front,98.40,176.20,65.60,53.00,2975,ohc,four,146,mpfi,3.62,3.50,9.30,116,4800,24,30,17669
174 | -1,65,toyota,gas,std,four,sedan,fwd,front,102.40,175.60,66.50,54.90,2326,ohc,four,122,mpfi,3.31,3.54,8.70,92,4200,29,34,8948
175 | -1,65,toyota,diesel,turbo,four,sedan,fwd,front,102.40,175.60,66.50,54.90,2480,ohc,four,110,idi,3.27,3.35,22.50,73,4500,30,33,10698
176 | -1,65,toyota,gas,std,four,hatchback,fwd,front,102.40,175.60,66.50,53.90,2414,ohc,four,122,mpfi,3.31,3.54,8.70,92,4200,27,32,9988
177 | -1,65,toyota,gas,std,four,sedan,fwd,front,102.40,175.60,66.50,54.90,2414,ohc,four,122,mpfi,3.31,3.54,8.70,92,4200,27,32,10898
178 | -1,65,toyota,gas,std,four,hatchback,fwd,front,102.40,175.60,66.50,53.90,2458,ohc,four,122,mpfi,3.31,3.54,8.70,92,4200,27,32,11248
179 | 3,197,toyota,gas,std,two,hatchback,rwd,front,102.90,183.50,67.70,52.00,2976,dohc,six,171,mpfi,3.27,3.35,9.30,161,5200,20,24,16558
180 | 3,197,toyota,gas,std,two,hatchback,rwd,front,102.90,183.50,67.70,52.00,3016,dohc,six,171,mpfi,3.27,3.35,9.30,161,5200,19,24,15998
181 | -1,90,toyota,gas,std,four,sedan,rwd,front,104.50,187.80,66.50,54.10,3131,dohc,six,171,mpfi,3.27,3.35,9.20,156,5200,20,24,15690
182 | -1,?,toyota,gas,std,four,wagon,rwd,front,104.50,187.80,66.50,54.10,3151,dohc,six,161,mpfi,3.27,3.35,9.20,156,5200,19,24,15750
183 | 2,122,volkswagen,diesel,std,two,sedan,fwd,front,97.30,171.70,65.50,55.70,2261,ohc,four,97,idi,3.01,3.40,23.00,52,4800,37,46,7775
184 | 2,122,volkswagen,gas,std,two,sedan,fwd,front,97.30,171.70,65.50,55.70,2209,ohc,four,109,mpfi,3.19,3.40,9.00,85,5250,27,34,7975
185 | 2,94,volkswagen,diesel,std,four,sedan,fwd,front,97.30,171.70,65.50,55.70,2264,ohc,four,97,idi,3.01,3.40,23.00,52,4800,37,46,7995
186 | 2,94,volkswagen,gas,std,four,sedan,fwd,front,97.30,171.70,65.50,55.70,2212,ohc,four,109,mpfi,3.19,3.40,9.00,85,5250,27,34,8195
187 | 2,94,volkswagen,gas,std,four,sedan,fwd,front,97.30,171.70,65.50,55.70,2275,ohc,four,109,mpfi,3.19,3.40,9.00,85,5250,27,34,8495
188 | 2,94,volkswagen,diesel,turbo,four,sedan,fwd,front,97.30,171.70,65.50,55.70,2319,ohc,four,97,idi,3.01,3.40,23.00,68,4500,37,42,9495
189 | 2,94,volkswagen,gas,std,four,sedan,fwd,front,97.30,171.70,65.50,55.70,2300,ohc,four,109,mpfi,3.19,3.40,10.00,100,5500,26,32,9995
190 | 3,?,volkswagen,gas,std,two,convertible,fwd,front,94.50,159.30,64.20,55.60,2254,ohc,four,109,mpfi,3.19,3.40,8.50,90,5500,24,29,11595
191 | 3,256,volkswagen,gas,std,two,hatchback,fwd,front,94.50,165.70,64.00,51.40,2221,ohc,four,109,mpfi,3.19,3.40,8.50,90,5500,24,29,9980
192 | 0,?,volkswagen,gas,std,four,sedan,fwd,front,100.40,180.20,66.90,55.10,2661,ohc,five,136,mpfi,3.19,3.40,8.50,110,5500,19,24,13295
193 | 0,?,volkswagen,diesel,turbo,four,sedan,fwd,front,100.40,180.20,66.90,55.10,2579,ohc,four,97,idi,3.01,3.40,23.00,68,4500,33,38,13845
194 | 0,?,volkswagen,gas,std,four,wagon,fwd,front,100.40,183.10,66.90,55.10,2563,ohc,four,109,mpfi,3.19,3.40,9.00,88,5500,25,31,12290
195 | -2,103,volvo,gas,std,four,sedan,rwd,front,104.30,188.80,67.20,56.20,2912,ohc,four,141,mpfi,3.78,3.15,9.50,114,5400,23,28,12940
196 | -1,74,volvo,gas,std,four,wagon,rwd,front,104.30,188.80,67.20,57.50,3034,ohc,four,141,mpfi,3.78,3.15,9.50,114,5400,23,28,13415
197 | -2,103,volvo,gas,std,four,sedan,rwd,front,104.30,188.80,67.20,56.20,2935,ohc,four,141,mpfi,3.78,3.15,9.50,114,5400,24,28,15985
198 | -1,74,volvo,gas,std,four,wagon,rwd,front,104.30,188.80,67.20,57.50,3042,ohc,four,141,mpfi,3.78,3.15,9.50,114,5400,24,28,16515
199 | -2,103,volvo,gas,turbo,four,sedan,rwd,front,104.30,188.80,67.20,56.20,3045,ohc,four,130,mpfi,3.62,3.15,7.50,162,5100,17,22,18420
200 | -1,74,volvo,gas,turbo,four,wagon,rwd,front,104.30,188.80,67.20,57.50,3157,ohc,four,130,mpfi,3.62,3.15,7.50,162,5100,17,22,18950
201 | -1,95,volvo,gas,std,four,sedan,rwd,front,109.10,188.80,68.90,55.50,2952,ohc,four,141,mpfi,3.78,3.15,9.50,114,5400,23,28,16845
202 | -1,95,volvo,gas,turbo,four,sedan,rwd,front,109.10,188.80,68.80,55.50,3049,ohc,four,141,mpfi,3.78,3.15,8.70,160,5300,19,25,19045
203 | -1,95,volvo,gas,std,four,sedan,rwd,front,109.10,188.80,68.90,55.50,3012,ohcv,six,173,mpfi,3.58,2.87,8.80,134,5500,18,23,21485
204 | -1,95,volvo,diesel,turbo,four,sedan,rwd,front,109.10,188.80,68.90,55.50,3217,ohc,six,145,idi,3.01,3.40,23.00,106,4800,26,27,22470
205 | -1,95,volvo,gas,turbo,four,sedan,rwd,front,109.10,188.80,68.90,55.50,3062,ohc,four,141,mpfi,3.78,3.15,9.50,114,5400,19,25,22625
206 |
--------------------------------------------------------------------------------