<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivo para Programação em Python - Bóson Treinamentos em Ciência e Tecnologia</title>
	<atom:link href="https://www.bosontreinamentos.com.br/category/programacao-em-python/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bosontreinamentos.com.br/category/programacao-em-python/</link>
	<description>Artigos e Tutoriais sobre Desenvolvimento de Software, Bancos de Dados SQL, Linux, Lógica de Programação, Inteligência Artificial, Hardware, Eletrônica, Arduino, Técnicas e Teorias de Estudo e Aprendizagem, Carreira em TI, Ciências Cognitivas, e muito mais!</description>
	<lastBuildDate>Thu, 24 Oct 2024 11:14:17 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.5</generator>
	<item>
		<title>Descobrir número que falta em lista de 1000 números sequenciais em Python</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-python/descobrir-numero-que-falta-em-lista-de-1000-numeros-sequenciais-em-python/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-python/descobrir-numero-que-falta-em-lista-de-1000-numeros-sequenciais-em-python/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Thu, 24 Oct 2024 11:14:17 +0000</pubDate>
				<category><![CDATA[Programação em Python]]></category>
		<category><![CDATA[Algoritmos]]></category>
		<category><![CDATA[Lógica de Programação]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://www.bosontreinamentos.com.br/?p=20361</guid>

					<description><![CDATA[<p>Descobrir número que falta em lista de 1000 números sequenciais em Python Neste tutorial vamos escrever um pequeno programa em linguagem Python que irá gerar uma lista com os números de 1 até 1000 (sequenciais), colocados depois em ordem aleatória, e então retirar um único número dessa lista, de forma aleatória também (não sabemos qual será o número retirado). Na sequência, o programa executará uma função que varre essa lista e descobre qual o número que está faltando, informando-o ao usuário. Qual o nosso objetivo com esse script? Estudar e praticar técnicas de programação. No caso iremos trabalhar com geração de números aleatórios, embaralhamento de listas, definição de funções e aplicação de lógica para resolver problemas. Abaixo temos o código usado, e na sequência a explicação detalhada de seu funcionamento. Fique à vontade para alterar o código a seu gosto, modificando ou acrescentando funcionalidades ao script. Código em Python import random # Função para encontrar o número que está faltando def encontrar_numero_faltando(lista):    # A soma esperada dos números de 1 a 1000    soma_esperada = sum(range(1, 1001))    # A soma dos números na lista com um número faltando    soma_lista = sum(lista)    # O número que está faltando será a diferença entre [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/descobrir-numero-que-falta-em-lista-de-1000-numeros-sequenciais-em-python/">Descobrir número que falta em lista de 1000 números sequenciais em Python</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Descobrir número que falta em lista de 1000 números sequenciais em Python</h1>
<p><span style="font-weight: 400;">Neste tutorial vamos escrever um pequeno programa em <a href="https://www.bosontreinamentos.com.br/programacao-com-python/">linguagem Python</a> que irá gerar uma lista com os números de 1 até 1000 (sequenciais), colocados depois em ordem aleatória, e então retirar um único número dessa lista, de forma aleatória também (não sabemos qual será o número retirado).</span></p>
<p><span style="font-weight: 400;">Na sequência, o programa executará uma função que varre essa lista e descobre qual o número que está faltando, informando-o ao usuário.</span></p>
<p>Qual o nosso objetivo com esse script? Estudar e praticar técnicas de programação. No caso iremos trabalhar com geração de números aleatórios, embaralhamento de listas, <a href="https://www.bosontreinamentos.com.br/programacao-em-python/funcoes-em-python-introducao/">definição de funções</a> e aplicação de lógica para resolver problemas.</p>
<p>Abaixo temos o código usado, e na sequência a explicação detalhada de seu funcionamento. Fique à vontade para alterar o código a seu gosto, modificando ou acrescentando funcionalidades ao script.</p>
<h2>Código em Python</h2>
<pre><strong>import random

</strong><span style="color: #339966;"><strong># Função para encontrar o número que está faltando
</strong></span><strong>def encontrar_numero_faltando(lista):</strong>
<strong>   <span style="color: #339966;"> # A soma esperada dos números de 1 a 1000</span></strong>
<strong>    soma_esperada = sum(range(1, 1001))</strong>
<strong>    <span style="color: #339966;"># A soma dos números na lista com um número faltando</span></strong>
<strong>    soma_lista = sum(lista)</strong>
<strong>    <span style="color: #339966;"># O número que está faltando será a diferença entre a soma esperada e a soma da lista</span></strong>
<strong>    return soma_esperada - soma_lista

</strong><span style="color: #339966;"><strong># Gerar uma lista de 1 a 1000</strong></span>
<strong>lista_numeros = list(range(1, 1001))

</strong><span style="color: #339966;"><strong># Embaralhar a lista de forma aleatória</strong></span>
<strong>random.shuffle(lista_numeros)

</strong><span style="color: #339966;"><strong># Remove um número aleatório da lista</strong></span>
<strong>numero_removido = random.choice(lista_numeros)</strong>
<strong>lista_numeros.remove(numero_removido)

</strong><span style="color: #339966;"><strong># Mostrar a lista</strong></span>
<strong>print(f'Lista de números: \n{lista_numeros}')

</strong><span style="color: #339966;"><strong># Encontrar o número faltando e exibir para o usuário</strong></span>
<strong>numero_faltando = encontrar_numero_faltando(lista_numeros)</strong>
<strong>print(f'\nO número faltando é: {numero_faltando}')</strong></pre>
<h2><strong>Como funciona esse script</strong></h2>
<p>Inicialmente, importamos o <a href="https://www.bosontreinamentos.com.br/programacao-em-python/7-2-python-geracao-de-numeros-aleatorios-e-modulo-random/">módulo <strong>random</strong></a>, que será necessário para a geração e manipulação dos números aleatórios (na verdade, <a href="https://docs.python.org/pt-br/3/library/random.html" target="_blank" rel="noopener">pseudoaleatórios</a>) que necessitaremos.</p>
<p>Na sequência, definimos a função &#8220;<em>encontrar_numero_faltando</em>&#8220;, que recebe como argumento a lista de números que será analisada.</p>
<p>Para determinar o número que está ausente nesta lista (haverá apenas um único número ausente dentre os mil valores), podemos aplicar várias técnicas. Aqui, iremos calcular a soma dos números de 1 até 1000 (armazenada na variável <em>soma_esperada</em>), e na sequência somaremos todos os números da lista passada à função, armazenado esse valor na variável <em>soma_lista</em>.</p>
<p>Então, basta subtrair da soma_esperada o valor de soma_lista, e o resultado será o número que falta (ausente). A função então retorna esse valor.</p>
<p>Fora da função, geramos uma lista de 1 até 1000 usando a <a href="https://www.bosontreinamentos.com.br/programacao-em-python/12-python-listas-01-criacao-insercao-e-alteracao-de-itens-metodo-append-e-outros/">função <strong>list()</strong></a> combinada com a <a href="https://www.bosontreinamentos.com.br/programacao-em-python/20-python-loop-for-estruturas-de-repeticao-funcao-range/">função <strong>range</strong></a>, embaralhamos os números com o método <strong>random.shuffle</strong>, e retiramos um número da lista com os métodos <strong>random.choice</strong> (escolhe o número) e <strong>lista_numeros.remove</strong> (remove esse número da lista).</p>
<p>Na sequência, exibimos a lista na tela com a <a href="https://www.bosontreinamentos.com.br/programacao-em-python/guia-basico-da-funcao-print-em-python/">função <strong>print</strong></a>, e finalmente encontramos o número faltante chamando a função criada <em>encontrar_numero_faltando</em>, exibindo no final seu valor para o usuário.</p>
<p>Note que cada vez que o script for executado, um número diferente será sacado da lista, pois a escolha do valor a ser retirado pelo método <strong>choice</strong> é aleatória.</p>
<h3>Conclusão</h3>
<p>Com este pequeno script pudemos treinar o emprego e manipulação de números aleatórios, além da criação de funções e da aplicação de raciocínio lógico para a resolução de problemas com programação.</p>
<p>Você pode alterar o algoritmo para, por exemplo, gerar mais de 1000 números (que tal 1 milhão de valores?) e rodá-lo para testar sua performance e verificar sua utilidade. Será que ele ainda roda de forma satisfatória?</p>
<p>Você também pode tentar portar esse script para outras linguagens de programação que prefira, como por exemplo <a href="https://www.bosontreinamentos.com.br/category/programacao-em-javascript/">JavaScript</a>, <a href="https://www.bosontreinamentos.com.br/category/csharp/">C#</a> ou <a href="https://www.bosontreinamentos.com.br/category/rust/">Rust</a>, para treinar abordagens ligeiramente diferentes de codificação.</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/descobrir-numero-que-falta-em-lista-de-1000-numeros-sequenciais-em-python/">Descobrir número que falta em lista de 1000 números sequenciais em Python</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-python/descobrir-numero-que-falta-em-lista-de-1000-numeros-sequenciais-em-python/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Lista de funções built-in do Python (funções internas)</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-python/lista-de-funcoes-built-in-do-python-funcoes-internas/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-python/lista-de-funcoes-built-in-do-python-funcoes-internas/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Tue, 18 Jun 2024 14:07:29 +0000</pubDate>
				<category><![CDATA[Programação em Python]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://www.bosontreinamentos.com.br/?p=20090</guid>

					<description><![CDATA[<p>Lista de funções built-in do Python Função built-in é uma função que já está disponível para uso imediato no interpretador Python (ou em outras linguagens de programação), ou seja, faz parte do próprio núcleo da linguagem. Essas funções fornecem funcionalidades essenciais que são amplamente utilizadas no desenvolvimento de programas. São também chamadas de funções internas. Algumas das funções built-in mais comuns incluem print(), len(), type(), sum(), max(), min(), entre outras. Elas estão sempre disponíveis e não requerem importação de módulos adicionais para serem utilizadas em um programa Python. A lista a seguir traz as funções internas do Python com uma breve descrição de cada uma. Funções internas do Python Função Descrição Sucinta abs() Retorna o valor absoluto de um número aiter() Cria um iterador assíncrono a partir de um objeto assíncrono. all() Retorna True se todos os elementos de um iterável forem verdadeiros ou se o iterável estiver vazio, caso contrário retorna False. any() Retorna True se qualquer elemento de um iterável for verdadeiro, caso contrário ou se estiver vazio retorna False. ascii() Retornar uma string contendo uma representação imprimível de um objeto bin() Converte um número inteiro em uma string binária prefixada com &#8216;0b&#8217;. bool() Classe que converte um [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/lista-de-funcoes-built-in-do-python-funcoes-internas/">Lista de funções built-in do Python (funções internas)</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Lista de funções built-in do Python</h2>
<p><strong>Função built-in</strong> é uma função que já está disponível para uso imediato no interpretador Python (ou em outras linguagens de programação), ou seja, faz parte do próprio núcleo da linguagem. Essas funções fornecem funcionalidades essenciais que são amplamente utilizadas no desenvolvimento de programas. São também chamadas de <em>funções internas</em>.</p>
<p>Algumas das funções built-in mais comuns incluem <a href="https://www.bosontreinamentos.com.br/programacao-em-python/guia-basico-da-funcao-print-em-python/">print()</a>, <a href="https://www.bosontreinamentos.com.br/programacao-em-python/08-python-strings-01-concatenacao-repeticao-imutabilidade-e-a-funcao-len/">len()</a>, <a href="https://www.bosontreinamentos.com.br/programacao-em-python/5-python-variaveis-tipos-de-dados-e-o-comando-type/">type()</a>, sum(), max(), min(), entre outras. Elas estão sempre disponíveis e não requerem importação de módulos adicionais para serem utilizadas em um programa Python.</p>
<p>A lista a seguir traz as funções internas do Python com uma breve descrição de cada uma.</p>
<h3>Funções internas do Python</h3>
<table style="border-collapse: collapse; width: 94.7063%; height: 1680px;" border="1">
<tbody>
<tr style="height: 24px;">
<th style="width: 27.8825%; text-align: center; height: 24px;">Função</th>
<th style="width: 72.1175%; text-align: center; height: 24px;">Descrição Sucinta</th>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">abs()</td>
<td style="width: 72.1175%; height: 24px;">Retorna o valor absoluto de um número</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">aiter()</td>
<td style="width: 72.1175%; height: 24px;">Cria um iterador assíncrono a partir de um objeto assíncrono.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">all()</td>
<td style="width: 72.1175%; height: 24px;">Retorna True se todos os elementos de um iterável forem verdadeiros ou se o iterável estiver vazio, caso contrário retorna False.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">any()</td>
<td style="width: 72.1175%; height: 24px;">Retorna True se qualquer elemento de um iterável for verdadeiro, caso contrário ou se estiver vazio retorna False.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">ascii()</td>
<td style="width: 72.1175%; height: 24px;">Retornar uma string contendo uma representação imprimível de um objeto</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">bin()</td>
<td style="width: 72.1175%; height: 24px;">Converte um número inteiro em uma string binária prefixada com &#8216;0b&#8217;.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">bool()</td>
<td style="width: 72.1175%; height: 24px;">Classe que converte um valor em um booleano, retornando True ou False.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">breakpoint()</td>
<td style="width: 72.1175%; height: 24px;">Cria um ponto de interrupção em um ponto do código para depuração interativa.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">bytearray()</td>
<td style="width: 72.1175%; height: 24px;">Classe que retorna um novo array de bytes mutável.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">bytes()</td>
<td style="width: 72.1175%; height: 24px;">Classe que retorna um objeto &#8220;bytes&#8221; constituído de uma sequência de inteiros imutável.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">callable()</td>
<td style="width: 72.1175%; height: 24px;">Verifica se o objeto pode ser chamado, retornando True ou False</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">chr()</td>
<td style="width: 72.1175%; height: 24px;">Retorna o caractere Unicode correspondente a um número inteiro.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">classmethod()</td>
<td style="width: 72.1175%; height: 24px;">Converte um método em um método de classe.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">compile()</td>
<td style="width: 72.1175%; height: 24px;">Compila o código fonte em um objeto de código ou AST.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;"><a href="https://www.bosontreinamentos.com.br/programacao-em-python/introducao-aos-numeros-complexos-em-python/">complex()</a></td>
<td style="width: 72.1175%; height: 24px;">Classe que converte uma string ou número em um número complexo.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">delattr()</td>
<td style="width: 72.1175%; height: 24px;">Exclui um atributo de um objeto.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">dict()</td>
<td style="width: 72.1175%; height: 24px;">Classe que cria um novo dicionário.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">dir()</td>
<td style="width: 72.1175%; height: 24px;">Retorna uma lista de nomes de atributos válidos para um objeto.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">divmod()</td>
<td style="width: 72.1175%; height: 24px;">Retorna o quociente e o resto da divisão de dois números (não-complexos).</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;"><a href="https://www.bosontreinamentos.com.br/programacao-em-python/a-funcao-enumerate-em-python-numerar-elementos-em-uma-sequencia/">enumerate()</a></td>
<td style="width: 72.1175%; height: 24px;">Retorna uma tupla contendo um contador e os valores obtidos de um objeto iterável.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">eval()</td>
<td style="width: 72.1175%; height: 24px;">Avalia uma expressão Python em uma string.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">exec()</td>
<td style="width: 72.1175%; height: 24px;">Executa o código Python dinamicamente.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;"><a href="https://www.bosontreinamentos.com.br/php-programming/o-que-sao-funcoes-lambda-em-python-ou-funcoes-anonimas/">filter()</a></td>
<td style="width: 72.1175%; height: 24px;">Constrói um iterável a partir dos elementos de um iterável para os quais uma função retorna True.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">float()</td>
<td style="width: 72.1175%; height: 24px;">Classe que retorna um número de ponto flutuante a partir de um número inteiro ou uma string.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">format()</td>
<td style="width: 72.1175%; height: 24px;">Formata um valor especificado em uma representação formatada, controlada por uma especificação de formato.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">frozenset()</td>
<td style="width: 72.1175%; height: 24px;">Classe que retorna um novo conjunto imutável do tipo frozenset a partir de elementos de um iterável.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">getattr()</td>
<td style="width: 72.1175%; height: 24px;">Retorna o valor de um atributo nomeado de um objeto.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">globals()</td>
<td style="width: 72.1175%; height: 24px;">Retorna o dicionário que implementa o namespace do módulo atual.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">hasattr()</td>
<td style="width: 72.1175%; height: 24px;">Verifica se um objeto tem um determinado atributo retornando True ou False.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">hash()</td>
<td style="width: 72.1175%; height: 24px;">Retorna o valor de hash de um objeto, se houver.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">help()</td>
<td style="width: 72.1175%; height: 24px;">Invoca o sistema de ajuda interativa.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">hex()</td>
<td style="width: 72.1175%; height: 24px;">Converte um número inteiro em uma string hexadecimal em minúsculas prefixada com &#8216;0x&#8217;.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">id()</td>
<td style="width: 72.1175%; height: 24px;">Retorna a identificação numérica única de um objeto.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">input()</td>
<td style="width: 72.1175%; height: 24px;">Lê uma linha do fluxo de entrada e a retorna para uma variável ou outro objeto.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">int()</td>
<td style="width: 72.1175%; height: 24px;">Classe que retorna um número inteiro a partir de outro número ou de uma string.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">isinstance()</td>
<td style="width: 72.1175%; height: 24px;">Verifica se um objeto é uma instância de uma determinada classe.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">issubclass()</td>
<td style="width: 72.1175%; height: 24px;">Retirna True se uma classe é uma subclasse de outra.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">iter()</td>
<td style="width: 72.1175%; height: 24px;">Retorna um iterador para um objeto.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;"><a href="https://www.bosontreinamentos.com.br/programacao-em-python/08-python-strings-01-concatenacao-repeticao-imutabilidade-e-a-funcao-len/">len()</a></td>
<td style="width: 72.1175%; height: 24px;">Retorna o comprimento (número de itens) de um objeto</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">list()</td>
<td style="width: 72.1175%; height: 24px;">Classe que retorna uma lista a partir de uma sequência iterável.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">locals()</td>
<td style="width: 72.1175%; height: 24px;">Atualiza e retorna um dicionário que representa a tabela de símbolos locais atual.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;"><a href="https://www.bosontreinamentos.com.br/programacao-em-python/como-usar-a-funcao-map-em-python/">map()</a></td>
<td style="width: 72.1175%; height: 24px;">Aplica uma mesma função a todos os itens de um iterável.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">max()</td>
<td style="width: 72.1175%; height: 24px;">Retorna o maior item em um iterável.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">memoryview()</td>
<td style="width: 72.1175%; height: 24px;">Classe que retorna um objeto do tipo &#8220;visão de memória&#8221; a partir de um argumento passado.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">min()</td>
<td style="width: 72.1175%; height: 24px;">Retorna o menor item em um iterável.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">next()</td>
<td style="width: 72.1175%; height: 24px;">Retorna o próximo item de um iterador chamando o método __next__().</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">object()</td>
<td style="width: 72.1175%; height: 24px;">Classe que retorna um novo objeto base.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">oct()</td>
<td style="width: 72.1175%; height: 24px;">Converte um número inteiro em uma string octal prefixada com &#8216;0o&#8217;.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">open()</td>
<td style="width: 72.1175%; height: 24px;">Abre um arquivo e retorna um objeto de arquivo correspondente.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">ord()</td>
<td style="width: 72.1175%; height: 24px;">Retorna o valor numérico Unicode de um caractere.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">pow()</td>
<td style="width: 72.1175%; height: 24px;">Retorna a potência de um número (base elevado a um expoente).</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;"><a href="https://www.bosontreinamentos.com.br/programacao-em-python/guia-basico-da-funcao-print-em-python/">print()</a></td>
<td style="width: 72.1175%; height: 24px;">Imprime valores na saída padrão de texto.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">property()</td>
<td style="width: 72.1175%; height: 24px;">Classe que retorna um atributo de propriedade.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">range()</td>
<td style="width: 72.1175%; height: 24px;">Classe que retorna uma sequência de números.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">repr()</td>
<td style="width: 72.1175%; height: 24px;">Retorna uma string que contém uma representação de um objeto.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">reversed()</td>
<td style="width: 72.1175%; height: 24px;">Retorna um iterador reverso.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">round()</td>
<td style="width: 72.1175%; height: 24px;">Retorna um número arredondado para a precisão especificada após o ponto decimal.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">set()</td>
<td style="width: 72.1175%; height: 24px;">Classe que retorna um novo objeto do tipo conjunto (set).</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">setattr()</td>
<td style="width: 72.1175%; height: 24px;">Define o valor de um atributo de um objeto, sendo a contraparte de getattr().</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">slice()</td>
<td style="width: 72.1175%; height: 24px;">Classe que retorna um objeto fatiado (partes especificadas do objeto).</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">sorted()</td>
<td style="width: 72.1175%; height: 24px;">Retorna uma nova lista ordenada de elementos de um iterável.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">@staticmethod()</td>
<td style="width: 72.1175%; height: 24px;">Converte um método em um método estático.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">str()</td>
<td style="width: 72.1175%; height: 24px;">Retorna uma representação de string de um objeto.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">sum()</td>
<td style="width: 72.1175%; height: 24px;">Retorna a soma total dos elementos de um iterável, como por exemplo uma lista de valores.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">super()</td>
<td style="width: 72.1175%; height: 24px;">Classe que retorna um objeto proxy que delega chamadas de método para uma classe pai ou irmã de um tipo</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">tuple()</td>
<td style="width: 72.1175%; height: 24px;">Classe que retorna uma tupla a partir de um objeto iterável, como uma lista.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;"><a href="https://www.bosontreinamentos.com.br/programacao-em-python/5-python-variaveis-tipos-de-dados-e-o-comando-type/">type()</a></td>
<td style="width: 72.1175%; height: 24px;">Classe que retorna o tipo de um objeto.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;">vars()</td>
<td style="width: 72.1175%; height: 24px;">Retorna o dicionário de atributos de um objeto, como um módulo, classe ou instância, entre outros.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 27.8825%; height: 24px;"><a href="https://www.bosontreinamentos.com.br/programacao-em-python/como-usar-a-funcao-zip-em-python/">zip()</a></td>
<td style="width: 72.1175%; height: 24px;">Combina iteráveis em tuplas pareadas, iterando sobre vários iteráveis ​​em paralelo, produzindo tuplas com um item de cada um.</td>
</tr>
</tbody>
</table>
<p>É isso aí! Vimos neste artigo um resumo de todas as funções internas do Python, com uma breve descrição de cada uma delas. Para saber mais sobre cada uma dessas funções built-in, consulte a documentação oficial do Python na página a seguir: <a href="https://docs.python.org/3/library/functions.html">Funções Built-In do Python</a>.</p>
<h3>Colabore com a Bóson Treinamentos</h3>
<p>Ajude o canal adquirindo meus cursos na Udemy:</p>
<ul>
<li>Bancos de Dados com MySQL Básico: <a href="https://bit.ly/35QdWE4" target="_blank" rel="noopener">https://bit.ly/35QdWE4</a></li>
<li>Lógica de Programação com Português Estruturado: <a href="https://bit.ly/3QKPn22" target="_blank" rel="noopener">https://bit.ly/3QKPn22</a></li>
<li>Programação em Python do Zero: <a href="https://bit.ly/python-boson" target="_blank" rel="noopener">https://bit.ly/python-boson</a></li>
</ul>
<p>Adquira também livros e outros itens na loja da Bóson Treinamentos na Amazon e ajude o canal a se manter e crescer: <a href="https://www.amazon.com.br/shop/bosontreinamentos" target="_blank" rel="noopener">https://www.amazon.com.br/shop/bosontreinamentos</a></p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/lista-de-funcoes-built-in-do-python-funcoes-internas/">Lista de funções built-in do Python (funções internas)</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-python/lista-de-funcoes-built-in-do-python-funcoes-internas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tipos de Dados no SQLite e tipos correspondentes em Python</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-python/tipos-de-dados-no-sqlite-e-tipos-correspondentes-em-python/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-python/tipos-de-dados-no-sqlite-e-tipos-correspondentes-em-python/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Tue, 21 May 2024 13:23:06 +0000</pubDate>
				<category><![CDATA[Programação em Python]]></category>
		<category><![CDATA[Bancos de Dados]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SQLite]]></category>
		<guid isPermaLink="false">https://www.bosontreinamentos.com.br/?p=20077</guid>

					<description><![CDATA[<p>Tipos de Dados no SQLite e os tipos correspondentes em Python Neste artigo vamos discutir brevemente os tipos de dados disponíveis no SQLite, juntamente com os tipos de dados correspondentes no Python. O que são Tipos de Dados? Os tipos de dados representam os diferentes formatos e faixas de valores que podem ser armazenados em um banco de dados. Eles definem o tipo de informação que pode ser armazenado em uma coluna de uma tabela, e seu domínio (faixa de valores válidos). Também determinam como os dados serão armazenados em disco, como serão manipulados e quais operações podem (ou não) ser realizadas sobre eles. Os tipos em um banco de dados são importantes porque garantem a integridade dos dados e ajudam a otimizar o armazenamento e a recuperação de informações. Cada um tem suas próprias características e restrições, e é importante escolher o tipo mais apropriado para cada coluna com base no tipo de informação que será armazenada. Classificação dos tipos de dados Podemos classificar os tipos de dados em bancos de dados da seguinte forma: Tipos numéricos: Armazenam valores numéricos, como valores inteiros, números de ponto flutuante e números decimais. Tipos de caracteres: Armazenam strings de caracteres, como nomes, endereços [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/tipos-de-dados-no-sqlite-e-tipos-correspondentes-em-python/">Tipos de Dados no SQLite e tipos correspondentes em Python</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Tipos de Dados no SQLite e os tipos correspondentes em Python</h2>
<p>Neste artigo vamos discutir brevemente os tipos de dados disponíveis no SQLite, juntamente com os tipos de dados correspondentes no Python.</p>
<h3>O que são Tipos de Dados?</h3>
<p>Os <a href="https://www.bosontreinamentos.com.br/programacao-em-python/5-python-variaveis-tipos-de-dados-e-o-comando-type/">tipos de dados</a> representam os diferentes formatos e faixas de valores que podem ser armazenados em um banco de dados. Eles definem o tipo de informação que pode ser armazenado em uma coluna de uma tabela, e seu domínio (faixa de valores válidos).</p>
<p>Também determinam como os dados serão armazenados em disco, como serão manipulados e quais operações podem (ou não) ser realizadas sobre eles.</p>
<p>Os tipos em um banco de dados são importantes porque garantem a integridade dos dados e ajudam a otimizar o armazenamento e a recuperação de informações. Cada um tem suas próprias características e restrições, e é importante escolher o tipo mais apropriado para cada coluna com base no tipo de informação que será armazenada.</p>
<h3>Classificação dos tipos de dados</h3>
<p>Podemos classificar os tipos de dados em bancos de dados da seguinte forma:</p>
<ul>
<li>Tipos numéricos: Armazenam valores numéricos, como valores inteiros, números de ponto flutuante e números decimais.</li>
<li>Tipos de caracteres: Armazenam strings de caracteres, como nomes, endereços e descrições. Podem incluir tipos de caracteres fixos (char) e variáveis (varchar).</li>
<li>Tipos de data e hora: Armazenam datas, horas ou data e hora combinadas. Isso pode incluir tipos como DATE, TIME, DATETIME e TIMESTAMP.</li>
<li>Tipos booleanos: Armazenam valores booleanos, como verdadeiro (true) ou falso (false).</li>
<li>Tipos de sequência: Armazenam sequências de bytes, como imagens, arquivos de áudio ou arquivos binários.</li>
<li>Tipos de coleção: Permitem armazenar coleções de valores, como listas, conjuntos e dicionários.</li>
<li>Tipos especiais: Alguns bancos de dados oferecem tipos de dados especiais para armazenar dados geoespaciais, JSON, endereços de rede, XML, etc.</li>
</ul>
<p>Vejamos agora como são classificados os tipos de dados no SQLite.</p>
<h3>Classe de Armazenamento em SQLite</h3>
<p>Uma classe de armazenamento é, basicamente, uma <em>coleção</em> de tipos de dados similares, como tipos inteiros, de ponto flutuante ou de strings. Em SQLite existem as seguintes cinco classes de armazenamento (tipos de dados) disponíveis:</p>
<table style="border-collapse: collapse; width: 86.657%; height: 83px;" border="1">
<tbody>
<tr>
<th style="width: 39.2887%; text-align: center;"><strong>Classe de Armazenamento</strong></th>
<th style="width: 60.7113%; text-align: center;"><strong>Valores Armazenados (Domínio)</strong></th>
</tr>
<tr>
<td style="width: 39.2887%; text-align: center;">NULL</td>
<td style="width: 60.7113%; text-align: center;">Valor nulo (NULL) ou ausente</td>
</tr>
<tr>
<td style="width: 39.2887%; text-align: center;">INTEGER</td>
<td style="width: 60.7113%; text-align: center;">Números inteiros com sinal, com até 8 bytes de tamanho. Também para data e hora no formato de tempo Unix (número de segundos decorridos desde 01/01/1970 00:00:00 UTC).</td>
</tr>
<tr>
<td style="width: 39.2887%; text-align: center;">REAL</td>
<td style="width: 60.7113%; text-align: center;">Valores de ponto flutuante de precisão dupla, no padrão IEEE com 8 bytes de comprimento</td>
</tr>
<tr>
<td style="width: 39.2887%; text-align: center;">TEXT</td>
<td style="width: 60.7113%; text-align: center;">Strings de texto de comprimento variável, codificadas em UTF-8, UTF-16BE ou UTF-16LE. Também empregado para armazenar dados de data e hora, no formato de strings no padrão ISO 8601.</td>
</tr>
<tr>
<td style="width: 39.2887%; text-align: center;">BLOB</td>
<td style="width: 60.7113%; text-align: center;">Dados armazenados exatamente como inseridos, geralmente em formato binário, como imagens, arquivos, etc.</td>
</tr>
</tbody>
</table>
<h4>E o tipo booleano (lógico)?</h4>
<p>O SQLite não possui uma classe de armazenamento separada para dados booleanos. Em vez disso, valores booleanos são armazenados na forma de números inteiros 0 (equivalente a falso) e 1 (equivalente a verdadeiro).</p>
<p>O sistema também reconhece as palavras-chave &#8220;TRUE&#8221; e &#8220;FALSE&#8221;, a partir da versão 3.23.0, sendo, na verdade, apenas grafias alternativas para os literais inteiros 1 e 0, respectivamente.</p>
<p>Na tabela a seguir comparamos os tipos de dados em SQLite e seus tipos correspondentes em Python:</p>
<table style="border-collapse: collapse; width: 86.5845%; height: 106px;" border="1">
<tbody>
<tr>
<th style="width: 49.9162%; text-align: center;"><strong>Classe de Armazenamento SQLite</strong></th>
<th style="width: 50.0838%; text-align: center;"><strong>Tipo de Dado (Classe) em Python</strong></th>
</tr>
<tr>
<td style="width: 49.9162%; text-align: center;">NULL</td>
<td style="width: 50.0838%; text-align: center;">NoneType</td>
</tr>
<tr>
<td style="width: 49.9162%; text-align: center;">INTEGER</td>
<td style="width: 50.0838%; text-align: center;">int</td>
</tr>
<tr>
<td style="width: 49.9162%; text-align: center;">REAL</td>
<td style="width: 50.0838%; text-align: center;">float</td>
</tr>
<tr>
<td style="width: 49.9162%; text-align: center;">TEXT</td>
<td style="width: 50.0838%; text-align: center;">str</td>
</tr>
<tr>
<td style="width: 49.9162%; text-align: center;">BLOB</td>
<td style="width: 50.0838%; text-align: center;">bytes</td>
</tr>
</tbody>
</table>
<p>É importante lembrar que o SQLite é um banco de dados de tipagem <em>dinâmica</em>, ou ainda <a href="https://www.sqlite.org/flextypegood.html">tipagem <em>flexível</em></a>, o que significa que ele é flexível em relação aos tipos de dados e pode converter automaticamente entre tipos, se for necessário, em vez de usar tipos rígidos por padrão (que também estão disponíveis). Mas o que significa isso? Significa que:</p>
<p><em>No SQLite, o tipo de dados de um valor está associado ao próprio valor, não ao seu contêiner (no caso, uma coluna de tabela).</em></p>
<p>Além disso, o sistema de tipos dinâmicos do SQLite é compatível com versões anteriores dos sistemas de tipos estáticos mais comuns de outros mecanismos de banco de dados, no sentido de que as instruções SQL que funcionam em bancos de dados de tipo estaticamente funcionam da mesma maneira no SQLite.</p>
<h3>O tipo de dados ANY</h3>
<p>Quando o tipo de dados de uma coluna é &#8220;<strong>ANY</strong>&#8220;, significa que qualquer tipo de dados &#8211; números inteiros, de ponto flutuante, strings ou blobs binários &#8211; pode ser inserido nessa tabela e seu valor e tipo de dados serão preservados exatamente como foram inseridos. Atualmente, o SQLite é o único mecanismo de banco de dados SQL que suporta esse recurso.</p>
<p>O comportamento de ANY é ligeiramente diferente em uma tabela STRICT (de tipagem rígida) e em uma tabela comum. Em uma tabela STRICT, uma coluna do tipo ANY sempre preserva os dados exatamente como eles são recebidos. Já em uma tabela comum não estrita, uma coluna do tipo ANY tentará converter strings que se parecem com números em um valor numérico e, se não ocorrerem erros, armazenará o valor numérico em vez da string original.</p>
<h3>O que é Afinidade de Tipos</h3>
<p><em><strong>Afinidade de Tipos</strong></em> é um conceito no SQLite de como são associados os tipos de dados de colunas a uma das cinco categorias de tipos que ele suporta internamente, explicadas acima.</p>
<p>Apesar do SQLite ser um banco de dados de tipo dinâmico e permitir a inserção de qualquer tipo de dado em qualquer coluna, ele ainda possui esse sistema de afinidade de tipos que ajuda a interpretar e armazenar os dados de maneira eficiente e consistente.</p>
<p>Para isso algumas regras são definidas, descritas na sequência.</p>
<h4>Regras de Afinidade de Tipos no SQLite</h4>
<p>Quando uma tabela é criada no SQLite e especificamos os tipos de dados para as colunas, são aplicadas regras de afinidade de tipos para determinar a categoria interna mais adequada. Essas regras são baseadas nos nomes dos tipos de dados fornecidos.</p>
<p>Vejamos algumas regras gerais.</p>
<ul>
<li>INTEGER: Qualquer coluna com &#8220;INT&#8221; no tipo terá afinidade INTEGER.</li>
<li>TEXT: Qualquer coluna com &#8220;CHAR&#8221;, &#8220;VARCHAR&#8221;, &#8220;CLOB&#8221;, ou &#8220;TEXT&#8221; no tipo terá afinidade TEXT.</li>
<li>BLOB: Qualquer coluna com o tipo &#8220;BLOB&#8221; terá afinidade BLOB.</li>
<li>REAL: Qualquer coluna com &#8220;REAL&#8221;, &#8220;FLOAT&#8221;, ou &#8220;DOUBLE&#8221; no tipo terá afinidade REAL.</li>
<li>NUMERIC: Qualquer coluna que não se encaixe nas regras acima terá afinidade NUMERIC.</li>
</ul>
<p>Ao inserir dados em uma coluna, o SQLite tentará converter o valor para o tipo de afinidade da coluna.</p>
<p>Para saber mais e se aprofundar em tipos de dados no SQLite, visite a página da documentação oficial: <a href="https://www.sqlite.org/datatype3.html">Tipos de Dados no SQLite</a>.</p>
<h3>Colabore com a Bóson Treinamentos</h3>
<p>Ajude o canal adquirindo meus cursos na Udemy:</p>
<ul>
<li>Bancos de Dados com MySQL Básico: <a href="https://bit.ly/35QdWE4" target="_blank" rel="noopener">https://bit.ly/35QdWE4</a></li>
<li>Lógica de Programação com Português Estruturado: <a href="https://bit.ly/3QKPn22" target="_blank" rel="noopener">https://bit.ly/3QKPn22</a></li>
<li>Programação em Python do Zero: <a href="https://bit.ly/python-boson" target="_blank" rel="noopener">https://bit.ly/python-boson</a></li>
</ul>
<p>Adquira também livros e outros itens na loja da Bóson Treinamentos na Amazon e ajude o canal a se manter e crescer: <a href="https://www.amazon.com.br/shop/bosontreinamentos" target="_blank" rel="noopener">https://www.amazon.com.br/shop/bosontreinamentos</a></p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/tipos-de-dados-no-sqlite-e-tipos-correspondentes-em-python/">Tipos de Dados no SQLite e tipos correspondentes em Python</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-python/tipos-de-dados-no-sqlite-e-tipos-correspondentes-em-python/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Criar banco de dados SQLite em Python com sqlite3</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-python/criar-banco-de-dados-sqlite-em-python-com-sqlite3/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-python/criar-banco-de-dados-sqlite-em-python-com-sqlite3/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Tue, 09 Apr 2024 11:52:41 +0000</pubDate>
				<category><![CDATA[Programação em Python]]></category>
		<category><![CDATA[Bancos de Dados]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SQLite]]></category>
		<guid isPermaLink="false">https://www.bosontreinamentos.com.br/?p=20029</guid>

					<description><![CDATA[<p>Criar banco de dados SQLite em Python com sqlite3 Neste tutorial veremos como criar um banco de dados usando o SGBD SQLite e como acessá-lo para realizar tarefas variadas a partir de um script em Python. Para tal, faremos uso da biblioteca built-in sqlite3, explorando sua funcionalidade básica na criação e acesso a dados armazenados em um banco de dados. Primeiramente, vamos conceituar o que é o SQLite. O que é o SQLite O SQLite é uma biblioteca de software que fornece um sistema de gerenciamento de bancos de dados relacional (SGBDR). Trata-se de uma biblioteca muito leve (daí o termo &#8220;lite&#8220;) em termos de configuração, administração do BD e recursos necessários. Presente em todos os smartphones e na maioria dos computadores e outros equipamentos, é software livre e de código aberto. Site oficial: https://www.sqlite.org/ Características principais do SQLite Autocontido: O SQLite é independente, o que significa que requer suporte mínimo do sistema operacional ou biblioteca externa. Isso o torna utilizável em qualquer ambiente, especialmente em dispositivos incorporados como iPhones, telefones Android, consoles de jogos, reprodutores de mídia portáteis, etc. É desenvolvido usando ANSI-C. O código-fonte está disponível nos arquivos sqlite3.c e seu arquivo de cabeçalho sqlite3.h. Se precisarmos desenvolver [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/criar-banco-de-dados-sqlite-em-python-com-sqlite3/">Criar banco de dados SQLite em Python com sqlite3</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Criar banco de dados SQLite em Python com sqlite3</h2>
<p>Neste tutorial veremos como criar um banco de dados usando o SGBD SQLite e como acessá-lo para realizar tarefas variadas a partir de um script em Python. Para tal, faremos uso da biblioteca built-in sqlite3, explorando sua funcionalidade básica na criação e acesso a dados armazenados em um banco de dados.</p>
<p>Primeiramente, vamos conceituar o que é o SQLite.</p>
<h3>O que é o SQLite</h3>
<p><span style="font-weight: 400;">O SQLite é uma biblioteca de software que fornece um sistema de gerenciamento de bancos de dados relacional (SGBDR). Trata-se de uma biblioteca muito leve (daí o termo &#8220;<em>lite</em>&#8220;) em termos de configuração, administração do BD e recursos necessários.</span></p>
<p>Presente em todos os smartphones e na maioria dos computadores e outros equipamentos, é software livre e de código aberto.</p>
<p>Site oficial: <a href="https://www.sqlite.org/">https://www.sqlite.org/</a></p>
<h4><strong>Características principais do SQLite</strong></h4>
<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;"><strong>Autocontido</strong>: O SQLite é independente, o que significa que requer suporte mínimo do sistema operacional ou biblioteca externa. Isso o torna utilizável em qualquer ambiente, especialmente em dispositivos incorporados como iPhones, telefones Android, consoles de jogos, reprodutores de mídia portáteis, etc.</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">É desenvolvido usando <a href="https://www.bosontreinamentos.com.br/category/programacao-em-linguagem-c/">ANSI-C</a>. O código-fonte está disponível nos arquivos sqlite3.c e seu arquivo de cabeçalho sqlite3.h. Se precisarmos desenvolver uma aplicação que utilize SQLite, basta colocar esses arquivos no projeto e compilá-lo com seu código.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;"><strong>Sem servidor (serverless)</strong>: Normalmente, um SGBDR como <a href="https://www.bosontreinamentos.com.br/curso-completo-de-mysql/">MySQL</a>, <a href="https://www.bosontreinamentos.com.br/curso-completo-de-postgresql/">PostgreSQL</a>, etc., requer um processo de servidor separado para operar. As aplicações que desejam acessar o servidor de banco de dados utilizam o protocolo <a href="https://www.bosontreinamentos.com.br/redes-computadores/curso-de-redes-protocolo-tcp-transmission-control-protocol/">TCP/IP</a> para enviar e receber solicitações. Isso é chamado de </span><i><span style="font-weight: 400;">arquitetura cliente/servidor</span></i><span style="font-weight: 400;">.</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">Já o SQLite NÃO requer um servidor para funcionar.</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">O banco de dados SQLite é integrado à aplicação que acessa o banco de dados. Os aplicativos interagem com o banco de dados SQLite lendo e escrevendo diretamente dos arquivos do banco de dados armazenados no disco.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;"><strong>Configuração zero</strong>: Devido à arquitetura serverless, não precisamos “instalar” o SQLite antes de usá-lo. Não há nenhum processo do servidor que precise ser configurado, iniciado e interrompido.</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">Além disso, o SQLite não usa nenhum arquivo de configuração específico.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;"><strong>Transacional</strong>: Todas as <a href="https://www.bosontreinamentos.com.br/bancos-de-dados/conceitos-de-bancos-de-dados-o-que-e-uma-transacao/">transações</a> no SQLite são totalmente compatíveis com as <a href="https://www.bosontreinamentos.com.br/bancos-de-dados/conceitos-de-bancos-de-dados-o-que-significa-acid/">propriedades ACID</a>. Isso significa que todas as consultas e alterações são atômicas, consistentes, isoladas e duráveis.</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">Em outras palavras, todas as alterações em uma transação ocorrem completamente ou não ocorrem, mesmo quando ocorre uma situação inesperada, como falha de aplicativo, falha de energia ou falha do sistema operacional.</span></li>
</ul>
<p><span style="font-weight: 400;">O SQLite também tem suporte a subconsultas, transações, junções, pesquisa em texto (full text search), restrições de chave estrangeira, entre outras funcionalidades.</span></p>
<h4><b>Outros Recursos do SQLite</b></h4>
<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">O SQLite usa tipos dinâmicos para tabelas. Isso significa podemos armazenar qualquer valor em qualquer coluna, independentemente do tipo de dados.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Permite que uma única conexão de banco de dados acesse vários arquivos de banco de dados simultaneamente. Isso fornece muitos recursos interessantes, como unir tabelas em bancos de dados diferentes ou copiar dados entre bancos de dados em um único comando.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">O SQLite é capaz de criar bancos de dados na memória de acesso muito rápido.</span></li>
</ul>
<h4><b>Observações sobre o SQLite</b></h4>
<p><span style="font-weight: 400;">É importante notar que, por não ter um servidor para seu gerenciamento, o SQLite não provê um acesso direto pela rede. As soluções existentes para acesso remoto são no geral &#8220;caras&#8221; e ineficientes.</span></p>
<p><span style="font-weight: 400;">Além disso, o SQLite não possui suporte à autenticação, com usuários e permissões definidas. Estamos falando aqui sobre <a href="https://www.bosontreinamentos.com.br/mysql/curso-de-mysql-grant-e-revoke-definindo-privilegios-de-acesso-aos-bancos-de-dados/">usuários do banco de dados</a>, que têm permissão para criar tabela, inserir registros etc.</span></p>
<p><span style="font-weight: 400;">Porém, apesar do SQLite não ter suporte à autenticação, é claro que podemos e devemos implementar nosso próprio controle de acesso para nossa aplicação.</span></p>
<p>Finalmente, O SQLite é <em>case-insensitive</em>, ou seja, <strong>não</strong> diferencia letras maiúsculas de minúsculas.</p>
<h4><b>Ferramentas GUI para gerenciamento do SQLite</b></h4>
<p>Diversas ferramentas gráficas existem para auxiliar no gerenciamento de bancos de dados criados com SQLite, disponíveis em várias plataformas e sob vários tipos de licenciamento. Algumas das mais populares incluem o SQLiteStudio, DBeaver e o DB Browser for SQLite, citadas a seguir:</p>
<ul>
<li style="font-weight: 400;" aria-level="1"><strong>SQLiteStudio</strong><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">O SQLiteStudio é uma ferramenta GUI gratuita para gerenciar bancos de dados SQLite.</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">É gratuito, portátil, intuitivo e multiplataforma.</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">A ferramenta também fornece alguns dos recursos mais importantes para trabalhar com bancos de dados SQLite, como importação e exportação de dados em vários formatos, incluindo <a href="https://www.bosontreinamentos.com.br/mysql/como-carregar-um-arquivo-csv-em-tabela-no-mysql/">CSV</a>, XML e JSON.<br />
</span>Download: <a href="https://github.com/pawelsalawa/sqlitestudio/releases">https://github.com/pawelsalawa/sqlitestudio/releases</a></li>
</ul>
<p><span style="font-weight: 400;">Além do SQLite Studio, também temos disponíveis as seguintes ferramentas GUI gratuitas para SQLite: </span></p>
<ul>
<li><span style="font-weight: 400;"><strong>DBeaver</strong>: Ferramenta gratuita de banco de dados multiplataforma. Suporta todos os principais sistemas de banco de dados relacionais populares como <a href="https://www.bosontreinamentos.com.br/curso-completo-de-mysql/">MySQL</a>, <a href="https://www.bosontreinamentos.com.br/curso-completo-de-postgresql/">PostgreSQL</a>, <a href="https://www.bosontreinamentos.com.br/category/oracle-database/">Oracle Database</a>, IBM DB2, <a href="https://www.bosontreinamentos.com.br/curso-de-microsoft-sql-server/">Microsoft SQL Server</a>, Sybase, Firebird, além é claro do SQLite.<br />
Download: <a href="https://dbeaver.io/download/" target="_blank" rel="noopener">https://dbeaver.io/download/</a></span></li>
<li><span style="font-weight: 400;"><strong>DB Browser for SQLite</strong>: Ferramenta de código aberto para gerenciar arquivos de banco de dados compatíveis com SQLite.</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">Download: </span><a href="https://sqlitebrowser.org/"><span style="font-weight: 400;">https://sqlitebrowser.org/</span></a></li>
</ul>
<h3>Módulo sqlite3</h3>
<p>O <a href="https://docs.python.org/3/library/sqlite3.html" target="_blank" rel="noopener">módulo SQLite3</a> é uma biblioteca embutida em Python, compatível com a especificação DB-API 2.0 (descrita pelo <a href="https://peps.python.org/pep-0249/">PEP 249</a>), que permite a interação com bancos de dados SQLite. Esse módulo fornece uma API simples mas bastante eficaz para realizar operações variadas de consulta, atualização e gerenciamento em bancos de dados SQLite diretamente a partir de scripts Python.</p>
<p>O SQLite3 é amplamente utilizado devido à sua natureza leve, rápida e autônoma. Ele não requer um servidor separado para funcionar, pois todo o banco de dados é armazenado em um único arquivo, o que facilita a distribuição e o compartilhamento de aplicativos.</p>
<p>Além disso, essa biblioteca suporta a maioria das funcionalidades comuns de <a href="https://www.bosontreinamentos.com.br/bancos-de-dados/o-que-e-um-banco-de-dados-relacional/">bancos de dados relacionais</a>, incluindo tipos de dados, consultas SQL complexas, <a href="https://www.bosontreinamentos.com.br/bancos-de-dados/conceitos-de-bancos-de-dados-o-que-significa-acid/">transações ACID</a> (Atomicidade, Consistência, Isolamento e Durabilidade) e outras. Fornece classes e métodos para executar consultas SQL, inserir dados, atualizar registros, excluir dados, gerenciar transações e manipular exceções de maneira eficiente.</p>
<p>Apesar de não ser necessário instalá-lo (por se tratar de um módulo built-in), o módulo sqlite3 requer a versão SQLite 3.7.15 ou mais recente para funcionar.</p>
<h3>Como criar um banco de dados SQLite com sqlite3</h3>
<p>Para criar um novo banco de dados, ou abrir um banco de dados já existente, o primeiro passo é importar a biblioteca sqlite3 com a declaração import no script Python:</p>
<pre>import sqlite3 as s</pre>
<p>Logo após, criamos / conectamos um banco de dados usando o método connect() do sqlite3 para criar um objeto de conexão:</p>
<pre><strong>conexao = s.connect(banco_teste.db')</strong></pre>
<p>Nesta instrução, passamos o nome do banco entre aspas como argumento para o método connect, atribuindo seu retorno a uma variável objeto que batizamos aqui de <strong>conexao</strong>. Caso o banco de dados não exista, será criado no mesmo diretório onde reside o script python; se já existir, o banco será aberto para acesso. Usaremos o nome banco_teste como nome do banco de dados, com a extensão <strong>.db</strong>.</p>
<p>Na sequência, criaremos um cursor que nos permitirá executar as declarações SQL no banco de dados em si, como comandos para criar tabelas, inserir registros, atualizar linha e excluir elementos, entre outros. Para isso usamos o método <em>cursor()</em> do objeto <strong>conexao</strong> criado:</p>
<pre>cursor = conexao.cursor()</pre>
<p>Agora podemos escrever uma declaração SQL a ser executada no banco. Por exemplo, vamos criar uma tabela usando a declaração CREATE TABLE, e então executar essa declaraçãop no banco de dados usando o método execute() do cursor criado:</p>
<pre>sql = "CREATE TABLE teste(coluna1, coluna2, coluna3);"
cursor.execute(sql)</pre>
<p>Como estamos executando um comando que realiza alterações no banco de dados, precisamos efetuar um commit logo após para efetivar a <a href="https://www.bosontreinamentos.com.br/bancos-de-dados/conceitos-de-bancos-de-dados-o-que-e-uma-transacao/">transação</a>, caso contrário as alterações requisitadas não serão tornadas permanentes no arquivo do banco. Para isso, executamos o método commit() da conexão:</p>
<pre>conexao.commit()</pre>
<p>Finalmente, verificamos se a tabela foi criada efetuando uma consulta na tabela mestra do sqlite, que se chama sqlite-master. Usamos na sequência o método fetchall() para acessar todos os registros retornados pela consulta a um objeto batizado de res ( de &#8220;resultado&#8221;):</p>
<pre>res = cursor.execute("SELECT name FROM sqlite_master")
print(res.fetchall())</pre>
<p><strong>Código completo:</strong></p>
<pre><span style="color: #ff0000;"><strong>import sqlite3 as s

</strong></span><span style="color: #339966;"><strong># Criar objeto de conexão e conectar ao banco</strong></span>
<span style="color: #ff0000;"><strong>conexao = s.connect('banco_teste.db')

</strong></span><span style="color: #339966;"><strong># Criar cursor</strong></span>
<span style="color: #ff0000;"><strong>cursor = conexao.cursor()

</strong></span><span style="color: #339966;"><strong># Determinar declarações SQL a serem executadas e executá-las no banco</strong></span>
<span style="color: #ff0000;"><strong>sql = "CREATE TABLE teste(coluna1, coluna2, coluna3);"</strong></span>
<span style="color: #ff0000;"><strong>cursor.execute(sql)

</strong></span><span style="color: #339966;"><strong># Efetivar a transação (comitar)</strong></span>
<span style="color: #ff0000;"><strong>conexao.commit()

</strong></span><span style="color: #339966;"><strong># Verificar se tabelas foram criadas</strong></span>
<span style="color: #ff0000;"><strong>res = cursor.execute("SELECT name FROM sqlite_master")</strong></span>
<span style="color: #ff0000;"><strong>print(res.fetchall())</strong></span></pre>
<p><em><strong>Resultado:</strong></em></p>
<pre><span style="color: #000000;"><strong>[('teste',)]</strong></span></pre>
<p>Note que foi retornada uma lista de tuplas, com um único elemento, que representa o nome da tabela de teste criada.</p>
<p>É isso aí! Criamos um banco de dados com SQLite e <a href="https://www.bosontreinamentos.com.br/programacao-com-python/">Python</a>, além de uma tabela simples, e testamos a existência da tabela por meio de instruções no script. Na próxima lição veremos como inserir dados nesta tabela (criar registros) e testar essa inserção.</p>
<p>Case prefira, assista a um vídeo da Bóson Treinamentos sobre Python com SQLite:</p>
<p><iframe title="YouTube video player" src="https://www.youtube.com/embed/GZGPf1LrLdg?si=Tv3xzcZlCPty3cYZ" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/criar-banco-de-dados-sqlite-em-python-com-sqlite3/">Criar banco de dados SQLite em Python com sqlite3</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-python/criar-banco-de-dados-sqlite-em-python-com-sqlite3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Como usar o objeto DataFrame da biblioteca Pandas em Python</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-python/como-usar-o-objeto-dataframe-da-biblioteca-pandas-em-python/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-python/como-usar-o-objeto-dataframe-da-biblioteca-pandas-em-python/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Mon, 26 Feb 2024 10:53:41 +0000</pubDate>
				<category><![CDATA[Programação em Python]]></category>
		<category><![CDATA[Big Data]]></category>
		<category><![CDATA[Ciência de Dados]]></category>
		<category><![CDATA[Data Science]]></category>
		<category><![CDATA[Pandas]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19630</guid>

					<description><![CDATA[<p>Como usar o objeto DataFrame da biblioteca Pandas em Python Anteriormente falamos sobre o objeto Series do Pandas, e neste artigo vamos explorar algumas funções de um outro tipo de objeto muito comum também fornecido pelo módulo Pandas, o DataFrame. Os DataFrames do Pandas são uma estrutura de dados bastante versátil e poderosa que pode ser usada em análise, manipulação e processamento de dados em Python. Eles são empregados em uma ampla gama de aplicações de várias áreas, incluindo análise de dados, ciência de dados, engenharia, finanças, pesquisa e muito mais. Algumas das principais aplicações dos DataFrames do Pandas incluem: Pré-processamento de Dados: Limpeza, formatação, dados duplicados, valores ausentes, transformação nos dados Análise e Exploração de Dados: Importação de dados, Cálculos de Estatística Descritiva (média, mediana, desvio-padrão, etc.). Manipulação de Dados: Filtro, seleção e ordenação para extrair informações específicas dos dados; funções de agregação, colunas calculadas Análise de Séries Temporais: Manipulação e análise de dados temporais, como séries temporais de preços de ações, dados climáticos, etc.; reamostragem Modelagem Estatística e Machine Learning: Criação de conjuntos de treinamento e teste em aprendizado de máquina, divisão de dados para validação cruzada, etc. entre muitas outras. Além disso, os DataFrames podem ser integrados [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/como-usar-o-objeto-dataframe-da-biblioteca-pandas-em-python/">Como usar o objeto DataFrame da biblioteca Pandas em Python</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Como usar o objeto DataFrame da biblioteca Pandas em Python</h2>
<p>Anteriormente falamos sobre o <a href="http://www.bosontreinamentos.com.br/programacao-em-python/como-usar-o-objeto-series-da-biblioteca-pandas-em-python/">objeto Series do Pandas</a>, e neste artigo vamos explorar algumas funções de um outro tipo de objeto muito comum também fornecido pelo módulo Pandas, o DataFrame.</p>
<p>Os DataFrames do Pandas são uma estrutura de dados bastante versátil e poderosa que pode ser usada em análise, manipulação e processamento de dados em Python. Eles são empregados em uma ampla gama de aplicações de várias áreas, incluindo análise de dados, ciência de dados, engenharia, finanças, pesquisa e muito mais.</p>
<p>Algumas das principais aplicações dos DataFrames do Pandas incluem:</p>
<ul>
<li><strong>Pré-processamento de Dados</strong>: Limpeza, formatação, dados duplicados, valores ausentes, transformação nos dados</li>
<li><strong>Análise e Exploração de Dados</strong>: Importação de dados, Cálculos de <a href="http://www.bosontreinamentos.com.br/programacao-em-python/estatistica-descritiva-em-python-media-mediana-variancia-e-desvio-padrao/">Estatística Descritiva</a> (média, mediana, desvio-padrão, etc.).</li>
<li><strong>Manipulação de Dados</strong>: Filtro, seleção e ordenação para extrair informações específicas dos dados; funções de agregação, colunas calculadas</li>
<li><strong>Análise de Séries Temporais:</strong> Manipulação e análise de dados temporais, como séries temporais de preços de ações, dados climáticos, etc.; reamostragem</li>
<li><strong>Modelagem Estatística e Machine Learning</strong>: Criação de conjuntos de treinamento e teste em a<a href="http://www.bosontreinamentos.com.br/inteligencia-artificial/o-que-e-machine-learning-uma-introducao-ao-aprendizado-de-maquina/">prendizado de máquina</a>, divisão de dados para validação cruzada, etc.</li>
</ul>
<p>entre muitas outras.</p>
<p>Além disso, os DataFrames podem ser integrados com outras bibliotecas, como por exemplo as bibliotecas <a href="http://www.bosontreinamentos.com.br/programacao-em-python/introducao-a-biblioteca-numpy-em-python/">NumPy</a>, SciPy, <a href="http://www.bosontreinamentos.com.br/programacao-em-python/graficos-basicos-com-a-biblioteca-matplotlib-em-python/">Matplotlib</a> e inúmeras outras, permitindo executar diversas tarefas adicionais, como visualização de dados e cálculos complexos sobre os datasets, por exemplo.</p>
<h3>O que é um DataFrame?</h3>
<p>Um objeto do tipo DataFrame representa uma tabela de dados retangular bidimensional semelhante a uma tabela de banco de dados ou uma planilha do Excel, contendo uma coleção ordenada de colunas, em que cada uma pode ter um tipo de valor diferente (numérico, string, booleano etc.).</p>
<p>O DataFrame possui índices tanto para linha quanto para coluna; pode ser imaginado como um array de objetos Series, todos compartilhando o mesmo índice.</p>
<p>Há várias formas de construir um DataFrame, embora as mais comuns sejam a partir de dados armazenados em<a href="http://www.bosontreinamentos.com.br/category/bancos-de-dados/"> bancos de dados</a>, arquivos CSV, arquivos de planilhas como o Excel, dicionários com listas de mesmo tamanho ou ainda a partir de <a href="http://www.bosontreinamentos.com.br/programacao-em-python/como-criar-um-array-no-python-com-numpy/">arrays NumPy</a>, entre outras.</p>
<p>Neste tutorial vamos criar DataFrames a partir de dicionários para explorar algumas de suas funcionalidades. Nos próximos tutoriais, vamos trabalhar também com importação de dados de planilhas do Excel, arquivos CSV e tabelas de bancos de dados relacionais, entre outras tarefas.</p>
<h3>Criar um DataFrame a partir de um Dicionário</h3>
<p>Vamos começar criando um DataFrame de exemplo a partir de um dicionário de dados. Antes disso, precisamos importar o módulo em nosso script:</p>
<pre><strong>import pandas as pd</strong></pre>
<p>Vamos criar agora um DataFrame a partir de um dicionário que contém nomes de países, quantidade de títulos mundiais da FIFA, e ano em que o país ganhou seu primeiro título.</p>
<pre><strong>dicionario={'País':['Brasil','Uruguai','Inglaterra','Espanha','Holanda','Itália','Argentina','Alemanha','França'],</strong>
<strong>'Ano':[1958,1930,1966,2010,None,1934,1978,1954,1998],</strong>
<strong>'Titulos':[5,2,1,1,0,4,3,4,2]</strong>
<strong>}</strong>
<strong>dados = pd.DataFrame(dicionario)</strong>
<strong>print(dados)</strong></pre>
<p><em><strong>Saída:</strong></em></p>
<pre><span style="color: #000000;">  País       Ano    Titulos</span>
<span style="color: #000000;">0 Brasil     1958.0       5</span>
<span style="color: #000000;">1 Uruguai    1930.0       2</span>
<span style="color: #000000;">2 Inglaterra 1966.0       1</span>
<span style="color: #000000;">3 Espanha    2010.0       1</span>
<span style="color: #000000;">4 Holanda    NaN          0</span>
<span style="color: #000000;">5 Itália     1934.0       4</span>
<span style="color: #000000;">6 Argentina  1978.0       3</span>
<span style="color: #000000;">7 Alemanha   1954.0       4</span>
<span style="color: #000000;">8 França     1998.0       2</span></pre>
<p>Note que na linha correspondente à Holanda a coluna Ano traz o valor <strong>NaN</strong>, que significa &#8220;<em>Not a Numbe</em>r&#8221; (Não é um Número), indicando que este dado está ausente (a Holanda ainda não ganhou nenhuma copa, por isso um valor para a coluna de ano não existe!)</p>
<h3>Mostrar início ou fim do dataset</h3>
<p>Se o conjunto de dados for grande e não quisermos exibi-lo inteiro na tela, podemos imprimir apenas as cinco primeiras ou as cinco últimas linhas com os métodos head() e tail(), respectivamente:</p>
<pre><span style="color: #339966;"><strong># 5 primeiras linhas</strong></span>
<strong>print(dados.head())

</strong><span style="color: #339966;"><strong># 5 últimas linhas</strong></span>
<strong>print(dados.tail())</strong></pre>
<p>Por padrão, o Pandas limita o número de linhas exibidas na tela a 60 linhas e o número de colunas a 20 colunas, para evitar saída de grandes volumes de dados.</p>
<h3>Manipulação de colunas</h3>
<p>Podemos alterar a ordem das colunas passando como parâmetro ao método .DataFrame() uma lista de valores a serem usados como cabeçalho:</p>
<pre><strong>dados = pd.DataFrame(dados, columns=['Titulos','País','Ano'])</strong>
<strong>print(dados)</strong></pre>
<p>Para ver apenas os nomes das colunas constituintes do df:</p>
<pre><strong>print(dados.columns)</strong></pre>
<p>Para imprimir colunas individuais (em vez do DataFrame completo) podemos passar o nome da coluna desejada como valor de índice (entre colchetes), ou então chamar a coluna pelo seu nome como uma propriedade (precedida de um ponto):</p>
<pre><strong>print('Países:')</strong>
<strong>print(dados['País'])</strong>
<strong>print('\nAnos:')</strong>
<strong>print(dados.Ano)</strong></pre>
<p>Adicionamos uma nova coluna ao DF simplesmente passando seu nome entre colchetes, e atribuindo valores a partir de uma sequência, como uma lista. Podemos inicializar a coluna com um único valor também (mesmo valor em todas as linhas), como por exemplo o valor 0:</p>
<pre><span style="color: #339966;"><strong># Acrescentar uma coluna ao DataFrame:</strong></span>
<span style="color: #ff0000;"><strong>dados['Participações'] = 0</strong></span>
<span style="color: #ff0000;"><strong>print(dados)</strong></span></pre>
<pre><span style="color: #339966;"><strong># Preencher a coluna com valores de uma lista:</strong></span>
<strong>part = [22,14,16,16,11,18,18,20,16]</strong>
<strong>dados['Participações'] = part</strong>
<strong>print(dados)</strong></pre>
<p>Para excluir uma coluna do DataFrame empregamos a função del:</p>
<pre><span style="color: #339966;"><strong># Excluir coluna "Participações"</strong></span>
<strong>del dados['Participações']</strong>
<strong>print(dados)</strong></pre>
<h3>Manipulação de linhas</h3>
<p>É possível excluir uma linha usando o método .drop(), passando o número da linha a excluir como um valor de índice. No exemplo a seguir vamos criar um novo DataFrame a partir do atual, excluindo nele a linha 4:</p>
<pre><span style="color: #339966;"><strong># Excluir a linha 4 (Holanda)</strong></span>
<strong>dados2 = dados.drop([4])</strong>
<strong>print(dados2)</strong></pre>
<p>Para excluir várias linhas de uma vez, basta passar uma lista com seus números de índice:</p>
<pre><span style="color: #339966;"><strong># Excluir as linhas 3, 4 e 5 de uma vez</strong></span>
<strong>dados2 = dados.drop([4, 3, 5])</strong>
<strong>print(dados2)</strong></pre>
<p>Para excluir uma linha no DataFrame em si, sem precisar criar uma cópia dele, usamos o parâmetro inplace=True:</p>
<pre><span style="color: #339966;"><strong># Excluir linhas in loco</strong></span>
<strong>dados.drop(4, inplace=True)</strong>
<strong>print(dados)</strong></pre>
<h3>Slicing em DataFrames</h3>
<p>Podemos retornar um conjunto de linhas passando seus índices, inclusive usando fatiamento (slicing):</p>
<pre><span style="color: #339966;"><strong># Retornar linhas de 1 a 5:</strong></span>
<strong>print(dados[1:5])</strong></pre>
<p>Também é possível realizar essa operação usando rótulos em vez de números de índice:</p>
<pre><span style="color: #339966;"><strong># Fatiamento com rótulos

</strong></span><strong>dicionario={'País':['Brasil','Uruguai','Inglaterra','Espanha','Holanda','Itália','Argentina'],</strong>
<strong>'Ano':[1958,1930,1966,2010,None,1934,1978],</strong>
<strong>'Titulos':[5,2,1,1,0,4,3]</strong>
<strong>}

</strong><strong>dados = pd.DataFrame(dicionario, index=['a','b','c','d','e','f','g'])</strong>
<span style="color: #339966;"><strong># Mostra df completo</strong></span>
<strong>print(dados, '\n')

</strong><span style="color: #339966;"><strong># Mostra apenas linhas de rótulos b até e:</strong></span>
<strong>print(dados['b':'e'])</strong></pre>
<h3>Indexação: loc() e iloc()</h3>
<p>Podemos realizar indexação com método .loc(), retornando linhas e colunas específicas apenas por meio de seus rótulos:</p>
<pre><span style="color: #339966;"><strong># Indexação com loc</strong></span>
<span style="color: #339966;"><strong># Linha b, colunas de País e Títulos</strong></span>
<strong>print(dados.loc['b',['País', 'Titulos']])</strong>
<span style="color: #339966;"><strong># Linhas de a a d, coluna de Ano:</strong></span>
<strong>print(dados.loc[:'d','Ano'])</strong></pre>
<p>Ou ainda indexar com método .iloc(), que retorna as linhas e colunas específicas de acordo com números de índices:</p>
<pre><span style="color: #339966;"><strong># Indexação com iloc</strong></span>
print(dados.iloc[1,[0, 2]])</pre>
<h3>Ordenação em Dataframes</h3>
<p>Podemos exibir os dados ordenados por índice tanto em ordem crescente quando decrescente com o método sort_index():</p>
<pre><span style="color: #339966;"><strong># Ordenação por índice</strong></span>
<strong>print(dados.sort_index())

</strong><span style="color: #339966;"><strong># Ordenação por índice em ordem inversa</strong></span>
<strong>print(dados.sort_index(ascending=False))

</strong>Para ordenar os dados pelos valores de uma coluna específica usamos o método sort_values(), passando os nomes das colunas na ordem em que desejamos a ordenação:
<span style="color: #339966;"><strong> Ordenação por colunas: ordem alfabética de país</strong></span>
<strong>print(dados.sort_values(by='País'))

</strong><span style="color: #339966;"><strong># Ordem alfabética inversa:</strong></span>
<strong>print(dados.sort_values(by='País', ascending=False))

</strong><span style="color: #339966;"><strong># Ordenação por várias colunas: ordem crescente de títulos e alfabética de países</strong></span>
<strong>print(dados.sort_values(by=['Titulos','País']))

</strong><span style="color: #339966;"><strong># Ou ainda ordem decrescente de títulos e alfabética de países</strong></span>
<span style="color: #339966;"><strong># Ordenação por várias colunas</strong></span>
<strong>print(dados.sort_values(by=['Titulos','País'],</strong>
<strong>ascending = [False, True]))</strong></pre>
<h3>Renomear colunas</h3>
<p>É possível renomear uma ou mais colunas de um DF usando o método <strong>rename()</strong>. Para tal, passamos um mapeamento de dicionário para o parâmetro &#8220;<em>columns</em>&#8221; contendo pares chave:valor nos quais a chave é o nome da coluna a renomear, e o valor é o novo nome que será usado.</p>
<p>Por exemplo, vamos renomear a coluna &#8220;Titulos&#8221; para &#8220;Campeonatos&#8221;:</p>
<pre><span style="color: #339966;"><strong># Renomear uma coluna </strong></span>
<strong>dados2=dados.rename(columns = {'Titulos':'Campeonatos'})</strong>
<strong>print(dados2.columns)</strong></pre>
<p>Uma alternativa é usar o parâmetro axis=&#8217;columns&#8217; ou axis=&#8217;1&#8242;:</p>
<pre><span style="color: #339966;"><strong># Renomear a coluna de volta</strong></span>
<strong>dados2=dados.rename({'Campeonatos':'Titulos'}, axis='columns')</strong>
<strong>print(dados2.columns)</strong></pre>
<p>Para alterar o nome da coluna in loco (sem criar outro df), usamos novamente o parâmetro inplace:</p>
<pre><span style="color: #339966;"><strong># Renomear coluna no DataFrame atual (inplace).</strong></span>
<strong>dados2.rename({'Titulos':'Campeonatos'}, axis='columns', inplace=True)</strong>
<strong>print(dados2.columns)</strong></pre>
<p>Para renomear múltiplas colunas o processo é o mesmo, bastando passá-las como um mapeamento de dicionário.<br />
Por exemplo, vamos renomear as colunas &#8220;Campeonatos&#8221; e &#8220;Ano&#8221; para &#8220;Titulos&#8221; e &#8220;Primeiro_Titulo&#8221; respectivamente no df dados2:</p>
<pre><span style="color: #339966;"><strong># Renomear várias colunas de uma vez no DataFrame atual.</strong></span>
<strong>dados2.rename({'Campeonatos':'Titulos', 'Ano':'Primeiro_Titulo'}, axis='columns', inplace=True)</strong>
<strong>print(dados2.columns)</strong></pre>
<p>Também podemos renomear todas as colunas de um dataframe de uma vez, passando para isso uma lista com os novos nomes a usar. O comprimento da lista deve ser igual ao número de colunas existentes no df, e as colunas serão renomeadas na ordem em que aparecem.</p>
<p>Note que neste caso renomeamos as colunas SEM usar o método rename().</p>
<p>Por exemplo:</p>
<pre><span style="color: #339966;"><strong># Renomear colunas com lista</strong></span>
<strong>nomes = ['Nação','Ano_Ganhou','Qtde_Titulos']</strong>
<strong>dados2.columns = nomes</strong>
<strong>print(dados2.columns)</strong></pre>
<h4>Renomear colunas adicionando sufixos ou prefixos</h4>
<p>Às vezes precisamos renomear colunas adicionando sufixos ou prefixos na forma de uma sequência de caracteres. Podemos fazer isso usando os métodos add_prefix() ou add_suffix(). Por exemplo, vamos adicionar o prefixo &#8220;copa_&#8221; a todas as colunas do dataframe dados2:</p>
<pre><span style="color: #339966;"><strong># Renomear todas as colunas adicionando um prefixo</strong></span>
<strong>dados2 = dados2.add_prefix('copa_')</strong>
<strong>print(dados2.columns)</strong></pre>
<p>Leia mais aqui: <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.add_prefix.html" target="_blank" rel="noopener">https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.add_prefix.html</a></p>
<p>Para remover um prefixo ou sufixo, podemos usar (entre outros) o método str.replace(), que substitui todas as ocorrências de uma determinada string por outra string (ou nenhuma string, que é o caso). Vamos remover o prefixo &#8220;copa_&#8221; adicionado anteriormente para testar:</p>
<pre><span style="color: #339966;"><strong># Remover prefixo com método str.replace</strong></span>
<strong>dados2.columns = dados.columns.str.replace('copa_', '')</strong>
<strong>dados2</strong></pre>
<p>Cuidado ao usar esse método para remover prefixos e sufixos, pois se houverem outras sequências de caracteres nos nomes das colunas iguais às que se deseja remover, estas também serão removidas, alterando de forma indesejada os nomes.</p>
<p>No próximo artigo estudaremos algumas técnicas de limpeza e tratamento de dados ausentes ou duplicados em um dataframe.</p>
<h3>Colabore com a Bóson Treinamentos</h3>
<p>Ajude o canal adquirindo meus cursos na Udemy:</p>
<ul>
<li>Bancos de Dados com MySQL Básico: <a href="https://bit.ly/35QdWE4" target="_blank" rel="noopener">https://bit.ly/35QdWE4</a></li>
<li>Lógica de Programação com Português Estruturado: <a href="https://bit.ly/3QKPn22" target="_blank" rel="noopener">https://bit.ly/3QKPn22</a></li>
<li>Programação em Python do Zero: <a href="https://bit.ly/python-boson" target="_blank" rel="noopener">https://bit.ly/python-boson</a></li>
</ul>
<p>Adquira também livros e outros itens na loja da Bóson Treinamentos na Amazon e ajude o canal a se manter e crescer: <a href="https://www.amazon.com.br/shop/bosontreinamentos" target="_blank" rel="noopener">https://www.amazon.com.br/shop/bosontreinamentos</a></p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/como-usar-o-objeto-dataframe-da-biblioteca-pandas-em-python/">Como usar o objeto DataFrame da biblioteca Pandas em Python</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-python/como-usar-o-objeto-dataframe-da-biblioteca-pandas-em-python/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>A função enumerate em Python &#8211; numerar elementos em uma sequência</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-python/a-funcao-enumerate-em-python-numerar-elementos-em-uma-sequencia/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-python/a-funcao-enumerate-em-python-numerar-elementos-em-uma-sequencia/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Wed, 17 Jan 2024 17:37:42 +0000</pubDate>
				<category><![CDATA[Programação em Python]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19771</guid>

					<description><![CDATA[<p>7 Exemplos da função enumerate em Python A função enumerate é uma ferramenta útil em Python que permite associar um índice a cada elemento de uma sequência (como uma lista, tupla ou string) durante uma iteração. Isso torna mais fácil acessar tanto o elemento em si quanto sua posição na sequência. Neste tutorial, vou mostrar como funciona a função enumerate, sua sintaxe e as vantagens e desvantagens de seu uso. Para Que Serve a Função enumerate? A função enumerate é usada para numerar elementos em uma sequência enquanto iteramos sobre eles. Ela cria pares de índices e valores a partir dos elementos da sequência, permitindo que sejam acessados tanto o elemento quanto sua posição. Ou seja, basicamente a função adiciona um contador sobre um objeto iterável. Essa funcionalidade é útil em situações onde necessitamos saber a posição de um elemento em uma sequência. Sintaxe da Função enumerate A sintaxe básica da função enumerate() é a seguinte: enumerate(iterável, start=0) onde: iterável: O objeto que você deseja enumerar (por exemplo, uma lista, tupla, iterador, etc.). start (opcional): O valor inicial do índice (posição a partir de onde começa a contagem). Por padrão, o valor inicial é 0 A função retorna um objeto [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/a-funcao-enumerate-em-python-numerar-elementos-em-uma-sequencia/">A função enumerate em Python &#8211; numerar elementos em uma sequência</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>7 Exemplos da função enumerate em Python</h2>
<p>A função <strong>enumerate</strong> é uma ferramenta útil em Python que permite associar um índice a cada elemento de uma sequência (como uma lista, tupla ou <a href="http://www.bosontreinamentos.com.br/programacao-em-python/08-python-strings-01-concatenacao-repeticao-imutabilidade-e-a-funcao-len/">string</a>) durante uma iteração. Isso torna mais fácil acessar tanto o elemento em si quanto sua posição na sequência.</p>
<p>Neste tutorial, vou mostrar como funciona a função enumerate, sua sintaxe e as vantagens e desvantagens de seu uso.</p>
<h3>Para Que Serve a Função enumerate?</h3>
<p>A função enumerate é usada para numerar elementos em uma sequência enquanto iteramos sobre eles. Ela cria pares de índices e valores a partir dos elementos da sequência, permitindo que sejam acessados tanto o elemento quanto sua posição. Ou seja, basicamente a função adiciona um contador sobre um objeto iterável.</p>
<p>Essa funcionalidade é útil em situações onde necessitamos saber a posição de um elemento em uma sequência.</p>
<h3>Sintaxe da Função enumerate</h3>
<p>A sintaxe básica da função enumerate() é a seguinte:</p>
<pre><span style="color: #800080;"><strong>enumerate(iterável, start=0)</strong></span></pre>
<p>onde:</p>
<ul>
<li><em><strong>iterável</strong></em>: O objeto que você deseja enumerar (por exemplo, uma <a href="http://www.bosontreinamentos.com.br/programacao-em-python/12-python-listas-01-criacao-insercao-e-alteracao-de-itens-metodo-append-e-outros/">lista</a>, <a href="http://www.bosontreinamentos.com.br/programacao-em-python/18-python-tuplas-lista-de-objetos-imutavel-metodos-index-count-aninhamento/">tupla</a>, iterador, etc.).</li>
<li><em><strong>start</strong></em> (opcional): O valor inicial do índice (posição a partir de onde começa a contagem). Por padrão, o valor inicial é 0</li>
</ul>
<p>A função retorna um objeto enumerado que é um iterador contendo pares chave (índice) e valor.</p>
<h3>Vantagens do Uso da Função enumerate</h3>
<p>Existem algumas vantagens de se usar a função enumerate para trabalhar com conjuntos iteráveis, como por exemplo:</p>
<ol>
<li>Acesso aos Índices: A função enumerate facilita o acesso aos índices dos elementos em uma sequência, o que é útil em muitas situações de programação, como por exemplo contar o número de iterações completadas ao trabalhar com iteradores.</li>
<li>Sintaxe Concisa: Ela fornece uma maneira concisa de enumerar elementos, evitando a necessidade de rastrear manualmente os índices em sequências.</li>
</ol>
<h3>Desvantagens do Uso da Função enumerate</h3>
<p>Porém, a função enumerate também possui algumas desvantagens, que devem ser consideradas ao escolher as técnicas de programação a serem empregadas no desenvolvimento. Entre elas posso citar:</p>
<ol>
<li>Uso de memória: A função enumerate cria um objeto enumerado que armazena pares de índice e valor na memória, o que pode consumir um pouco mais de memória do que a iteração tradicional.</li>
<li>Índices baseados em 0: Os índices gerados pela função enumerate são baseados em 0 por padrão, o que pode ser contra intuitivo em algumas situações.</li>
<li>Nem sempre é necessária: Se não precisarmos acessar os índices e necessitarmos simplesmente iterar sobre os elementos, a função enumerate é desnecessária. Use iteração comum.</li>
</ol>
<p>Sendo assim, a função enumerate é uma ferramenta útil para rastrear índices enquanto iteramos sobre uma sequência. No entanto, deve ser usada com moderação, especialmente se a economia de memória for uma preocupação e não for necessário usar os índices.</p>
<p>Em muitos casos, a iteração tradicional é mais do que suficiente.</p>
<p>Dito isto, vejamos alguns exemplos de como usar a função enumerate em Python.</p>
<h3>Exemplos de enumerate em Python</h3>
<p><strong>Exemplo 1: Iterar Sobre uma lista de itens com enumerate</strong></p>
<pre><strong>frutas = ["maçã", "banana", "laranja", "uva", "caju", "figo", "abacaxi", "framboesa"]</strong>
<strong>for indice, fruta in enumerate(frutas):</strong>
<strong>    print(f"Índice {indice}: {fruta}")</strong></pre>
<p>Neste exemplo, estamos iterando sobre uma lista de frutas e usando enumerate para associar um índice a cada fruta. O resultado será:</p>
<pre><span style="color: #000000;"><strong>Índice 0: maçã</strong></span>
<span style="color: #000000;"><strong>Índice 1: banana</strong></span>
<span style="color: #000000;"><strong>Índice 2: laranja</strong></span>
<span style="color: #000000;"><strong>Índice 3: uva</strong></span>
<span style="color: #000000;"><strong>Índice 4: caju</strong></span>
<span style="color: #000000;"><strong>Índice 5: figo</strong></span>
<span style="color: #000000;"><strong>Índice 6: abacaxi</strong></span>
<span style="color: #000000;"><strong>Índice 7: framboesa</strong></span></pre>
<p><strong>Exemplo 2: Enumerar Linhas em um Arquivo de Texto</strong></p>
<p>Suponha que tenhamos um arquivo de texto chamado &#8220;arquivo.txt&#8221; contendo várias linhas de texto com o seguinte conteúdo:</p>
<blockquote>
<p>&#8220;É mais fácil pedir perdão do que permissão.&#8221;<br />
Grace Hopper</p>
<p>Essa frase é muitas vezes usada para destacar a importância da inovação e da ação decisiva no campo da tecnologia e da programação.</p>
<p>Grace Hopper, uma pioneira da computação, foi conhecida por sua abordagem ousada e sua disposição para desafiar o status quo, o que a tornou uma figura notável na história da informática.</p>
</blockquote>
<p> Podemos empregar a função enumerate para numerar as linhas enquanto o arquivo é lido:</p>
<pre><strong>with open("arquivo.txt", "r") as arquivo:</strong>
<strong>    for numero_linha, linha in enumerate(arquivo, 1):</strong>
<strong>        print(f"Linha {numero_linha}: {linha.strip()}")</strong></pre>
<p>Neste exemplo, o script efetua a leitura do arquivo linha por linha e usa enumerate para numerar as linhas, começando em 1. O método .strip() é usado para remover espaços em branco e quebras de linha no final de cada linha.</p>
<p><strong>Resultado:</strong></p>
<pre><span style="color: #000000;"><strong>Linha 1: "É mais fácil pedir perdão do que permissão."</strong></span>
<span style="color: #000000;"><strong>Linha 2: Grace Hopper</strong></span>
<span style="color: #000000;"><strong>Linha 3: </strong></span>
<span style="color: #000000;"><strong>Linha 4: Essa frase é muitas vezes usada para destacar a importância da inovação e da ação decisiva no campo da tecnologia e da programação.</strong></span>
<span style="color: #000000;"><strong>Linha 5: </strong></span>
<span style="color: #000000;"><strong>Linha 6: Grace Hopper, uma pioneira da computação, foi conhecida por sua abordagem ousada e sua disposição para desafiar o status quo, o que a tornou uma figura notável na história da informática.</strong></span></pre>
<p><strong>Exemplo 3: Enumerar Elementos em uma Matriz</strong></p>
<p>Vamos criar uma matriz bidimensional (uma lista de listas) e usar enumerate para enumerar os elementos em cada linha.</p>
<pre><strong>matriz = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]</strong>
<strong>for indice_linha, linha in enumerate(matriz):</strong>
<strong>    for indice_coluna, elemento in enumerate(linha):</strong>
<strong>        print(f"Elemento na linha {indice_linha}, coluna {indice_coluna}: {elemento}")</strong></pre>
<p><strong>Resultado:</strong></p>
<pre><span style="color: #000000;">Elemento na linha 0, coluna 0: 1</span>
<span style="color: #000000;">Elemento na linha 0, coluna 1: 2</span>
<span style="color: #000000;">Elemento na linha 0, coluna 2: 3</span>
<span style="color: #000000;">Elemento na linha 1, coluna 0: 4</span>
<span style="color: #000000;">Elemento na linha 1, coluna 1: 5</span>
<span style="color: #000000;">Elemento na linha 1, coluna 2: 6</span>
<span style="color: #000000;">Elemento na linha 2, coluna 0: 7</span>
<span style="color: #000000;">Elemento na linha 2, coluna 1: 8</span>
<span style="color: #000000;">Elemento na linha 2, coluna 2: 9</span></pre>
<p><strong>Exemplo 4: Encontrar a Posição de um Elemento em uma Lista</strong></p>
<p>Vamos criar uma lista de números e um elemento-alvo, informado pelo usuário. Usaremos então a função enumerate para encontrar a posição (índice) do elemento-alvo na lista.</p>
<pre><strong>numeros = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110]</strong>
<strong>alvo = int(input("Qual valor múltiplo de 10 deseja pesquisar?"))</strong>
<strong>for indice, numero in enumerate(numeros):</strong>
<strong>    if numero == alvo:</strong>
<strong>        print(f"O elemento {alvo} está na posição {indice}.")</strong></pre>
<p><strong>Resultado:</strong></p>
<pre><span style="color: #000000;"><strong>Qual valor múltiplo de 10 deseja pesquisar?</strong></span>
<span style="color: #000000;"><strong>40</strong></span>
<span style="color: #000000;"><strong>O elemento 40 está na posição 3.</strong></span></pre>
<p><strong>Exemplo 5: Iteração sobre os itens de uma tupla, ajustando o valor de inicio dos </strong><b>índices</b></p>
<pre><strong>linguagens = ("cobol", "c++", "python", "fortran", "kotlin", "javascript", "ruby", "lisp")</strong>
<strong>for indice, linguagem in enumerate(linguagens, start=10):</strong>
<strong>    print(f"Índice {indice}: {linguagem}")</strong></pre>
<p>Aqui, iteramos sobre uma lista com nomes de linguagens de programação e usamos enumerate com o parâmetro <em>start</em> para associar um índice, iniciando em 10, a cada linguagem.</p>
<p><strong>Resultado:</strong></p>
<pre><span style="color: #000000;"><strong>Índice 10: cobol</strong></span>
<span style="color: #000000;"><strong>Índice 11: c++</strong></span>
<span style="color: #000000;"><strong>Índice 12: python</strong></span>
<span style="color: #000000;"><strong>Índice 13: fortran</strong></span>
<span style="color: #000000;"><strong>Índice 14: kotlin</strong></span>
<span style="color: #000000;"><strong>Índice 15: javascript</strong></span>
<span style="color: #000000;"><strong>Índice 16: ruby</strong></span>
<span style="color: #000000;"><strong>Índice 17: lisp</strong></span></pre>
<p><strong>Exemplo 6: Iterar sobre um objeto do tipo enumerate com laço for</strong></p>
<pre># Lista de entrada
lista_cidades = ["Amsterdam", "Ushuaia", "São Paulo", "Manchester", "Osaka"]

# Criar objeto enumerate
obj_enumerate = enumerate(lista_cidades)

# Usar laço for para iterar sobre cada item no objeto enumerate
for item in obj_enumerate:
    # Imprimir o item correspondente a cada iteração
    print(item)</pre>
<p>Agora, a iteração é realizada em um objeto do tipo enumerate criado previamente na aplicação a partir de elementos presentes em uma lista &#8211; no caso, nomes de cidades.</p>
<p><strong>Resultado:</strong></p>
<pre><span style="color: #000000;"><strong>(0, 'Amsterdam')</strong></span>
<span style="color: #000000;"><strong>(1, 'Ushuaia')</strong></span>
<span style="color: #000000;"><strong>(2, 'São Paulo')</strong></span>
<span style="color: #000000;"><strong>(3, 'Manchester')</strong></span>
<span style="color: #000000;"><strong>(4, 'Osaka')</strong></span></pre>
<p><strong>Exemplo 7 &#8211; Usar a função enumerate() em uma string</strong></p>
<p>Neste exemplo é fornecida uma frase, e usando a função enumerate determinamos o número de índice de cada caractere digitado.</p>
<pre><strong># String de entrada</strong>
<strong>string_entrada = 'Hoje é sexta-feira!'

</strong><strong># Gerar um objeto enumerate a partir da string</strong>
<strong>obj_enumerate = enumerate(string_entrada)

</strong><strong># Converter o objeto enumerate em uma lista e mostrar seu conteúdo, um caractere por linha</strong>
<strong>print(list(obj_enumerate))</strong></pre>
<p><strong>Resultado:</strong></p>
<pre><span style="color: #000000;"><strong>[(0, 'H'), (1, 'o'), (2, 'j'), (3, 'e'), (4, ' '), (5, 'é'), (6, ' '), (7, 's'), (8, 'e'), (9, 'x'), (10, 't'), (11, 'a'), (12, '-'), (13, 'f'), (14, 'e'), (15, 'i'), (16, 'r'), (17, 'a'), (18, '!')]</strong></span></pre>
<h3>Conclusão</h3>
<p>Neste tutorial, mostrei os fundamentos, vantagens, desvantagens e as aplicações práticas da função enumerate em Python, uma ferramenta muito útil para iteração eficiente sobre sequências de valores. A capacidade de associar índices a elementos durante um loop não apenas simplifica o código, mas também amplia as possibilidades de manipulação de dados e criação de estruturas mais legíveis.</p>
<p>A função enumerate se destaca como uma solução elegante para situações em que a indexação de elementos é crucial. Seja na criação de compreensões de lista mais concisas, na implementação de lógicas de condição baseadas em índices ou no rastreamento simultâneo de múltiplas variáveis, a versatilidade desta função oferece um valioso incremento à caixa de ferramentas de qualquer programador Python.</p>
<p>Portanto, ao explorar o funcionamento dessa função, podemos podem otimizar o fluxo de trabalho, tornando os códigos mais compreensíveis e, em última análise, elevar o nível de eficiência e clareza nos projetos Python.</p>
<p>A função enumerate representa um recurso indispensável para aqueles que buscam aprimorar suas habilidades de programação e aprofundar seu entendimento da linguagem Python.</p>
<h3>Colabore com a Bóson Treinamentos</h3>
<p>Ajude o canal adquirindo meus cursos na Udemy:</p>
<ul>
<li>Bancos de Dados com MySQL Básico: <a href="https://bit.ly/35QdWE4" target="_blank" rel="noopener">https://bit.ly/35QdWE4</a></li>
<li>Lógica de Programação com Português Estruturado: <a href="https://bit.ly/3QKPn22" target="_blank" rel="noopener">https://bit.ly/3QKPn22</a></li>
<li>Programação em Python do Zero: <a href="https://bit.ly/python-boson" target="_blank" rel="noopener">https://bit.ly/python-boson</a></li>
</ul>
<p>Adquira também livros e outros itens na loja da Bóson Treinamentos na Amazon e ajude o canal a se manter e crescer: <a href="https://www.amazon.com.br/shop/bosontreinamentos" target="_blank" rel="noopener">https://www.amazon.com.br/shop/bosontreinamentos</a></p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/a-funcao-enumerate-em-python-numerar-elementos-em-uma-sequencia/">A função enumerate em Python &#8211; numerar elementos em uma sequência</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-python/a-funcao-enumerate-em-python-numerar-elementos-em-uma-sequencia/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>5 Funções de Arredondamento de Valores com NumPy em Python</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-python/5-funcoes-de-arredondamento-de-valores-com-numpy-em-python/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-python/5-funcoes-de-arredondamento-de-valores-com-numpy-em-python/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Wed, 17 Jan 2024 17:26:47 +0000</pubDate>
				<category><![CDATA[Programação em Python]]></category>
		<category><![CDATA[Computação Numérica]]></category>
		<category><![CDATA[Matemática]]></category>
		<category><![CDATA[NumPy]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19875</guid>

					<description><![CDATA[<p>5 Funções de Arredondamento de Valores com NumPy O arredondamento preciso de valores numéricos desempenha um papel muito importante em diversas aplicações científicas e de engenharia. No contexto da programação em Python, a biblioteca NumPy se destaca como uma ferramenta poderosa para manipulação eficiente de arrays e cálculos numéricos em geral. Neste artigo, exploraremos algumas funções de arredondamento numérico disponíveis no NumPy, mostrando alguns exemplos de como empregar essas funções para realizar arredondamentos diversos, incluindo arredondamento de valores de ponto flutuante e para números inteiros. Ao entender como usar essas funções, será possível otimizar nossos códigos e garantir resultados numericamente estáveis em uma variedade de cenários. Vamos às funções de arredondamento de valores com NumPy, para Python. Importar o NumPy O primeiro passo para usar as funções que serão abordadas é importar a biblioteca NumPy no script que usará as funções de arredondamento (o módulo numpy deve estar instalado previamente; caso não esteja, realize a instalação do NumPy seguindo estas instruções): import numpy as np Após importar a biblioteca, vejamos as funções mais importantes para arredondamento de valores numéricos. 1. Função numpy.round Ou seu alias numpy.around(): Arredonda o valor até uma precisão desejada Sintaxe numpy.round(valor,[num_casas_decimais]) Documentação: https://numpy.org/doc/stable/reference/generated/numpy.round.html Exemplo de uso [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/5-funcoes-de-arredondamento-de-valores-com-numpy-em-python/">5 Funções de Arredondamento de Valores com NumPy em Python</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>5 Funções de Arredondamento de Valores com NumPy</h2>
<p>O arredondamento preciso de valores numéricos desempenha um papel muito importante em diversas aplicações científicas e de engenharia. No contexto da programação em Python, a biblioteca NumPy se destaca como uma ferramenta poderosa para manipulação eficiente de arrays e cálculos numéricos em geral.</p>
<p>Neste artigo, exploraremos algumas funções de arredondamento numérico disponíveis no NumPy, mostrando alguns exemplos de como empregar essas funções para realizar arredondamentos diversos, incluindo arredondamento de valores de ponto flutuante e para números inteiros.</p>
<p>Ao entender como usar essas funções, será possível otimizar nossos códigos e garantir resultados numericamente estáveis em uma variedade de cenários.</p>
<p>Vamos às funções de arredondamento de valores com NumPy, para Python.</p>
<h3>Importar o NumPy</h3>
<p>O primeiro passo para usar as funções que serão abordadas é importar a biblioteca NumPy no script que usará as funções de arredondamento (o módulo numpy deve estar instalado previamente; caso não esteja, realize a <a href="http://www.bosontreinamentos.com.br/programacao-em-python/introducao-a-biblioteca-numpy-em-python/">instalação do NumPy seguindo estas instruções</a>):</p>
<pre><span style="font-weight: 400;">import numpy as np</span></pre>
<p>Após importar a biblioteca, vejamos as funções mais importantes para arredondamento de valores numéricos.</p>
<h3><span style="font-weight: 400;">1. Função numpy.round</span></h3>
<p><span style="font-weight: 400;">Ou seu alias <strong>numpy.around()</strong>: Arredonda o valor até uma precisão desejada</span></p>
<p><strong>Sintaxe</strong></p>
<pre><span style="font-weight: 400; color: #800080;">numpy.round(valor,[num_casas_decimais])</span></pre>
<p><span style="font-weight: 400;">Documentação: <a href="https://numpy.org/doc/stable/reference/generated/numpy.round.html" target="_blank" rel="noopener">https://numpy.org/doc/stable/reference/generated/numpy.round.html</a></span></p>
<p><strong>Exemplo de uso</strong></p>
<pre><span style="font-weight: 400; color: #339966;"># Criar um array de valores a serem arredondados:</span>
<span style="font-weight: 400;">valores = np.array([5.0, 6.98, 0.9863, 555, 10.099])</span>
<span style="font-weight: 400; color: #339966;"># Podemos usar também uma simples lista (descomentar para testar):</span>
<span style="font-weight: 400; color: #339966;"># valores = [5.0, 6.98, 0.9863, 555, 10.099] </span>
<span style="font-weight: 400;">print('Array original:')</span>
<span style="font-weight: 400;">print(valores)</span>
<span style="font-weight: 400;">
print('\nValores arredondados:')</span>
<span style="font-weight: 400;">print(np.round(valores, decimals = 2))</span>
<span style="font-weight: 400;">print(np.round(valores, decimals = 3))</span>
<span style="font-weight: 400;">print(np.around(valores)) <span style="color: #339966;"># valores são exibidos no formato float64</span></span>
<span style="font-weight: 400;">print(np.around(valores).astype(int)) <span style="color: #339966;"># converter valores para int antes da exibição (não mostra o ponto)</span></span></pre>
<p><strong>Resultado:</strong></p>
<pre><span style="color: #000000;">Array original:</span>
<span style="color: #000000;">[ 5. 6.98 0.9863 555. 10.099 ]
</span>
<span style="color: #000000;">Valores arredondados:</span>
<span style="color: #000000;">[ 5. 6.98 0.99 555. 10.1 ]</span>
<span style="color: #000000;">[ 5. 6.98 0.986 555. 10.099]</span>
<span style="color: #000000;">[ 5. 7. 1. 555. 10.]</span>
<span style="color: #000000;">[ 5 7 1 555 10]</span></pre>
<h3><span style="font-weight: 400;">2. Função numpy.floor </span></h3>
<p><span style="font-weight: 400;">Arredonda para o maior inteiro menor que o valor de entrada (&#8220;tipo&#8221; arredonda para baixo).</span></p>
<p><span style="font-weight: 400;">Retorna o menor inteiro i, tal que <em>i &lt;= valor</em></span></p>
<p><span style="font-weight: 400;">Documentação: <a href="https://numpy.org/doc/stable/reference/generated/numpy.floor.html" target="_blank" rel="noopener">https://numpy.org/doc/stable/reference/generated/numpy.floor.html</a></span></p>
<p><strong>Exemplo</strong></p>
<pre><span style="font-weight: 400;">valores = np.array([6.3, 0.786, 55, 10.999, -0.63])</span>
<span style="font-weight: 400;">print('Array original:')</span>
<span style="font-weight: 400;">print(valores)</span>
<span style="font-weight: 400;">print('\nValores arredondados:')</span>
<span style="font-weight: 400;">print(np.floor(valores))</span></pre>
<p><strong>Resultado:</strong></p>
<pre><span style="color: #000000;">Array original:</span>
<span style="color: #000000;">[ 6.3 0.786 55. 10.999 -0.63 ]</span>
<span style="color: #000000;">Valores arredondados:</span>
<span style="color: #000000;">[ 6. 0. 55. 10. -1.]</span></pre>
<h3><span style="font-weight: 400;">3. Função numpy.ceil </span></h3>
<p><span style="font-weight: 400;">Arredonda para o inteiro imediatamente maior que valor de entrada (&#8220;tipo&#8221; arredonda para cima). Essa função r</span><span style="font-weight: 400;">etorna o menor número inteiro i, tal que <em>i &gt;= valor</em></span></p>
<p><span style="font-weight: 400;">Documentação: <a href="https://numpy.org/doc/stable/reference/generated/numpy.ceil.html" target="_blank" rel="noopener">https://numpy.org/doc/stable/reference/generated/numpy.ceil.html</a></span></p>
<p><strong>Exemplo</strong></p>
<pre><span style="font-weight: 400;">valores = np.array([6.3, 0.786, 55, 10.999, -0.63])  # mesmo array usado em np.floor</span>
<span style="font-weight: 400;">print('Array original:')</span>
<span style="font-weight: 400;">print(valores)</span>
<span style="font-weight: 400;">print('\nValores arredondados:')</span>
<span style="font-weight: 400;">print(np.ceil(valores))</span></pre>
<p><strong>Resultado:</strong></p>
<pre><span style="color: #000000;">Array original:</span>
<span style="color: #000000;">[ 6.3 0.786 55. 10.999 -0.63 ]</span>
<span style="color: #000000;">Valores arredondados:</span>
<span style="color: #000000;">[ 7. 1. 55. 11. -0.]</span></pre>
<h3><span style="font-weight: 400;">4. Função numpy.trunc</span></h3>
<p><span style="font-weight: 400;">Truncar um valor numérico. Retorna o valor truncado da entrada, elemento a elemento.</span></p>
<p><span style="font-weight: 400;">O valor truncado do escalar x é o inteiro mais próximo i que está mais próximo de zero do que x. Resumindo, a parte </span><span style="font-weight: 400;">fracionária do valor atribuido é descartada.</span></p>
<h4><em>O que é truncar?</em></h4>
<p>O verbo &#8220;truncar&#8221; se refere ao ato de cortar ou remover a parte fracionária de um número, mantendo apenas a parte inteira. A operação de truncamento geralmente é realizada em números de ponto flutuante, onde há uma parte inteira e uma parte decimal. Também é possível aplicar a operação de truncagem em strings, o que não é o caso aqui.</p>
<p>Por exemplo, se tivermos o número de ponto flutuante 7.75 e quisermos truncá-lo para um inteiro, o resultado será 7, pois a parte decimal (0.75) foi removida.</p>
<p>É importante observar que o truncamento difere do arredondamento, onde a parte decimal é arredondada para o inteiro mais próximo. No truncamento, a parte decimal é simplesmente removida, resultando sempre em um número menor ou igual ao número original.</p>
<p><span style="font-weight: 400;">Documentação de numpy.trunc: <a href="https://numpy.org/doc/stable/reference/generated/numpy.trunc.html" target="_blank" rel="noopener">https://numpy.org/doc/stable/reference/generated/numpy.trunc.html</a></span></p>
<p><strong>Exemplo</strong></p>
<pre><span style="font-weight: 400;">valores = np.array([6.3, 0.786, 55, 10.999, -0.63])</span>
<span style="font-weight: 400;">print('Valores truncados:')</span>
<span style="font-weight: 400;">print(np.trunc(valores))</span></pre>
<p><strong>Resultado:</strong></p>
<pre><span style="color: #000000;">Valores truncados:</span>
<span style="color: #000000;">[ 6. 0. 55. 10. -0.]</span></pre>
<h3><span style="font-weight: 400;">5. Função numpy.fix</span></h3>
<p><span style="font-weight: 400;">Arredonda para o número inteiro mais próximo em direção a zero.</span></p>
<p><span style="font-weight: 400;">Arredonda um array de pontos flutuantes elemento a elemento para o número inteiro mais próximo de zero. Os valores arredondados são retornados como valores de ponto flutuante.</span></p>
<p><span style="font-weight: 400;">Documentação: <a href="https://numpy.org/doc/stable/reference/generated/numpy.fix.html" target="_blank" rel="noopener">https://numpy.org/doc/stable/reference/generated/numpy.fix.html</a></span></p>
<p><strong>Exemplo</strong></p>
<pre><span style="font-weight: 400;">valores = np.array([6.3, 0.786, 55, 10.999, -0.63])</span>
<span style="font-weight: 400;">print('Valores Arredondados:')</span>
<span style="font-weight: 400;">print(np.fix(valores))</span></pre>
<p><strong>Resultado:</strong></p>
<pre><span style="color: #000000;">Valores Arredondados:</span>
<span style="color: #000000;">[ 6. 0. 55. 10. -0.]</span></pre>
<h3>Conclusão</h3>
<p>As funções de arredondamento proporcionadas pela biblioteca NumPy conferem uma grande flexibilidade aos programadores Python ao lidar com operações numéricas. Seja em análises estatísticas, processamento de dados ou simulações complexas, o entendimento aprofundado dessas funções é fundamental para assegurar resultados confiáveis e consistentes.</p>
<p>Neste artigo, trabalhamos com as principais funções de arredondamento do NumPy, com exemplos de códigos simples para melhor entendimento de cada função. Ao incorporar esses conhecimentos em seus projetos, você estará mais preparado para resolver desafios numéricos e obter soluções eficientes e precisas ao criar aplicações com Python.</p>
<h3>Colabore com a Bóson Treinamentos</h3>
<p>Ajude o canal adquirindo meus cursos na Udemy:</p>
<ul>
<li>Bancos de Dados com MySQL Básico: <a href="https://bit.ly/35QdWE4" target="_blank" rel="noopener">https://bit.ly/35QdWE4</a></li>
<li>Lógica de Programação com Português Estruturado: <a href="https://bit.ly/3QKPn22" target="_blank" rel="noopener">https://bit.ly/3QKPn22</a></li>
<li>Programação em Python do Zero: <a href="https://bit.ly/python-boson" target="_blank" rel="noopener">https://bit.ly/python-boson</a></li>
</ul>
<p>Adquira também livros e outros itens na loja da Bóson Treinamentos na Amazon e ajude o canal a se manter e crescer: <a href="https://www.amazon.com.br/shop/bosontreinamentos" target="_blank" rel="noopener">https://www.amazon.com.br/shop/bosontreinamentos</a></p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/5-funcoes-de-arredondamento-de-valores-com-numpy-em-python/">5 Funções de Arredondamento de Valores com NumPy em Python</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-python/5-funcoes-de-arredondamento-de-valores-com-numpy-em-python/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programa em Python que sorteia e divide alunos em grupos em uma turma</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-python/programa-em-python-que-sorteia-e-divide-alunos-em-grupos-em-uma-turma/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-python/programa-em-python-que-sorteia-e-divide-alunos-em-grupos-em-uma-turma/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Tue, 10 Oct 2023 11:49:16 +0000</pubDate>
				<category><![CDATA[Programação em Python]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19773</guid>

					<description><![CDATA[<p>Programa em Python que sorteia e divide alunos em grupos em uma turma Um problema que ocorre às vezes nos cursos que ministro, tanto em cursos técnicos quanto em cursos livres e de nível superior, é a formação de grupos pelos alunos para a realização de trabalhos e execução de projetos. Essa situação ocorreu em um curso de programação recentemente. Os alunos precisavam se dividir em grupos, com até 5 membros por grupo, para trabalharem em um projeto de desenvolvimento de software com acesso a bancos de dados. Como é o costume na instituição onde atuo, deixamos os alunos se auto-organizarem, de modo a praticarem assim a autonomia e trabalho em equipe. Não deu certo. Após mais de uma hora de conversas, mini-reuniões e muita discussão, eles não conseguiam entrar em acordo sobre quem ficaria em qual grupo, e a atividade estava quase se transformando em briga na sala de aula. Sendo assim, tive de intervir. Resolvi que o melhor a fazer seria eu mesmo realizar a divisão dos grupos. Mas como fazer isso de forma igualitária? Como atribuir alunos aos grupos aleatoriamente, sem nenhum viés de seleção? Simples: deixando um programa escolher de forma automática os grupos e seus [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/programa-em-python-que-sorteia-e-divide-alunos-em-grupos-em-uma-turma/">Programa em Python que sorteia e divide alunos em grupos em uma turma</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Programa em Python que sorteia e divide alunos em grupos em uma turma</h3>
<p>Um problema que ocorre às vezes nos cursos que ministro, tanto em cursos técnicos quanto em cursos livres e de nível superior, é a formação de grupos pelos alunos para a realização de trabalhos e execução de projetos.</p>
<p>Essa situação ocorreu em um curso de programação recentemente. Os alunos precisavam se dividir em grupos, com até 5 membros por grupo, para trabalharem em um projeto de desenvolvimento de software com acesso a bancos de dados.</p>
<p>Como é o costume na instituição onde atuo, deixamos os alunos se auto-organizarem, de modo a praticarem assim a autonomia e trabalho em equipe.</p>
<p style="text-align: center;"><span style="font-size: 14pt;"><strong><em>Não deu certo.</em></strong></span></p>
<p>Após mais de uma hora de conversas, mini-reuniões e muita discussão, eles não conseguiam entrar em acordo sobre quem ficaria em qual grupo, e a atividade estava quase se transformando em briga na sala de aula.</p>
<p>Sendo assim, tive de intervir. Resolvi que o melhor a fazer seria eu mesmo realizar a divisão dos grupos.</p>
<p>Mas como fazer isso de forma igualitária? Como atribuir alunos aos grupos aleatoriamente, sem nenhum viés de seleção?</p>
<p>Simples: deixando um programa escolher de forma automática os grupos e seus integrantes. Sendo assim, escrevi um pequeno script em Python para realizar essa tarefa para nós. E neste artigo reproduzo o programa, com uma explicação sucinta sobre seu funcionamento na sequência.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-19795" title="Divisão de alunos em grupos" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2023/10/alunos-escola-grupos-boson.png" alt="Divisão de alunos em grupos" width="450" height="325" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2023/10/alunos-escola-grupos-boson.png 600w, https://www.bosontreinamentos.com.br/wp-content/uploads/2023/10/alunos-escola-grupos-boson-420x303.png 420w" sizes="auto, (max-width: 450px) 100vw, 450px" /></p>
<h3>O que faz o programa</h3>
<p>Temos aqui um programa em Python que sorteia números de uma lista que contém a quantidade de alunos que devem ser distribuídos nos grupos (identificados pelo número de chamada, que começa em 1).</p>
<p>O programa deve retornar grupos com no máximo x integrantes em cada, sem repetição &#8211; cada número sorteado é retirado da lista inicial.</p>
<p>A quantidade máxima de alunos em cada grupos também é informada pelo usuário. Podem haver grupos com menos alunos, caso a quantidade total de alunos não seja múltipla da quantidade de alunos por grupo.</p>
<p>Vamos ao código da aplicação.</p>
<h3>Código</h3>
<pre><strong>import random

</strong><span style="color: #339966;"><strong># Perguntar ao usuário quantos alunos serão divididos em grupos</strong></span>
<strong>quantidade_numeros = int(input("Quantidade de alunos no total:"))

</strong><span style="color: #339966;"><strong># Lista de números de 1 até a quantidade fornecida pelo usuário</strong></span>
<strong>numeros = list(range(1, quantidade_numeros + 1))

</strong><span style="color: #339966;"><strong># Função para sortear e remover um número da lista</strong></span>
<strong>def sortear_numero(lista):</strong>
<strong>    numero_sorteado = random.choice(lista)</strong>
<strong>    lista.remove(numero_sorteado)</strong>
<strong>    return numero_sorteado

</strong><span style="color: #339966;"><strong># Perguntar ao usuário quantos alunos no máximo por grupo</strong></span>
<strong>num_numeros_max_por_grupo = int(input("Quantos alunos no máximo por grupo? "))

</strong><span style="color: #339966;"><strong># Inicializar a lista de grupos</strong></span>
<strong>grupos = []

</strong><span style="color: #339966;"><strong># Gerar grupos com base na quantidade de alunos e na quantidade máxima por grupo</strong></span>
<strong>while numeros:</strong>
<strong>    tamanho_grupo = min(num_numeros_max_por_grupo, len(numeros))</strong>
<strong>    grupo = [sortear_numero(numeros) for _ in range(tamanho_grupo)]</strong>
<strong>    grupos.append(grupo)

</strong><span style="color: #339966;"><strong># Exibir os grupos</strong></span>
<strong>print('\nGrupos formados:')</strong>
<strong>for i, grupo in enumerate(grupos):</strong>
<strong>    print(f'Grupo {i + 1}: {grupo}')</strong></pre>
<h3>Teste do script</h3>
<p>Exemplo de saída para uma turma com 23 alunos, divididos em grupos com no máximo cinco alunos por grupo:</p>
<pre><span style="color: #000000;"><strong>Quantidade de alunos no total:</strong></span>
<span style="color: #000000;"><strong>23</strong></span>
<span style="color: #000000;"><strong>Quantos alunos no máximo por grupo? </strong></span>
<span style="color: #000000;"><strong>5

</strong></span><span style="color: #000000;"><strong>Grupos formados:</strong></span>
<span style="color: #000000;"><strong>Grupo 1: [7, 2, 9, 14, 22]</strong></span>
<span style="color: #000000;"><strong>Grupo 2: [5, 8, 13, 3, 11]</strong></span>
<span style="color: #000000;"><strong>Grupo 3: [15, 16, 20, 12, 17]</strong></span>
<span style="color: #000000;"><strong>Grupo 4: [21, 4, 10, 1, 18]</strong></span>
<span style="color: #000000;"><strong>Grupo 5: [23, 6, 19]</strong></span></pre>
<h3>Explicação</h3>
<ul>
<li>Iniciamos o programa importando o módulo <em>random</em> para geração de números aleatórios.</li>
<li>Na sequência, o programa pergunta ao usuário quantos números de identificação de alunos ele deseja usar, e armazena o valor informado na variável quantidade_numeros</li>
<li>Depois, é criada uma lista de nome &#8220;<strong>números</strong>&#8221; contendo os valores sequenciais de 1 até a quantidade fornecida pelo usuário</li>
<li>Então, é definida uma função de nome &#8216;<strong>sortear_numero</strong>&#8216; para sortear e remover um número da lista</li>
<li>É perguntado ao usuário também quantos alunos, no máximo, devem estar em cada grupo, e o valor informado é armazenado na variável <strong>num_numeros_max_por_grupo</strong>.</li>
<li>Logo após, uma lista vazia de nome &#8216;<strong>grupos</strong>&#8216; é inicializada.</li>
<li>Os grupos são então gerados com base na quantidade de alunos e na quantidade máxima por grupo informadas. Para isso é empregado um laço <em>while</em> que continuará até que todos os alunos sejam alocados em grupos.<br />
A cada iteração, ele cria um grupo com no máximo o número de alunos especificado pelo usuário.<br />
A função sortear_numero é usada para escolher aleatoriamente os alunos para o grupo, e esses alunos são removidos da lista principal. Os grupos são armazenados na lista grupos.</li>
<li>Finalmente, o programa usa um laço for para exibir os grupos formados na tela, mostrando a que grupo cada aluno pertence.</li>
</ul>
<h3>Conclusão</h3>
<p>O programa funcionou como esperado, e os alunos foram divididos em grupos de forma satisfatória (com alguns reclamando que queriam ficar no grupo do amigo, mas paciência!)</p>
<p>Há espaço para melhorias neste programa? Sem dúvidas. Por exemplo, poderiam ser atribuídos &#8216;pesos&#8217; aos alunos, para indicar aqueles que possuem maior conhecimento dos que tem maior dificuldade de aprendizado, e assim ao atribuir os alunos ao grupos, evitar de colocar os melhores alunos em um mesmo grupo, deixando os alunos com maior dificuldade juntos.</p>
<p>Essa é uma modificação que farei futuramente no script &#8211; ou você mesmo pode tentar realizar, e se quiser, postar o código nos comentários aqui abaixo para compartilhar com o público em geral.</p>
<h3>Colabore com a Bóson Treinamentos</h3>
<p>Ajude o canal adquirindo meus cursos na Udemy:</p>
<ul>
<li>Bancos de Dados com MySQL Básico: <a href="https://bit.ly/35QdWE4" target="_blank" rel="noopener">https://bit.ly/35QdWE4</a></li>
<li>Lógica de Programação com Português Estruturado: <a href="https://bit.ly/3QKPn22" target="_blank" rel="noopener">https://bit.ly/3QKPn22</a></li>
<li>Programação em Python do Zero: <a href="https://bit.ly/python-boson" target="_blank" rel="noopener">https://bit.ly/python-boson</a></li>
</ul>
<p>Adquira também livros e outros itens na loja da Bóson Treinamentos na Amazon e ajude o canal a se manter e crescer: <a href="https://www.amazon.com.br/shop/bosontreinamentos" target="_blank" rel="noopener">https://www.amazon.com.br/shop/bosontreinamentos</a></p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/programa-em-python-que-sorteia-e-divide-alunos-em-grupos-em-uma-turma/">Programa em Python que sorteia e divide alunos em grupos em uma turma</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-python/programa-em-python-que-sorteia-e-divide-alunos-em-grupos-em-uma-turma/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Como usar o objeto Series da biblioteca Pandas em Python</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-python/como-usar-o-objeto-series-da-biblioteca-pandas-em-python/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-python/como-usar-o-objeto-series-da-biblioteca-pandas-em-python/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Mon, 04 Sep 2023 17:09:20 +0000</pubDate>
				<category><![CDATA[Ciência de Dados]]></category>
		<category><![CDATA[Programação em Python]]></category>
		<category><![CDATA[Big Data]]></category>
		<category><![CDATA[Data Science]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19627</guid>

					<description><![CDATA[<p>Como usar o objeto Series da biblioteca Pandas para análise de dados em Python O módulo Pandas é uma biblioteca de código aberto em Python que fornece estruturas de dados e ferramentas para análise de dados eficientes e bastante flexíveis. Essa biblioteca é amplamente empregada em tarefas de manipulação, limpeza, análise e transformação de dados em projetos diversos de ciência de dados, análise de dados e engenharia de software em geral. O Pandas possui duas estruturas de dados principais: os objetos Series e DataFrame. Neste tutorial vamos trabalhar com o objeto Series, e na próxima lição, abordaremos o objeto DataFrame. Objeto Series Um Series (&#8220;Série&#8221;) é um objeto do tipo array unidimensional contendo uma sequência de valores (semelhante a uma lista ou um array do NumPy) e um array associado de rótulos (labels) de dados, chamado de índice. Ou seja, trata-se de uma estrutura de dados simples cujos valores são armazenados na forma de uma coluna de dados, porém contendo uma coluna de valores de índice associados. Outra forma de pensar em um Series é como um dicionário ordenado de tamanho fixo, como se fosse um mapeamento entre valores de índices e valores de dados. Ele pode inclusive ser utilizada em [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/como-usar-o-objeto-series-da-biblioteca-pandas-em-python/">Como usar o objeto Series da biblioteca Pandas em Python</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Como usar o objeto Series da biblioteca Pandas para análise de dados em Python</h2>
<p>O módulo Pandas é uma biblioteca de código aberto em Python que fornece estruturas de dados e ferramentas para análise de dados eficientes e bastante flexíveis. Essa biblioteca é amplamente empregada em tarefas de manipulação, limpeza, análise e transformação de dados em projetos diversos de ciência de dados, análise de dados e engenharia de software em geral.</p>
<p>O Pandas possui duas estruturas de dados principais: os objetos Series e DataFrame. Neste tutorial vamos trabalhar com o objeto Series, e na próxima lição, abordaremos o objeto DataFrame.</p>
<h3>Objeto Series</h3>
<p>Um Series (&#8220;Série&#8221;) é um objeto do tipo array unidimensional contendo uma sequência de <strong>valores</strong> (semelhante a uma lista ou um array do NumPy) e um array associado de rótulos (<em>labels</em>) de dados, chamado de <strong>índice</strong>.</p>
<p>Ou seja, trata-se de uma estrutura de dados simples cujos valores são armazenados na forma de uma coluna de dados, porém contendo uma coluna de valores de índice associados.</p>
<p>Outra forma de pensar em um Series é como um dicionário ordenado de tamanho fixo, como se fosse um mapeamento entre valores de índices e valores de dados. Ele pode inclusive ser utilizada em alguns contextos em que um dicionário seria empregado.</p>
<p>No geral, usamos Series para guardar dados sobre um atributo em particular no dataset, sendo possível extrair uma coluna de um DataFrame na forma de um objeto Series, ou ainda adicionar uma coluna a um DataFrame a partir de um Series.</p>
<h3>Como importar a biblioteca Pandas</h3>
<p>Para que possamos criar e usar um objeto Series, primeiramente devemos importar o módulo Pandas (que deve estar instalado):</p>
<pre><strong>import pandas as pd</strong></pre>
<p>Caso o módulo Pandas não esteja instalado, use um gerenciador de pacotes como o pip ou conda para realizar sua instalação, como segue:</p>
<pre><strong>pip install pandas</strong></pre>
<p>ou (se estiver usando o Anaconda / Miniconda)</p>
<pre><strong>conda install pandas</strong></pre>
<h3>Como criar um objeto Series</h3>
<p>Podemos criar um objeto Series de várias maneiras, incluindo a partir de listas, dicionários, arrays NumPy e até mesmo criar Series vazias. Vejamos cada uma dessas formas com um exemplo.</p>
<h4>Criar objeto Series vazio invocando o método Series()</h4>
<pre><span style="color: #339966;"><strong># Objeto Series vazio</strong></span>
<strong>serie = pd.Series()</strong>
<strong>print(serie)</strong></pre>
<h4>Criar Series a partir de uma lista comum</h4>
<p>Uma forma mais comum é criar um objeto Series passando algum tipo de array de dados, como uma lista de valores:</p>
<pre><span style="color: #339966;"><strong># Series com lista do Python</strong></span>
<strong>dados = pd.Series([12, 34, 21, -9, 0, 7])</strong>
<strong>print(dados)</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">0    12
1    34
2    21
3    -9
4     0
5     7
dtype: int64</span></pre>
<h4>Criar objeto Series a partir de um array NumPy</h4>
<p>Podemos ainda passar um array NumPy para criar um Series (a biblioteca NumPy deve estar instalada para que o exemplo a seguir funcione):</p>
<pre><span style="color: #339966;"><strong># Series com array NumPy</strong></span>
<strong>import numpy as np

</strong><strong>array_numpy = np.array([10, 20, 30, 40, 50, 60])</strong>
<strong>dados = pd.Series(array_numpy)</strong>
<strong>print(dados)</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">0    10
1    20
2    30
3    40
4    50
5    60
dtype: int32</span></pre>
<h4>Criar Series preenchida com valores repetidos</h4>
<p>Além disso, podemos criar um Series preenchido com um dado repetido para todos os índices:</p>
<pre><span style="color: #339966;"><strong># Series com repetição de itens</strong></span>
<strong>serie = pd.Series(33, index = ["num1", "num2", "num3", "num4", "num5"])</strong>
<strong>print(serie)</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">num1    33
num2    33
num3    33
num4    33
num5    33
dtype: int64</span></pre>
<h4>Criar Series a partir de um dicionário</h4>
<p>Finalmente, podemos criar um objeto Series passando um dicionário como parâmetro. Neste caso, as chaves serão usadas como índices e os valores serão os itens:</p>
<pre><strong><span style="color: #339966;"># Series com dicionário</span></strong>
<strong>dicionario = {</strong>
<strong>    'Ano' :1950,</strong>
<strong>    'Item' : 'TV',</strong>
<strong>    'Valor' : 250.60</strong>
<strong>}

</strong><strong>serie = pd.Series(dicionario)</strong>
<strong>print(serie)</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">Ano       1950
Item        TV
Valor    250.6
dtype: object</span></pre>
<p><em>Outro exemplo de dicionário</em></p>
<pre><strong>dicionario = {'Brasil': 5, 'EUA': 0, 'Inglaterra': 1, 'Argentina': 3}</strong>
<strong>dados = pd.Series(dicionario)</strong>
<strong>print(dados)</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">Brasil        5
EUA           0
Inglaterra    1
Argentina     3
dtype: int64</span></pre>
<h3>Valores e índices</h3>
<p>A representação em string de uma Series exibida interativamente mostra o índice à esquerda e os valores à direita. Como não especificamos um índice para os dados, um índice default constituído dos inteiros de 0 a n-1 (em que n é o tamanho dos dados) é criado.</p>
<p>Podemos obter a representação do array e o objeto de índice de Series por meio de seus atributos de valores (<strong><em>values</em></strong>) e de índice (<em><strong>index</strong></em>), respectivamente:</p>
<pre><span style="color: #ff0000;"><strong>print('Dados: ', dados.values)</strong>
<strong>print('Índices: ', dados.index)</strong></span></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">Dados:  [5 0 1 3]
Índices:  Index(['Brasil', 'EUA', 'Inglaterra', 'Argentina'], dtype='object')</span></pre>
<h3>Criar índices personalizados</h3>
<p>Com frequência, precisamos criar um Series com um índice que identifique cada ponto de dado com um rótulo. Neste caso passamos o parâmetro index=[] contendo uma lista de valores que serão usados como índices:</p>
<pre><strong>dados = pd.Series([12, 34, 21, -9, 0, 7], index=['a','b','c','d','e','f'])</strong>
<strong>print(dados)</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">a    12
b    34
c    21
d    -9
e     0
f     7
dtype: int64</span></pre>
<p>Podemos usar rótulos no índice quando selecionamos valores únicos ou um conjunto de valores:</p>
<pre><strong>print('Dado no índice c: ', dados['c'])</strong>
<strong>print('\nÍndices b e e:')</strong>
<strong>print(dados[['b','e']])</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">Dado no índice c:  21

Índices b e e:
b    34
e     0
dtype: int64</span></pre>
<h3>Operações Gerais em objetos Series</h3>
<p>Agora que sabemos como criar e acessar objetos Series do Pandas, vamos conhecer algumas operações básicas que podemos realizar sobre os índices e dados armazenados na estrutura.</p>
<h4>1. Acessar um item</h4>
<p>Podemos acessar itens (valores) usando número de posição de índice ou nome de índice (se aplicado):</p>
<pre><strong>serie = pd.Series([10, 20, 30, 40, 50], index = ["num1", "num2","num3", "num4", "num5"])</strong>
<strong>print('Item na posição 0: ', serie[0])</strong>
<strong>print('Item de índice num3: ', serie['num3'])</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">Item na posição 0:  10
Item de índice num3:  30</span></pre>
<h4>2. Descobrir valores máximo e mínimo</h4>
<p>Podemos retornar os valores máximo e mínimo de um objeto Series com o emprego dos métodos .max() e .min():</p>
<pre><strong>serie = pd.Series([5, 7, 12, 2, 1, 6, 7, 0, -3, 22])</strong>
<strong>print(f'Menor valor: {serie.min()}')</strong>
<strong>print(f'Valor mais alto: {serie.max()}')</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">Menor valor: -3
Valor mais alto: 22</span></pre>
<p>Para obter o índice associado ao maior valor usamos o método <em>.idxmax()</em> e o índice do menor valor com <em>.idxmin()</em>:</p>
<pre><strong>serie = pd.Series([5, 7, 12, 2, 1, 6, 7, 0, -3, 22])</strong>
<strong>print(f'Valor mais alto: {serie.max()}')</strong>
<strong>print(f'Índice do maior valor: {serie.idxmax()}')</strong>
<strong>print(f'Índice do menor valor: {serie.idxmin()}')</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">Valor mais alto: 22
Índice do maior valor: 9
Índice do menor valor: 8</span></pre>
<h4>3. Funções de Estatística Descritiva</h4>
<p>Diversas funções de estatística descritiva estão disponíveis em objetos Series, na forma de métodos associados, como Média Aritmética Simples, Mediana e Somatório, entre outras.</p>
<p>A média aritmética pode ser obtida com o método .mean():</p>
<pre><strong>print(f'Média aritmética: {serie.mean()}')</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">Média aritmética: 5.9</span></pre>
<p>A mediana com .median():</p>
<pre><strong>print(f'Mediana dos valores: {serie.median()}')</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">Mediana dos valores: 5.5</span></pre>
<p>E o somatório dos valores com .sum():</p>
<pre><strong>print(f'Somatório dos valores: {serie.sum()}')</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">Somatório dos valores: 59</span></pre>
<h4>4. Converter objeto Series em lista comum do Python</h4>
<p>Podemos converter um objeto Series em uma lista comum do Python com o método .tolist():</p>
<pre><strong>serie = pd.Series([5, 7, 12, 2, 1, 6, 7, 0, -3, 22])

</strong><span style="color: #339966;"><strong># Ver objeto Series</strong></span>
<strong>print(serie)

</strong><span style="color: #339966;"><strong># Criar lista a partir de Series</strong></span>
<strong>lista = serie.tolist()

</strong><span style="color: #339966;"><strong># Ver lista criada</strong></span>
<strong>print('Lista: ', lista)</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">0     5
1     7
2    12
3     2
4     1
5     6
6     7
7     0
8    -3
9    22
dtype: int64
Lista:  [5, 7, 12, 2, 1, 6, 7, 0, -3, 22]</span></pre>
<h4>5. Mostrar apenas os primeiros e últimos itens da Series</h4>
<p>Se a quantidade de itens no objeto Series for grande, talvez você queira ver apenas os primeiros valores para ter uma ideia da natureza dos dados. Neste caso, pode usar o método head(), que retorna os cinco primeiros itens da série.</p>
<pre><strong>print(serie.head())</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">0     5
1     7
2    12
3     2
4     1
dtype: int64</span></pre>
<p>Da mesma forma, para mostrar os cinco últimos elementos, usamos o método <strong>.tail()</strong></p>
<p>Dependendo da quantidade de itens, o Pandas retorna automaticamente apenas os cinco primeiros e os cinco últimos, sem a necessidade de usar o método .head().</p>
<p>No exemplo a seguir geramos 1000 números aleatórios usando a biblioteca NumPy, e criamos um Series do Pandas com esses valores. Na sequência, imprimimos os valores na tela &#8211; somente os cinco primeiros e cinco últimos devem aparecer neste caso, mesmo sem usar os métodos head() e tail():</p>
<pre><strong>import pandas as pd
</strong><strong>from numpy import random

</strong><strong>lista = []</strong>
<strong>for i in range(1000):</strong>
<strong>    lista.append(random.randint(250))</strong>
<strong>dados = pd.Series(lista)</strong>
<strong>print(dados)</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">0        0
1       39
2      161
3      125
4      147
      ... 
995     24
996     95
997    165
998    144
999     45
Length: 1000, dtype: int64</span></pre>
<h4>6. Mostrar os elementos ordenados por valores de índice: método .sort_index()</h4>
<pre><strong>dicionario = {'Brasil': 5, 'EUA': 0, 'Inglaterra': 1, 'Argentina': 3}</strong>
<strong>dados = pd.Series(dicionario)</strong>
<strong>print(dados.sort_index())</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">Argentina     3
Brasil        5
EUA           0
Inglaterra    1
dtype: int64</span></pre>
<h4>7. Mostrar os elementos ordenados por valores dos itens: método .sort_values()</h4>
<pre><strong>dicionario = {'Brasil': 5, 'EUA': 0, 'Inglaterra': 1, 'Argentina': 3}</strong>
<strong>dados = pd.Series(dicionario)</strong>
<strong>print(dados.sort_values())</strong></pre>
<p>Saída:</p>
<pre><span style="color: #000000;">EUA           0
Inglaterra    1
Argentina     3
Brasil        5
dtype: int64</span></pre>
<p>Vamos praticar um pouco agora.</p>
<h3>Dataset para exercícios</h3>
<p>Escreva um código que gere um objeto Series do Pandas, contendo uma lista com todos os países da União Europeia e suas respectivas populações, com os nomes dos países sendo usados como índices.</p>
<pre><span style="color: #339966;"><strong># Dicionário contendo os países da União Europeia e suas populações</strong></span>
<strong>dados = {</strong>
<strong>'Austria': 9006398,</strong>
<strong>'Alemanha': 83289318,</strong>
<strong>'Bélgica': 11589623,</strong>
<strong>'Bulgária': 7000039,</strong>
<strong>'Chipre': 1207361,</strong>
<strong>'Croácia': 4076246,</strong>
<strong>'Dinamarca': 5806015,</strong>
<strong>'Eslováquia': 5459642,</strong>
<strong>'Eslovênia': 2095861,</strong>
<strong>'Espanha': 47351567,</strong>
<strong>'Estônia': 1324820,</strong>
<strong>'Finlândia': 5523231,</strong>
<strong>'França': 66977107,</strong>
<strong>'Grécia': 10423056,</strong>
<strong>'Hungria': 9775564,</strong>
<strong>'Irlanda': 4882495,</strong>
<strong>'Itália': 60233948,</strong>
<strong>'Letônia': 1906743,</strong>
<strong>'Lituânia': 2793471,</strong>
<strong>'Luxemburgo': 613894,</strong>
<strong>'Malta': 493559,</strong>
<strong>'Países Baixos': 17134872,</strong>
<strong>'Polônia': 37974750,</strong>
<strong>'Portugal': 10286263,</strong>
<strong>'República Tcheca': 10693939,</strong>
<strong>'Romênia': 19405156,</strong>
<strong>'Suécia': 10106005,</strong>
<strong>}

</strong><span style="color: #339966;"><strong># Criar um objeto Series a partir do dicionário</strong></span>
<strong>populacao_ue = pd.Series(dados)

</strong><span style="color: #339966;"><strong># Exibir o objeto Series</strong></span>
<strong>print(populacao_ue)</strong></pre>
<h3>Exercícios: Series do Pandas</h3>
<p>Vamos treinar agora. Para os próximos exercícios, use o Series <em><strong>populacao_ue</strong></em> criado anteriormente. As respostas estão na sequência, com códigos sugeridos.</p>
<p>01. Imprimir a população da França.</p>
<p>02. Imprimir a lista de países da União Europeia em ordem alfabética.</p>
<p>03. Calcular e imprimir o número total de países na União Europeia.</p>
<p>04. Calcular e imprimir a população média dos países da União Europeia. Mostrar o resultado com duas casas decimais apenas.</p>
<p>05. Encontrar e imprimir o país com a maior população na União Europeia.</p>
<p>06. Filtrar e imprimir os países da União Europeia com população acima de 10 milhões, mostrando o resultado em ordem alfabética de nome de país.</p>
<p>07. Calcular e imprimir a população total da União Europeia.</p>
<p>08. Calcular e imprimir a porcentagem da população da Espanha em relação à população total da União Europeia.</p>
<p>09. Ordenar a Series em ordem decrescente de população e imprimir os cinco primeiros países.</p>
<p>10. Criar uma nova Series com a população de apenas três países da União Europeia e calcular a média da população desses países.<br />
Use como exemplos os países França, Alemanha e Croácia.</p>
<p>11. Como exibir apenas as últimas três linhas do Series Pandas de nome &#8220;populacao_ue&#8221;?<br />
A. populacao_ue(3:)<br />
B. populacao_ue(1:3)<br />
C. populacao_ue(-3:)<br />
D. populacao_ue(:3)<br />
E. populacao_ue(+3)</p>
<p>12. Podemos criar um objeto Series do Pandas usando:<br />
A. Array NumPy<br />
B. Lista<br />
C. Dicionário<br />
D. Valores repetidos<br />
E. Todos os anteriores</p>
<h3>RESPOSTAS DOS EXERCÍCIOS</h3>
<p>01.</p>
<pre><strong>print(populacao_ue['França'])</strong></pre>
<p>02.</p>
<pre>print(populacao_ue.sort_index())</pre>
<p>03.</p>
<pre>numero_paises = len(populacao_ue.index)
print("Número de países na União Europeia:", numero_paises)</pre>
<p>04.</p>
<pre>populacao_media = populacao_ue.mean()
print(f'População média dos países da União Europeia: {round(populacao_media, 2)}')</pre>
<p>05.</p>
<pre>pais_maior_populacao = populacao_ue.idxmax()
print("País com maior população na União Europeia:", pais_maior_populacao)</pre>
<p>06.</p>
<pre><span style="color: #339966;"># Filtrar os países da União Europeia com população acima de 10 milhões</span>
paises_mais_10M = populacao_ue[populacao_ue &gt; 10000000]

<span style="color: #339966;"># Ordenar os países filtrados em ordem alfabética e imprimir</span>
paises_ordenados = paises_mais_10M.sort_index()
print("Países da União Europeia com população acima de 10 milhões, em ordem alfabética:")
print(paises_ordenados)</pre>
<p>07.</p>
<pre>print(f'População total da União Europeia: {populacao_ue.sum()} habitantes')</pre>
<p>08.</p>
<pre>populacao_espanha = populacao_ue['Espanha']
populacao_total = populacao_ue.sum()
porcentagem_espanha = (populacao_espanha / populacao_total) * 100
print(f'População da Espanha em relação à população da UE: {porcentagem_espanha:.02f}%')</pre>
<p>09.</p>
<pre>paises_mais_populosos = populacao_ue.sort_values(ascending=False)
print("Cinco primeiros países mais populosos:")
print(paises_mais_populosos.head())</pre>
<p>10.</p>
<pre>paises_selecionados = populacao_ue[['França', 'Alemanha', 'Croácia']]
media_populacao_selecionados = paises_selecionados.mean()
print("Média da população:", media_populacao_selecionados)</pre>
<p>11.</p>
<pre>C. populacao_ue(-3:)</pre>
<p>12.</p>
<pre>E. Todos os anteriores</pre>
<p>É isso aí! No próximo tutorial vamos apresentar o objeto DataFrame (df) do Pandas, mostrando como criar um dataframe e como manipular seu conteúdo pode meio dos métodos e propriedades disponíveis.</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/como-usar-o-objeto-series-da-biblioteca-pandas-em-python/">Como usar o objeto Series da biblioteca Pandas em Python</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-python/como-usar-o-objeto-series-da-biblioteca-pandas-em-python/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Como gerar números primos em Python em um intervalo especificado</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-python/como-gerar-numeros-primos-em-python-em-um-intervalo-especificado/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-python/como-gerar-numeros-primos-em-python-em-um-intervalo-especificado/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Mon, 14 Aug 2023 11:49:39 +0000</pubDate>
				<category><![CDATA[Programação em Python]]></category>
		<category><![CDATA[Algoritmos]]></category>
		<category><![CDATA[Matemática]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19616</guid>

					<description><![CDATA[<p>Gerar números primos em Python em um intervalo especificado Exercício: Escreva um programa em Python que retorne uma lista de números primos compreendidos em um intervalo fornecido pelo usuário (incluindo os extremos). Use funções para tal. Por exemplo, ao executar o script se o usuário solicitar a lista de primos entre 7 e 50, o programa deve retornar um resultado como segue: Entre com o menor valor: 7 Entre com o maior valor: 50 Os números primos no intervalo de 7 a 50 são: 7 11 13 17 19 23 29 31 37 41 43 47 Vejamos o código que permite gerar números primos em Python. Código # Como gerar números primos em um intervalo numérico # Função para verificar os números primos def primo(n): if n &#60; 2: return False for i in range(2, int(n/2)+1): if n % i == 0: return False return True if __name__=='__main__': # Usuário escolhe o intervalo inf = int(input('Entre com o menor valor: ')) sup = int(input('Entre com o maior valor: ')) print('Os primos no intervalo de {} a {} são:'.format(inf, sup)) for i in range(inf, sup + 1): if primo(i): print(i, end=' ') Funcionamento do script Vou dividir a explicação em duas [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/como-gerar-numeros-primos-em-python-em-um-intervalo-especificado/">Como gerar números primos em Python em um intervalo especificado</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Gerar números primos em Python em um intervalo especificado</h2>
<p><em>Exercício: Escreva um programa em Python que retorne uma lista de números primos compreendidos em um intervalo fornecido pelo usuário (incluindo os extremos). Use funções para tal.</em></p>
<p>Por exemplo, ao executar o script se o usuário solicitar a lista de primos entre 7 e 50, o programa deve retornar um resultado como segue:</p>
<pre><span style="color: #000000; font-size: 14pt;">Entre com o menor valor: </span>
<span style="color: #000000; font-size: 14pt;">7</span>
<span style="color: #000000; font-size: 14pt;">Entre com o maior valor: </span>
<span style="color: #000000; font-size: 14pt;">50</span>
<span style="color: #000000; font-size: 14pt;">Os números primos no intervalo de 7 a 50 são:</span>
<span style="color: #000000; font-size: 14pt;">7 11 13 17 19 23 29 31 37 41 43 47 </span></pre>
<p>Vejamos o código que permite gerar números primos em Python.</p>
<h3>Código</h3>
<pre><span style="color: #339966;"><strong># Como gerar números primos em um intervalo numérico</strong></span>
<span style="color: #339966;"><strong># Função para verificar os números primos</strong></span>
<strong>def primo(n):</strong>
<strong>    if n &lt; 2:</strong>
<strong>        return False</strong>
<strong>    for i in range(2, int(n/2)+1):</strong>
<strong>        if n % i == 0:</strong>
<strong>            return False</strong>
<strong>    return True

</strong><strong>if __name__=='__main__':</strong>
<span style="color: #339966;"><strong>    # Usuário escolhe o intervalo</strong></span>
<strong>    inf = int(input('Entre com o menor valor: '))</strong>
<strong>    sup = int(input('Entre com o maior valor: '))

</strong><strong>    print('Os primos no intervalo de {} a {} são:'.format(inf, sup))

</strong><strong>    for i in range(inf, sup + 1):</strong>
<strong>        if primo(i):</strong>
<strong>            print(i, end=' ')</strong></pre>
<h3>Funcionamento do script</h3>
<p>Vou dividir a explicação em duas partes: a função primo e o bloco principal do programa.</p>
<h4>Função primo(n)</h4>
<p>A função <em><strong>primo(n)</strong></em> é definida para verificar se um número n é primo ou não. Ela funciona da seguinte maneira:</p>
<ol>
<li>Verifica se um valor n passado como parâmetro é menor que 2. Se for, retorna False, pois números menores que 2 não são primos.</li>
<li>Se n não for menor do que 2, a função inicia um loop que percorre os valores de i de 2 até n/2 + 1 (metade +1 do valor informado).</li>
<li>Para cada valor de i, verifica se n é divisível por i (ou seja, se n % i == 0). Se essa condição for verdadeira, significa que n não é primo, pois possui um divisor além de 1 e ele mesmo. Portanto, a função retorna False.</li>
<li>Caso nenhum valor de i resulte em uma divisão exata de n, a função retorna True, indicando que n é um número primo.</li>
</ol>
<h4>Bloco if __name__==&#8217;__main__&#8217;:</h4>
<p>No bloco principal, o programa realiza as seguintes ações:</p>
<ol>
<li>Solicita que o usuário insira o valor mínimo (inf) e o valor máximo (sup) do intervalo a gerar.</li>
<li>Exibe uma mensagem informando que os números primos no intervalo de inf a sup serão exibidos na sequência.</li>
<li>Usando um laço for, percorre todos os valores de i no intervalo de inf a sup + 1.</li>
<li>Para cada valor de i, chama a função primo(i) para verificar se i é um número primo.</li>
<li>Se i for primo (ou seja, se a função primo(i) retornar True), o valor de i é impresso na mesma linha, seguido de um espaço. Isso ocorre para todos os números primos encontrados no intervalo.</li>
</ol>
<p>Portanto, o programa vai iterar por todos os números no intervalo especificado pelo usuário, verificar se cada número é primo usando a função primo(n), e imprimir os números primos encontrados.</p>
<p>Veja que essa implementação é funcional, porém não é a mais eficiente em termos de tempo de execução para encontrar números primos, especialmente para intervalos maiores, pois realiza uma divisão para cada número no intervalo.</p>
<p>Existem algoritmos mais eficientes para geração de números primos, como o <a href="https://pt.wikipedia.org/wiki/Crivo_de_Eratóstenes" target="_blank" rel="noopener">Crivo de Eratóstenes</a> .</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/como-gerar-numeros-primos-em-python-em-um-intervalo-especificado/">Como gerar números primos em Python em um intervalo especificado</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-python/como-gerar-numeros-primos-em-python-em-um-intervalo-especificado/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
