quinta-feira, 4 de fevereiro de 2021

O que é Machine Learning?

Arthur Samuel, um pioneiro no campo da inteligência artificial e jogos de computador, cunhou o termo “Aprendizado de Máquina” . Ele definiu o aprendizado de máquina como - “Campo de estudo que dá aos computadores a capacidade de aprender sem serem programados explicitamente”.

De uma maneira muito leiga, o Aprendizado de Máquina (AM) pode ser explicado como automatizando e melhorando o processo de aprendizagem de computadores com base em suas experiências sem serem realmente programados, ou seja, sem qualquer assistência humana. O processo começa alimentando dados de boa qualidade e, em seguida, treinando nossas máquinas (computadores), construindo modelos de aprendizado de máquina usando os dados e diferentes algoritmos. A escolha dos algoritmos depende de que tipo de dados temos e que tipo de tarefa estamos tentando automatizar.

Exemplo: Treinamento de alunos durante o exame.

Enquanto se preparam para os exames, os alunos não estudam o assunto, mas tentam aprendê-lo com total compreensão. Antes do exame, eles alimentam sua máquina (cérebro) com uma boa quantidade de dados de alta qualidade (perguntas e respostas de diferentes livros ou anotações do professor ou vídeo-aulas online). Na verdade, eles estão treinando seu cérebro tanto com entradas quanto com saídas, isto é, que tipo de abordagem ou lógica eles têm para resolver um tipo diferente de questões. Cada vez que resolvem os papéis dos testes práticos e encontram o desempenho (precisão / pontuação), comparando as respostas com a chave dada, Gradualmente, o desempenho vai aumentando, ganhando mais confiança com a abordagem adotada. É assim que os modelos são construídos,treinar a máquina com dados (entradas e saídas são fornecidas ao modelo) e, quando chegar a hora, teste os dados (apenas com entrada) e obtenha as pontuações do modelo comparando sua resposta com a saída real que não foi alimentada durante o treinamento. Os pesquisadores estão trabalhando com esforços assíduos para melhorar algoritmos e técnicas para que esses modelos tenham um desempenho ainda melhor.

Diferença básica em ML e programação tradicional?

  • Programação tradicional: Nós alimentamos DADOS (entrada) + PROGRAMA (lógica), rodamos na máquina e obtemos a saída.
  • Aprendizado de Máquina: Alimentamos DADOS (Entrada) + Saída, executamos na máquina durante o treinamento e a máquina cria seu próprio programa (lógica), que pode ser avaliado durante o teste.

O que exatamente aprender significa para um computador?

Diz-se que um computador está aprendendo com as Experiências com relação a alguma classe de Tarefas , se seu desempenho em uma dada Tarefa melhora com a Experiência.

A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.

Exemplo: jogar damas.

E = a experiência de jogar muitos jogos de damas.

T = a tarefa de jogar damas.

P = a probabilidade de o programa vencer o próximo jogo.

Em geral, qualquer problema de aprendizado de máquina pode ser atribuído a uma das duas classificações gerais:
Aprendizagem supervisionada e Aprendizagem não supervisionada.

Como as coisas funcionam na realidade:

  • Falando em compras online, existem milhões de usuários com uma gama ilimitada de interesses em relação a marcas, cores, faixa de preço e muito mais. Ao fazer compras online, os compradores tendem a pesquisar vários produtos. Agora, pesquisar um produto com frequência fará com que o comprador, as páginas da web, o mecanismo de pesquisa ou a loja online do comprador comece a recomendar ou mostrar ofertas para aquele produto específico. Não há ninguém sentado lá para codificar tal tarefa para cada usuário, toda essa tarefa é totalmente automática. Aqui, o ML desempenha seu papel. Pesquisadores, cientistas de dados, aprendizes de máquina constroem modelos na máquina usando boa qualidade e uma grande quantidade de dados e agora sua máquina está executando e até mesmo melhorando automaticamente com mais e mais experiência e tempo.
    Tradicionalmente, a propaganda era feita apenas em jornais, revistas e rádio, mas agora a tecnologia nos tornou inteligentes o suficiente para fazer propaganda direcionada (sistema de anúncios online), que é um método mais eficiente para atingir o público mais receptivo.
  • Mesmo na área da saúde, o ML está fazendo um trabalho fabuloso. Pesquisadores e cientistas prepararam modelos para treinar máquinas para detectar câncer apenas olhando para imagens de células deslizantes. Para os humanos realizarem essa tarefa, demoraria muito tempo. Mas agora, sem mais demora, as máquinas predizem as chances de ter ou não câncer com alguma precisão e os médicos só precisam dar uma chamada de garantia, é isso. A resposta para - como isso é possível é muito simples - tudo o que é necessário, é, máquina de alta computação, uma grande quantidade de dados de imagem de boa qualidade, modelo de ML com bons algoritmos para obter resultados de última geração.
    Os médicos estão usando ML até mesmo para diagnosticar pacientes com base em diferentes parâmetros em consideração.
  • Todos vocês podem ter usado classificações IMDB, Google Fotos, onde reconhece rostos, Google Lens, onde o modelo de reconhecimento de imagem de texto ML pode extrair texto das imagens que você alimenta, Gmail que usa categorias de e-mail como social, promoção, atualizações ou fórum classificação de texto, que faz parte do ML.

Como funciona o ML?

  • Coletar dados anteriores em qualquer forma adequada para processamento. Quanto melhor a qualidade dos dados, mais adequados serão para modelagem
  • Processamento de dados - às vezes, os dados coletados estão na forma bruta e precisam ser pré-processados.
    Exemplo: Algumas tuplas podem ter valores ausentes para determinados atributos, e, neste caso, deve ser preenchido com valores adequados para realizar o aprendizado de máquina ou qualquer forma de mineração de dados.
    Valores ausentes para atributos numéricos, como o preço da casa, podem ser substituídos pelo valor médio do atributo, enquanto valores ausentes para atributos categóricos podem ser substituídos pelo atributo com o modo mais alto. Isso invariavelmente depende dos tipos de filtros que usamos. Se os dados estiverem na forma de texto ou imagens, será necessário convertê-los para a forma numérica, seja uma lista ou array ou matriz. Simplesmente, os dados devem ser relevantes e consistentes. Deve ser convertido em um formato compreensível pela máquina
  • Divida os dados de entrada em conjuntos de treinamento, validação cruzada e teste. A proporção entre os respectivos conjuntos deve ser 6: 2: 2
  • Construir modelos com algoritmos e técnicas adequados no conjunto de treinamento.
  • Testar nosso modelo conceituado com dados que não foram fornecidos ao modelo no momento do treinamento e avaliar seu desempenho usando métricas como pontuação F1, precisão e recall.

Pré-requisitos para aprender ML

  • Álgebra Linear
  • Estatística e Probabilidade
  • Cálculo
  • Teoria dos grafos
  • Habilidades de programação - linguagem como Python, R, MATLAB, C ++ ou Octave

Artigo escrito por Mohit Gupta_OMG :) e traduzido por Acervo Lima de ML | What is Machine Learning?.

quarta-feira, 27 de janeiro de 2021

Como instalar o Python pandas no Windows e Linux?

pandas é um pacote escrito para análise e manipulação de dados. O pandas oferece várias operações e estruturas de dados para realizar manipulações de dados numéricos e séries temporais. pandas é uma biblioteca de código aberto construída sobre a biblioteca Numpy. A biblioteca pandas é conhecida por sua alta produtividade e alto desempenho. O pandas é popular porque torna a importação e análise de dados muito mais fácil.

Os programas do pandas podem ser escritos em qualquer editor de texto simples como notepad, notepad++ ou qualquer coisa desse tipo e salvos com uma extensão .py. Para começar, escrevendo códigos pandas e realizando várias operações interessantes e úteis, é necessário ter o Python instalado em seu sistema. Isso pode ser feito seguindo as instruções passo a passo fornecidas abaixo:

E se o Python já existir? Vamos checar

Para verificar se o seu dispositivo está pré-instalado com Python ou não, basta ir para a linha de comando (pesquise cmd na caixa de diálogo Executar ( + R ).
Agora execute o seguinte comando:

python --version

Se o Python já estiver instalado, ele irá gerar uma mensagem com a versão do Python disponível.
python-version-check-windows

Baixar e instalar o pandas

O pandas pode ser instalado de várias maneiras no Windows e no Linux. Várias maneiras diferentes estão listadas abaixo:

janelas

O pandas pode ser instalado no Windows de duas maneiras:

  • Usando pip
  • Usando Anaconda

Instale pandas usando pip

PIP é um sistema de gerenciamento de pacotes usado para instalar e gerenciar pacotes / bibliotecas de software escritos em Python. Esses arquivos são armazenados em um grande “repositório on-line” denominado Python Package Index (PyPI).
O pandas pode ser instalado usando o PIP, usando o seguinte comando:

pip install pandas

PIP-Instalação-pandas-02

Instale o pandas usando o Anaconda

Anaconda é um software de código aberto que contém Jupyter, spyder, etc, que são usados ​​para grandes processamento de dados, análise de dados, computação científica pesada.

Etapas para instalar o pandas usando o Anaconda Navigator:

Etapa 1: Procure o Anaconda Navigator no menu Iniciar e abra-o.

Anaconda-Navigator-011

Passo 2: Clique na guia ambiente e, em seguida, clique no criar botão para criar um novo pandas Ambiente.

Anaconda-Instalação-pandas-01

Etapa 3:Dê um nome ao seu ambiente, por exemplo, pandas, e depois escolha uma versão do python para rodar no ambiente. Agora clique no botão Criar para criar o Ambiente pandas.

Anaconda-Instalação-pandas-13

Passo 4: Agora clique no Ambiente pandas criado para ativá-lo.

Anaconda-Instalação-pandas-14

Etapa 5: na lista acima de nomes de pacotes, selecione Todos para filtrar todos os pacotes.

Anaconda-Instalação-pandas-15

Etapa 6: Agora na barra de pesquisa, procure por 'pandas'. Selecione o pacote pandas para instalação.

Anaconda-Instalação-pandas-16

Passo 7: Agora clique com o botão direito na caixa de seleção fornecida antes do nome do pacote e vá para 'Marcar para instalação de versão específica'. Agora selecione a versão que deseja instalar.

Anaconda-Instalação-pandas-17

Etapa 8: Clique no botão Aplicar para instalar o Pacote pandas.

Anaconda-Instalação-pandas-18

Etapa 9: Conclua o processo de instalação clicando no botão Aplicar.

Anaconda-Instalação-pandas-19

Passo 10: Agora para abrir o Ambiente pandas, clique na Seta Verde à direita do nome do pacote e selecione o Console com o qual deseja iniciar a programação do pandas.

Anaconda-Instalação-pandas-19

Janela do terminal do pandas:

Anaconda-Installation-pandas-10

Linux

Para instalar o pandas no Linux, basta digitar o seguinte comando na janela do terminal e pressionar Enter. O Linux baixará e instalará automaticamente os pacotes e arquivos necessários para executar o ambiente pandas em Python:

pip3 install pandas 

pandas-Installation-Linux

Artigo escrito por Abhinav96 e traduzido por Acervo Lima de How to Install Python pandas on Windows and Linux?.

Introdução ao pandas em Python

pandas é uma biblioteca de código aberto feita principalmente para trabalhar com dados relacionais ou rotulados de forma fácil e intuitiva. Ele fornece várias estruturas de dados e operações para manipular dados numéricos e séries temporais. Esta biblioteca é construída no topo da biblioteca NumPy. pandas é rápido e tem alto desempenho e produtividade para os usuários.

História

O pandas foi inicialmente desenvolvido por Wes McKinney em 2008, enquanto ele trabalhava na AQR Capital Management. Ele convenceu a AQR a permitir que ele abrisse o código-fonte dos pandas. Outro funcionário da AQR, Chang She, ingressou como o segundo maior colaborador da biblioteca em 2012. Com o passar do tempo, muitas versões de pandas foram lançadas. A última versão do pandas é 1.0.1.

Vantagens do pandas

  • Rápido e eficiente para manipular e analisar dados.
  • Dados de diferentes objetos de arquivo podem ser carregados.
  • Fácil manuseio de dados ausentes (representados como NaN) em ponto flutuante, bem como dados de ponto não flutuante.
  • Mutabilidade de tamanho: colunas podem ser inseridas e excluídas do DataFrame e objetos de dimensão superior.
  • Fusão e junção de conjuntos de dados.
  • Remodelagem flexível e dinamização de conjuntos de dados.
  • Fornece funcionalidade de série temporal.
  • Poderoso agrupamento por funcionalidade para realizar operações dividir-aplicar-combinar em conjuntos de dados.

Começando com a biblioteca pandas

Depois que a biblioteca pandas tiver sido instalada no sistema, você precisará importar a biblioteca. Este módulo é geralmente importado como o exemplo abaixo mostrar.

import pandas as pd

Aqui, o pd é conhecido como um alias para o pandas. No entanto, não é necessário importar a biblioteca usando alias, apenas ajuda a escrever menos quantidade de código toda vez que um método ou propriedade é chamado.

O pandas geralmente fornece duas estruturas de dados para manipulação de dados, são elas:

  • Series
  • DataFrame

Series

pandas Series é um array rotulado unidimensional capaz de conter dados de qualquer tipo (inteiro, string, float, objetos python, etc.). Os rótulos dos eixos são chamados coletivamente de índice. O pandas Series nada mais é do que uma coluna em uma planilha do Excel. Os rótulos não precisam ser exclusivos, mas devem ser do tipo hashable. O objeto é compatível com indexação inteira e baseada em rótulo e fornece uma série de métodos para executar operações envolvendo o índice.

pandas series

Observação: para obter mais informações, consulte Python | pandas Series

Criando uma Series do pandas

No mundo real, uma série pandas será criada carregando os conjuntos de dados do armazenamento existente, o armazenamento pode ser banco de dados SQL, arquivo CSV e arquivo Excel. A série pandas pode ser criada a partir de listas, dicionário e de um valor escalar, etc.

Exemplo:

import pandas as pd  
import numpy as np 
  
  
# Cria uma series vázia  
ser = pd.Series()

print(ser)

# Uma matriz simples
data = np.array(['g', 'e', 'e', 'k', 's'])

ser = pd.Series(data)
print(ser)

Saída:

Series([], dtype: float64)
0    g
1    e
2    e
3    k
4    s
dtype: object

DataFrame

O DataFrame pandas é uma estrutura de dados tabular bidimensional mutável em tamanho, potencialmente heterogênea, com eixos rotulados (linhas e colunas). Um dataframe é uma estrutura de dados bidimensional, ou seja, os dados são alinhados de forma tabular em linhas e colunas. O DataFrame pandas consiste em três componentes principais: dados, linhas e colunas.

pandas dataframe

Observação: para obter mais informações, consulte Criando dataframes com pandas.

Criando um dataframe pandas

No mundo real, um DataFrame pandas será criado carregando os conjuntos de dados do armazenamento existente, o armazenamento pode ser banco de dados SQL, arquivo CSV e arquivo Excel. O DataFrame pandas pode ser criado a partir de listas, dicionário e de uma lista de dicionários, etc.

Exemplo:

import pandas as pd

# Chamando o construtor do dataframe
df = pd.DataFrame()
print(df)

# lista de strings
lst = ['Acervo', 'Lima', 'o', 'melhor', 'em', 'programação'] 
	
# Chamando o construtor do dataframe com uma lista
df = pd.DataFrame(lst)
print(df) 

Saída:

             0
0       Acervo
1         Lima
2            o
3       melhor
4           em
5  programação

Observação: para obter mais informações, consulte Criando dataframes com pandas.

Por que o pandas é usado para ciência de dados

O pandas é geralmente usado para ciência de dados, mas você já se perguntou por quê? Isso ocorre porque o pandas é usado em conjunto com outras bibliotecas que são usadas para ciência de dados. É construído no topo da biblioteca NumPy, o que significa que muitas estruturas do NumPy são usadas ou replicadas no pandas. Os dados produzidos pelo pandas são frequentemente usados como entrada para funções de plotagem do Matplotlib, análise estatística no SciPy, algoritmo de aprendizado de máquina no Scikit-learn.

O programa pandas pode ser executado a partir de qualquer editor de texto, mas é recomendado usar o Jupyter Notebook para isso, pois o Jupyter tem a capacidade de executar o código em uma célula específica em vez de executar o arquivo inteiro. O Jupyter também oferece uma maneira fácil de visualizar dados e gráficos do pandas.

Observação: para obter mais informações sobre o Jupyter Notebook, consulte Como usar o Jupyter Notebook - um guia definitivo.

Artigo escripot por nikhilaggarwal3 e traduzido por Acervo Lima de Introduction to pandas in Python. Alguma alterações foram feitas.

Como usar o Jupyter Notebook - Um guia definitivo

O Jupyter Notebook é um aplicativo da web de código aberto que permite criar e compartilhar documentos que contêm código ativo, equações, visualizações e texto narrativo. Os usos incluem limpeza e transformação de dados, simulação numérica, modelagem estatística, visualização de dados, aprendizado de máquina e muito mais. Jupyter tem suporte para mais de 40 linguagens de programação diferentes e Python é uma delas. Python é um requisito (Python 3.3 ou superior, ou Python 2.7) para instalar o Jupyter Notebook.

Tabela de conteúdo

Instalação

Instale Python e Jupyter usando a distribuição Anaconda, que inclui Python, o Jupyter Notebook e outros pacotes comumente usados ​​para computação científica e ciência de dados. Você pode baixar a versão mais recente do Python3 do Anaconda aqui.

Agora, instale a versão baixada do Anaconda.

Instalando o Jupyter Notebook usando pip:

python3 -m pip install --upgrade pip
python3 -m pip install jupyter

Iniciando o Jupyter Notebook

Para iniciar o notebook jupyter, digite o comando abaixo no terminal.

jupyter notebook

Isso imprimirá algumas informações sobre o servidor do notebook em seu terminal, incluindo o URL do aplicativo da web (por padrão, http://localhost:8888) e, em seguida, abrirá seu navegador da web padrão para este URL.

jupyter-notebook-python

Depois que o notebook for aberto, você verá o Painel do notebook, que mostrará uma lista dos blocos de notas, arquivos e subdiretórios no diretório onde o servidor do notebook foi iniciado. Na maioria das vezes, você desejará iniciar um servidor de notebook no diretório de nível mais alto que contém notebooks. Frequentemente, esse será seu diretório inicial.

jupyter-notebook-dashboard

Criando um Notebook

Para criar um novo notebook, clique no novo botão no canto superior direito. Clique nele para abrir uma lista suspensa e, se você clicar em Python3, um novo bloco de notas será aberto.

jupyter-notebook-new-file

A página da web deve ser semelhante a esta:

caderno-jupyter

Hello World no Jupyter Notebook

Depois de instalar e criar com sucesso um notebook no Jupyter Notebook, vamos ver como escrever código nele. O bloco de notas Jupyter fornece uma célula para escrever código nele. O tipo de código depende do tipo de bloco de notas que você criou. Por exemplo, se você criou um bloco de notas Python3, pode escrever o código Python3 na célula.

Agora, vamos adicionar o seguinte código:

print("Hello World") 

Para executar uma célula, clique no botão Executar ou pressione Shift + enter após selecionar a célula que deseja executar. Depois de escrever o código acima no bloco de notas jupyter, a saída foi:

jupyter-notebook-hello-world

Nota: Quando uma célula executa o rótulo à esquerda, isto é, ln[]muda para ln[1]. Se a célula ainda estiver em execução, o rótulo permanece ln[*].

Células no Notebook Jupyter

As células podem ser consideradas o corpo do Jupyter. Na captura de tela acima, a caixa com o contorno verde é uma célula. Existem 3 tipos de células:

  • Código
  • Markup
  • NBConverter bruto

Código

É aqui que o código é digitado e, quando executado, o código exibe a saída abaixo da célula. O tipo de código depende do tipo de bloco de notas que você criou. Por exemplo, se o bloco de notas do Python3 for criado, o código do Python3 pode ser adicionado. Considere o exemplo abaixo, onde um código simples da série Fibonacci é criado e esse código também recebe a entrada do usuário.

Exemplo:

jypter-code-cell

A barra tex no código acima é solicitada a receber a entrada do usuário. A saída do código acima é a seguinte:

Resultado:

jupyter-code-cell

Markdown

Markdown é uma linguagem de marcação popular que é o superconjunto do HTML. O Jupyter Notebook também suporta remarcação. O tipo de célula pode ser alterado para redução usando o menu de células.

jupyter-notebook-cell-menu

Adicionando cabeçalhos:

O título pode ser adicionado prefixando qualquer linha com um ou vários '#'seguido de espaço.

Exemplo:

jupyter-notebook-headers-1

Resultado:

jupyter-notebook-headers-2-

Adicionando Lits:

Adicionar listas é realmente simples no Jupyter Notebook. A lista pode ser adicionada usando o sinal '*'. E a lista aninhada pode ser criada usando recuo.

Exemplo:

jupyter-notebook-lists-1

Resultado:

jupyter-notebook-lists-2

Adicionando Equações de Látex:

Expressões de látex podem ser adicionadas circundando o código de látex '$' e para escrever as expressões no meio, circundando o código de látex por '$$'.

Exemplo:

jupyter-notebook-latex-1

Resultado:

jupyter-notebook-latex-2

Adicionando Tabela:

Uma tabela pode ser adicionada escrevendo o conteúdo no seguinte formato.

jupyter-notebook-table-1

Resultado:

jupyter-notebook-table-2

Nota: O texto pode ser colocado em negrito ou itálico, colocando o texto entre '**' e '*' respectivamente.

NBConverter bruto

As células brutas são fornecidas para gravar a saída diretamente. Esta célula não é avaliada pelo notebook Jupyter. Depois de passar pelas nbconvert células brutas chega à pasta de destino sem nenhuma modificação. Por exemplo, pode-se escrever Python completo em uma célula bruta que só pode ser renderizada por Python após a conversão por nbconvert.

Kernel

Um kernel roda atrás de cada notebook. Sempre que uma célula é executada, o código dentro da célula é executado dentro do kernel e a saída retorna para a célula a ser exibida. O kernel continua existindo para o documento como um todo e não para células individuais.

Por exemplo, se um módulo for importado em uma célula, esse módulo estará disponível para todo o documento. Veja o exemplo abaixo para melhor compreensão.

Exemplo:

jupyter-notebook-for-kernel

Nota: a ordem de execução de cada célula é indicada à esquerda da célula. No exemplo acima, a célula com In[1] é executada primeiro e, em seguida, a célula com In[2] é executada.

Opções para kernels:

O Jupyter Notebook oferece várias opções de kernels. Isso pode ser útil se você quiser redefinir as coisas. As opções são:

  • Reiniciar: Isso irá reiniciar os kernels, ou seja, limpar todas as variáveis ​​que foram definidas, limpar os módulos que foram importados, etc.
  • Reiniciar e limpar a saída: isso fará o mesmo que acima, mas também limpará todas as saídas que foram exibidas abaixo da célula.
  • Reiniciar e executar tudo: Este também é o mesmo que acima, mas também executará todas as células na ordem de cima para baixo.
  • Interromper: Esta opção interromperá a execução do kernel. Pode ser útil no caso em que os programas continuam em execução ou o kernel está preso em alguma computação.

Nomeando o caderno

Quando o bloco de notas é criado, o Jupyter Notebook nomeia o bloco de notas como Sem título como padrão. No entanto, o bloco de notas pode ser renomeado. Para renomear o caderno basta clicar na palavra Sem título. Isso abrirá uma caixa de diálogo intitulada Renomear Notebook. Digite o nome válido para o seu bloco de notas na barra de texto e clique em ok.

jupyter-notebook-rename

Extensões de Notebook

Novas funcionalidades podem ser adicionadas ao Jupyter por meio de extensões. As extensões são módulos javascript. Você pode até escrever sua própria extensão que pode acessar o DOM da página e a API Javascript do Jupyter. O Jupyter oferece suporte a quatro tipos de extensões.

  • Núcleo
  • Kernel IPyhton
  • Caderno
  • Servidor de notebook

Instalando extensões

A maioria das extensões pode ser instalada usando a ferramenta pip do Python. Se uma extensão não puder ser instalada usando pip, instale a extensão usando o comando abaixo.

jupyter nbextension install extension_name

O procedimento acima apenas instala a extensão, mas não a habilita. Para habilitá-lo, digite o comando abaixo no terminal.

jupyter nbextension enable extension_name

Artigo escrito por nikhilaggarwal3 e traduzido por Acervo Lima de How To Use Jupyter Notebook – An Ultimate Guide.

Python - Séries pandas

Série pandas é um array rotulado unidimensional capaz de conter dados de qualquer tipo (inteiro, string, float, objetos python, etc.). Os rótulos dos eixos são chamados coletivamente de índice. Uma série pandas nada mais é do que uma coluna em uma planilha do Excel.

Os rótulos não precisam ser exclusivos, mas devem ser do tipo hashable. O objeto é compatível com indexação inteira e baseada em rótulo e fornece uma série de métodos para executar operações envolvendo o índice.

series pandas

Neste artigo, estamos usando o arquivo nba.csv.

Teremos uma breve visão sobre todas essas operações básicas que podem ser realizadas no Pandas série:

  • Criando uma série
  • Elemento de acesso da série
  • Indexação e seleção de dados em série
  • Operação binária na série
  • Operação de conversão em série

Criando uma série

No mundo real, uma série Pandas será criada carregando os conjuntos de dados do armazenamento existente, o armazenamento pode ser banco de dados SQL, arquivo CSV e arquivo Excel. As séries Pandas podem ser criadas a partir de listas, dicionário e de um valor escalar, etc. As séries podem ser criadas de diferentes maneiras, aqui estão algumas maneiras pelas quais criamos uma série:

Criando uma série de array: Para criar uma série de array, temos que importar o módulo numpy e usar a função array().

# importando pandas com o alias pd
import pandas as pd
 
# importando numpy com o alias np
import numpy as np
 
# uma matriz simples
data = np.array(['A', 'c', 'e', 'r','v', 'o'])

ser = pd.Series(data)
print(ser)

Saída:

0    A
1    c
2    e
3    r
4    v
5    o
dtype: object

Criação de uma série a partir de uma listas:

Para criar uma série a partir de uma lista, temos que primeiro criar uma lista e depois podemos criar uma série da lista.

import pandas as pd
 
# uma lista simples
lista = ['A', 'c', 'e', 'r','v', 'o']
  
# criando uma série a partir de uma lista
ser = pd.Series(lista)
print(ser)

Saída:

0    A
1    c
2    e
3    r
4    v
5    o
dtype: object

Acessando elementos de uma série

Existem duas maneiras pelas quais podemos acessar o elemento da série, são elas:

  • Acessando Elemento da Série com Posição.
  • Acessando elemento usando rótulo (índice)

Acessando elemento de uma série com a posição: Para acessar o elemento da série refere-se ao número do índice. Use o operador de índice [] para acessar um elemento em uma série. O índice deve ser um número inteiro. Para acessar vários elementos de uma série, usamos a operação Slice.

# Código para acessar os 5
# primeiros elementos de uma série do pandas 
import pandas as pd
import numpy as np
 
# criando uma matriz simples
data = np.array(['A', 'c', 'e', 'r', 'v', 'o', ' ', 'L', 'i', 'm', 'a'])
ser = pd.Series(data)

# Mostra os cinco primeiros elementos da série
print(ser[:5])

Saída:

0    A
1    c
2    e
3    r
4    v
dtype: object

Acessando elemento usando rótulo (índice): Para acessar um elemento da série, temos que definir valores por rótulo de índice. Uma série é como um dicionário de tamanho fixo em que você pode obter e definir valores por rótulo de índice.

import pandas as pd
import numpy as np
 
# Criando matrizes simples
data = np.array(['A', 'c', 'e', 'r', 'v', 'o', ' ', 'L', 'i', 'm', 'a'])
ser = pd.Series(data, index=[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])

# acessando elemento pelo índice
print(ser[17])

Saída:

L

Indexação e seleção de dados em série

Indexar em pandas significa simplesmente selecionar dados específicos de uma série. A indexação pode significar selecionar todos os dados, alguns dos dados de colunas específicas. A indexação também pode ser conhecida como Seleção de subconjunto.

Indexando uma série usando o operador de indexação []: O operador de indexação é usado para referir-se aos colchetes após um objeto. Os indexadores .loc e .iloc também usam o operador de indexação para fazer seleções. Neste operador de indexação para se referir a df[].

 
import pandas as pd

# Criando um dataframe
df = pd.read_csv("nba.csv")

ser = pd.Series(df['Name'])
data = ser.head(10)
data

Saída:

0    Avery Bradley
1      Jae Crowder
2     John Holland
3      R.J. Hunter
4    Jonas Jerebko
5     Amir Johnson
6    Jordan Mickey
7     Kelly Olynyk
8     Terry Rozier
9     Marcus Smart
Name: Name, dtype: object

Agora acessamos o elemento da série usando o operador de índice [].

# Usando o operador de índice
data[3:6] 

Saída:

3      R.J. Hunter
4    Jonas Jerebko
5     Amir Johnson
Name: Name, dtype: object

Indexando uma série usando .loc[]: Esta função seleciona dados referindo-se ao índice explícito. O indexador df.loc seleciona dados de uma maneira diferente do que apenas o operador de indexação. Ele pode selecionar subconjuntos de dados.

import pandas as pd  
     
# Criando o dataframe
df = pd.read_csv("nba.csv")

ser = pd.Series(df['Name'])
data = ser.head(10)
data 

Saída:

0    Avery Bradley
1      Jae Crowder
2     John Holland
3      R.J. Hunter
4    Jonas Jerebko
5     Amir Johnson
6    Jordan Mickey
7     Kelly Olynyk
8     Terry Rozier
9     Marcus Smart
Name: Name, dtype: object

Agora acessamos o elemento da série usando a função .loc[].

# usando a função .loc[]
data.loc[3:6]

Saída:

3      R.J. Hunter
4    Jonas Jerebko
5     Amir Johnson
6    Jordan Mickey
Name: Name, dtype: object

Indexando uma série usando .iloc[]: Esta função nos permite recuperar dados por posição. Para fazer isso, precisamos especificar as posições dos dados que queremos. O indexador df.iloc é muito semelhante ao df.loc, mas usa apenas localizações de inteiros para fazer suas seleções.

import pandas as pd  
     
# Criando um dataframe
df = pd.read_csv("nba.csv")

ser = pd.Series(df['Name'])
data = ser.head(10)
data

Saída:

0    Avery Bradley
1      Jae Crowder
2     John Holland
3      R.J. Hunter
4    Jonas Jerebko
5     Amir Johnson
6    Jordan Mickey
7     Kelly Olynyk
8     Terry Rozier
9     Marcus Smart
Name: Name, dtype: object

Agora acessamos o elemento de Series usando a função .iloc[].

# usando a função .iloc[]
data.iloc[3:6]

Saída:

3      R.J. Hunter
4    Jonas Jerebko
5     Amir Johnson
Name: Name, dtype: object

Operação binária na série

Podemos realizar operações binárias em séries como adição, subtração e muitas outras operações. Para realizar a operação binária em série, temos que usar algumas funções como .add(), .sub() etc.

Código #1:

 
import pandas as pd

# Criando uma série
data = pd.Series([5, 2, 3,7], index=['a', 'b', 'c', 'd'])

# Criando outra série
data1 = pd.Series([1, 6, 4, 9], index=['a', 'b', 'd', 'e'])

print(data, "\n\n", data1)

Saída:

a    5
b    2
c    3
d    7
dtype: int64

 a    1
b    6
d    4
e    9
dtype: int64

Agora adicionamos duas séries usando a função .add().

# Adicionando duas séries usando a função .add()
data.add(data1, fill_value=0)

Saída:

a     6.0
b     8.0
c     3.0
d    11.0
e     9.0
dtype: float64

Código #2:

import pandas as pd  
 
# Criando uma série
data = pd.Series([5, 2, 3,7], index=['a', 'b', 'c', 'd'])

# Criando outra série
data1 = pd.Series([1, 6, 4, 9], index=['a', 'b', 'd', 'e'])

print(data, "\n\n", data1)

Saída:

a    5
b    2
c    3
d    7
dtype: int64

 a    1
b    6
d    4
e    9
dtype: int64

Agora subtraímos duas séries usando a função .sub().

# Subtraindo duas séries usando a função .sub()
data.sub(data1, fill_value=0)

Saída:

a    4.0
b   -4.0
c    3.0
d    3.0
e   -9.0
dtype: float64

Operação de conversão em série

Na operação de conversão, realizamos várias operações, como alterar o tipo de dados de uma série, alterar uma série para listar etc. Para realizar a operação de conversão, temos várias funções que ajudam na conversão, como .astype(), .tolist() etc.

Código #1:

# Programa Python usando astype
# para converter um tipo de dados de série
 
import pandas as pd

# Cria o dataframe a partir de um arquivo css
data = pd.read_csv("nba.csv")

# descartando colunas de valor nulo para evitar erros
data.dropna(inplace = True)

# armazenar dtype antes de converter
before = data.dtypes

# convertendo dtypes usando astype
data["Salary"]= data["Salary"].astype(int)
data["Number"]= data["Number"].astype(str)

# armazenar dtype após a conversão
after = data.dtypes

# Imprime para comparação
print("Antes da conversão\n", before, "\n")
print("Depois da conversão\n", after, "\n")

Saída:

Antes da conversão
 Name         object
Team         object
Number      float64
Position     object
Age         float64
Height       object
Weight      float64
College      object
Salary      float64
dtype: object

Depois da conversão
 Name         object
Team         object
Number       object
Position     object
Age         float64
Height       object
Weight      float64
College      object
Salary        int32
dtype: object

Código #2:

# Programa python para converter uma série pasdas numa lista

import pandas as pd  
import re 
     
# Criando um dataframe a partir de uma arquivo csv
data = pd.read_csv("nba.csv")

# removendo valores nulos para evitar erros
data.dropna(inplace = True)

# guardando dtype antes da operação
dtype_before = type(data["Salary"])

# Convertendo para lista
salary_list = data["Salary"].tolist()

# guardando dtype depois da operação
dtype_after = type(salary_list)

# imprimindo dtypes
print("Tipo de dado antes da conversão = {}\nTipode dado depois da conversão = {}"
      .format(dtype_before, dtype_after))

# monstrando lista
salary_list

Saída:

[7730337.0, 6796117.0, 1148640.0, 1170960.0, 2165160.0, 1824360.0, 3431040.0, 2569260.0, 6912869.0, 3425510.0, 1749840.0, 2616975.0, 845059.0, 1500000.0, 1335480.0, 6300000.0, 134215.0, 1500000.0, 19689000.0, 1140240.0, 947276.0, 981348.0, 947276.0, 947276.0, 11235955.0, 8000000.0, 1635476.0, 22875000.0, 845059.0, 845059.0, 1572360.0, 12650000.0, 3750000.0, 1636842.0, 4000000.0, 167406.0, 947276.0, 1000000.0, 4626960.0, 845059.0, 1074169.0, 6500000.0, 2144772.0, 525093.0, 3457800.0, 4582680.0, 947276.0, 2869440.0, 947276.0, 525093.0, 13600000.0, 10050000.0, 2500000.0, 7000000.0, 12000000.0, 6268675.0, 650000.0, 3553917.0, 245177.0, 1509360.0, 3873398.0, 13800000.0, 947276.0, 11370786.0, 2008748.0, 14260870.0, 11710456.0, 1131960.0, 845059.0, 1270964.0, 3815000.0, 15501000.0, 1100602.0, 111444.0, 5675000.0, 525093.0, 9650000.0, 18907726.0, 1100602.0, 19689000.0, 947276.0, 21468695.0, 3376000.0, 7085000.0, 3110796.0, 1159680.0, 3000000.0, 845059.0, 700000.0, 845059.0, 15592217.0, 1724250.0, 1155600.0, 3132240.0, 5103120.0, 981348.0, 947276.0, 5219169.0, 13500000.0, 2127840.0, 206192.0, 1160160.0, 981348.0, 13500000.0, 3807120.0, 1035000.0, 55722.0, 947276.0, 5500000.0, 2041080.0, 83397.0, 981348.0, 1015421.0, 1449187.0, 3398280.0, 5013559.0, 15851950.0, 947276.0, 525093.0, 12403101.0, 7700000.0, 3156600.0, 845059.0, 9500000.0, 845059.0, 2250000.0, 16407500.0, 4500000.0, 8500000.0, 947276.0, 2380440.0, 1015421.0, 13400000.0, 1391160.0, 20093064.0, 1535880.0, 1147276.0, 8193029.0, 16407501.0, 947276.0, 947276.0, 1276000.0, 19689000.0, 111196.0, 8988765.0, 14260870.0, 2100000.0, 2500000.0, 6500000.0, 2170465.0, 111444.0, 1252440.0, 2891760.0, 845059.0, 3272091.0, 16000000.0, 600000.0, 13913044.0, 2841960.0, 6270000.0, 5000000.0, 3000000.0, 4050000.0, 1007026.0, 17120106.0, 8000000.0, 4000000.0, 1358880.0, 211744.0, 1100000.0, 7000000.0, 2357760.0, 845059.0, 1007026.0, 3000000.0, 2399040.0, 947276.0, 1662360.0, 2943221.0, 8000000.0, 14700000.0, 16407500.0, 295327.0, 845059.0, 5152440.0, 2109294.0, 6600000.0, 1733040.0, 1449000.0, 4290000.0, 1100602.0, 3950313.0, 4053446.0, 2085671.0, 16407500.0, 1270964.0, 15361500.0, 845059.0, 947276.0, 5378974.0, 8193030.0, 306527.0, 6486486.0, 8229375.0, 1646400.0, 200600.0, 15756438.0, 1000000.0, 2489530.0, 3189794.0, 947276.0, 1404600.0, 5158539.0, 5000000.0, 3542500.0, 4088019.0, 9588426.0, 700902.0, 845059.0, 1201440.0, 1230840.0, 9638555.0, 9000000.0, 5464000.0, 8500000.0, 1100602.0, 3036927.0, 2850000.0, 7070730.0, 169883.0, 1164858.0, 845059.0, 10734586.0, 845059.0, 1320000.0, 15514031.0, 1015421.0, 10595507.0, 55722.0, 3382023.0, 19689000.0, 1142880.0, 947276.0, 5250000.0, 10000000.0, 16407500.0, 200600.0, 250750.0, 3578947.0, 525093.0, 1499187.0, 2000000.0, 1304520.0, 2854940.0, 12000000.0, 1000000.0, 5746479.0, 18671659.0, 947276.0, 525093.0, 3333333.0, 8000000.0, 947276.0, 189455.0, 947276.0, 525093.0, 6110034.0, 2612520.0, 6331404.0, 3034356.0, 5675000.0, 2139000.0, 12000000.0, 7000000.0, 4204200.0, 22192730.0, 10151612.0, 2854940.0, 261894.0, 845059.0, 5543725.0, 525093.0, 20000000.0, 981348.0, 2481720.0, 947276.0, 4171680.0, 845059.0, 1294440.0, 2380593.0, 5192520.0, 2505720.0, 4300000.0, 11250000.0, 5000000.0, 4000000.0, 5694674.0, 4375000.0, 561716.0, 3300000.0, 273038.0, 8000000.0, 1920240.0, 4662960.0, 2170465.0, 1100602.0, 200600.0, 15851950.0, 2814000.0, 3000000.0, 3533333.0, 10449438.0, 11235955.0, 1584480.0, 947276.0, 4345000.0, 258489.0, 1474440.0, 1282080.0, 2148360.0, 2056920.0, 1938840.0, 947276.0, 5703600.0, 5758680.0, 2279040.0, 3750000.0, 20158622.0, 3135000.0, 1140240.0, 16407500.0, 1463040.0, 222888.0, 3344000.0, 2021520.0, 1210800.0, 4500000.0, 5138430.0, 16744218.0, 525093.0, 8042895.0, 625093.0, 947276.0, 6980802.0, 2894059.0, 6000000.0, 5016000.0, 3075880.0, 4236287.0, 2525160.0, 525093.0, 1415520.0, 2854940.0, 2637720.0, 4775000.0, 2658240.0, 9463484.0, 12000000.0, 15409570.0, 1348440.0, 981348.0, 2239800.0, 2433333.0, 947276.0]

Métodos de operação binária em série:

Função Descrição
add() O método é usado para adicionar séries ou listas de objetos com o mesmo comprimento à série do chamador.
sub() O método é usado para subtrair séries ou listar objetos semelhantes com o mesmo comprimento da série do chamador.
mul() O método é usado para multiplicar séries ou listar objetos semelhantes com o mesmo comprimento da série do chamador.
div() O método é usado para dividir séries ou listar objetos semelhantes com o mesmo comprimento pela série do chamador.
sum() Retorna a soma dos valores do eixo solicitado.
prod() Retorna o produto dos valores para o eixo solicitado.
mean() Retorna a média dos valores para o eixo solicitado.
pow() O método é usado para colocar cada elemento da série passada como potência exponencial da série do chamador e retornar os resultados.
abs() O método é usado para obter o valor numérico absoluto de cada elemento em Series / DataFrame
cov() O método é usado para encontrar a covariância de duas séries.

Método da série Pandas:

Função Descrição
Series() Uma série pandas pode ser criada com o método do construtor Series(). Este método de construtor aceita uma variedade de entradas.
combine_first() O método é usado para combinar duas séries em uma.
count() Retorna o número de observações não NA / nulas na série.
size() Retorna o número de elementos nos dados subjacentes.
name() Método permite dar um nome a um objeto Série, ou seja, à coluna.
is_unique() O método retorna booleano se os valores no objeto forem únicos.
idxmax() Método para extrair as posições de índice dos valores mais altos em uma Série.
idxmin() Método para extrair as posições de índice dos valores mais baixos em uma Série.
sort_values() O método é chamado em uma série para classificar os valores em ordem crescente ou decrescente.
sort_index() O método é chamado em uma série pandas para classificá-lo pelo índice em vez de seus valores.
head() Método é usado para retornar um número especificado de linhas desde o início de uma série. O método retorna uma nova série.
tail() O método é usado para retornar um número especificado de linhas do final de uma série. O método retorna uma nova série.
le() Usado para comparar todos os elementos da série do chamador com as séries passadas. Ele retorna True para cada elemento que é Menor ou Igual ao elemento na série passada.
ne() Usado para comparar cada elemento da série do autor da chamada com as séries aprovadas. Ele retorna True para cada elemento que não é igual ao elemento na série passada.
ge() Usado para comparar cada elemento da série do autor da chamada com as séries aprovadas. Ele retorna True para cada elemento que é maior ou igual ao elemento na série passada.
eq() Usado para comparar cada elemento da série do autor da chamada com as séries aprovadas. Ele retorna True para cada elemento que é igual ao elemento na série passada.
gt() Usado para comparar duas séries e retornar o valor booleano para cada elemento respectivo.
lt() Usado para comparar duas séries e retornar o valor booleano para cada elemento respectivo.
clip() Usado para cortar o valor abaixo e acima para o valor mínimo e máximo passado.
clip_lower() Usado para recortar valores abaixo de um valor mínimo aprovado.
clip_upper() Usado para recortar valores acima de um valor máximo aprovado.
astype() O método é usado para alterar o tipo de dados de uma série.
tolist() O método é usado para converter uma série em lista.
get() O método é chamado em uma série para extrair valores de uma série. Esta é uma sintaxe alternativa à sintaxe tradicional de colchetes.
unique() Pandas unique() é usado para ver os valores únicos em uma coluna particular.
nunique() Pandas nunique() é usado para obter uma contagem de valores únicos.
value_counts() Método para contar o número de vezes que cada valor exclusivo ocorre em uma série.
factorize() O método ajuda a obter a representação numérica de uma matriz identificando valores distintos.
map() Método para unir os valores de um objeto a outro.
between() O método Pandas between () é usado em séries para verificar quais valores estão entre o primeiro e o segundo argumento.
apply() O método é chamado e alimentado com uma função Python como um argumento para usar a função em cada valor de série. Este método é útil para executar operações personalizadas que não estão incluídas no pandas ou numpy.

Artigo traduzido por Acervo Lima de Python | Pandas Series.

Métodos de entrada Python para programação competitiva

Python é uma linguagem incrivelmente amigável com a única falha de ser lenta. Em comparação com C, C ++ e Java, é bem mais lento. Normalmente, em Java, o tempo fornecido é 2X e em Python, é 5X.
Para melhorar a velocidade de execução do código para problemas intensivos de entrada / saída, as linguagens têm vários procedimentos de entrada e saída.

Um Exemplo de Problema:

Considere a questão de encontrar a soma de N números inseridos pelo usuário. 
Entrada de um número com a quantidade de números. 
Insira os números separados por um único espaço em uma linha.

Exemplos: 

Entrada: 
5
1 2 3 4 5
Resultado:
15

Diferentes soluções para o problema acima em Python: 

Método normal Python: (Python 2.7) 

1. raw_input() recebe um argumento de prompt opcional. Ele também remove o caractere de nova linha final da string que retorna.
2. print é apenas um wrapper fino que formata as strings (espaço entre args e nova linha no final) e chama a função de gravação de um determinado objeto.

# método básico de entrada e saída
# N entradas
n = int(raw_input())

# entre com uma matriz
arr = [int(x) for x in raw_input().split()]

# inicializa variável
summation = 0

# calcula a soma
for x in arr:
    summation += x

# mostra a resposta
print(summation)

Um método um pouco mais rápido usando oa funções internas stdin, stdout: (Python 2.7)

1. sys.stdin por outro lado é um objeto de arquivo. É como criar qualquer outro objeto de arquivo que alguém possa criar para ler a entrada do arquivo. Nesse caso, o arquivo será o buffer de entrada padrão. 
2. stdout.write('D\n') é mais rápido que print('D')
3. Ainda mais rápido é escrever tudo de uma vez por stdout.write("".Join(list-comprehension)), mas isso torna o uso da memória dependente do tamanho da entrada.

# importa stdin stdout
from sys import stdin, stdout 

# suponha que uma função chamada main()
# e todas as operações sejam realizadas
def main():

    # entrada via readline
    n = stdin.readline()
 
    # método similar de entrada de array
    arr = [int(x) for x in stdin.readline().split()]

    # inicializa a variável
    summation = 0

    # calcula a soma
    for x in arr:
        summation += x

    # imprimir resposta por escrito
    # método write escreve apenas
    # operações de string
    # então precisamos converter qualquer
    # dados em string para entrada
    stdout.write(str(summation))

# chama o método principal
if __name__ == "__main__":
    main()

Diferença no tempo:

Resumo do tempo (100k linhas cada)
——————————–
Imprimir: 6.040s
Gravar no arquivo: 0.122s
Imprimir com saída padrão: 0.121s

Como vimos até agora, obter dados do sistema padrão e dar saída ao sistema padrão é sempre uma boa ideia para melhorar a eficiência do código, o que é sempre uma necessidade na programação competitiva. Mas espere! gostaria de escrever essas longas linhas sempre que precisar delas? Então, qual é a vantagem de usar Python.
Vamos discutir a solução para este problema. O que podemos fazer é criar funções separadas para pegar entradas de vários tipos e apenas chamá-las sempre que precisar.

Quando você deseja obter a entrada de números inteiros específicos fornecidos em uma única linha

Suponha que a entrada tenha o seguinte formato:

5 7 19 20

e queremos variáveis separadas para referenciá-los. o que queremos é:

a = 5
b = 7
c = 19
d = 20

então, podemos criar uma função chamada get_ints() da seguinte maneira:

import sys
def get_ints():
    return map(int, sys.stdin.readline().strip().split())
 
a, b, c, d = get_ints()

Agora você não precisa escrever esta linha novamente e novamente. Você apenas tem que chamar a função get_ints() para receber a entrada neste formulário. Na função get_ints, estamos usando a função map().

Quando você deseja obter a entrada de uma lista de inteiros fornecida em uma única linha

Suponha que a entrada tenha o seguinte formato

1 2 3 4 5 6 7 8

e queremos que uma única variável mantenha toda a lista de inteiros. O que queremos é:

Arr = [1, 2, 3, 4, 5, 6, 7, 8]

Então, aqui vamos criar uma função chamada get_list() da seguinte maneira:

import sys
def get_ints():
    return list(map(int, sys.stdin.readline().strip().split()))
 
Arr = get_ints()

Agora você não precisa escrever esta linha novamente e novamente. Você apenas tem que chamar a função get_ints() para receber a entrada neste formulário.

Quando você deseja inserir uma string

Suponha que a entrada tenha o seguinte formato:

Acerov Lima é a melhor plataforma para praticar a codificação.

e queremos que uma única variável de referência mantenha esta string. O que queremos é:

string = "Acerov Lima é a melhor plataforma para praticar a codificação."

Então, aqui vamos criar uma função chamada get_string() da seguinte maneira:

import sys
def get_string():
    return sys.stdin.readline().strip()
 
string = get_string()

Agora você não precisa escrever esta linha novamente e novamente. Você apenas tem que chamar a função get_string() para receber a entrada neste formulário
Adicionando um pipe em buffer io: (Python 2.7) 
1. Simplesmente, Adicionando o código IO em buffer antes de seu código de envio para tornar a saída mais rápida. 
2. O benefício dos objetos io.BytesIO é que eles implementam uma interface comum (comumente conhecida como um objeto 'semelhante a um arquivo'). Os objetos BytesIO têm um ponteiro interno e para cada chamada para read(n) o ponteiro avança. 
3. O módulo atexit fornece uma interface simples para registrar funções a serem chamadas quando um programa fecha normalmente. O módulosys também fornece um gancho, sys.exitfunc, mas apenas uma função pode ser registrada lá. O registro atexit pode ser usado por vários módulos e bibliotecas simultaneamente.

# importar bibliotecas para manipulação de entrada / saída em nível genérico
import atexit, io, sys
 
# Uma implementação de fluxo usando um buffer de bytes na memória.
# Ele herda BufferedIOBase.
buffer = io.BytesIO()
sys.stdout = buffer
 
# print
@atexit.register
def write():
    sys.__stdout__.write(buffer.getvalue())
 
# método normal seguido de entrada N
n = int(raw_input())
 
# insira o array
arr = [int(x) for x in raw_input().split()]
 
summation = 0

for x in arr:
    summation += x

print(summation)

Ao lidar com uma grande quantidade de dados normalmente, o método normal falha ao executar dentro do limite de tempo. O Método 2 ajuda a manter uma grande quantidade de dados de E / S. O Método 3 é o mais rápido. Normalmente, o manuseio de arquivos de dados de entrada maiores que 2 ou 3 MBs é auxiliado pelos métodos 2 e 3.
Nota: Os códigos de menção acima estão em Python 2.7, para uso em versões Python 3.X. Simplesmente substitua raw_input() pela sintaxe input() do Python 3.X. O descanso deve funcionar bem.
Referências: 
1. Mais sobre a entrada em Python 2.7 
2. Saída via biblioteca sys e outros comandos.  
3. Entrada via biblioteca sys e outros comandos.  
4. Documentos do Módulo Python atexit.
Este artigo é uma contribuição de Shubham Saxena.

Artigo escrito por GeeksforGeeks e traduzido por Acervo Lima de Python Input Methods for Competitive Programming.

Função Python map()

A função map() retorna um objeto de map (que é um iterador) dos resultados depois de aplicar a função dada a cada item de um determinado iterável (lista, tupla etc.)

Sintaxe:

map(fun, iter)

Parâmetros:

fun: é uma função para a qual a função map passa cada elemento de determinado iterável.
iter: é um iterável que deve ser mapeado.

NOTA: Você pode passar um ou mais iteráveis para a função map().

Retorna:

Retorna uma lista dos resultados após aplicar a função fornecida  
para cada item de um determinado iterável (lista, tupla etc.) 

  NOTA: O valor retornado de map() (objeto de mapa) pode ser passado para funções como list () (para criar uma lista), set () (para criar um conjunto).

CÓDIGO 1

# Programa python para demostrar o funcionamento da função map() 
  
# Retorna o dobro de n 
def addition(n): 
    return n + n 

# Dobramos todos os números usando map() 
numbers = (1, 2, 3, 4) 
result = map(addition, numbers) 
print(list(result)) 

Resultado:

[2, 4, 6, 8]

CÓDIGO 2

Também podemos usar expressões lambda com mapa para obter o resultado acima.

# Dobramos todos os números usando map e lambda 
  
numbers = (1, 2, 3, 4) 
result = map(lambda x: x + x, numbers) 
print(list(result)) 

Resultado:

[2, 4, 6, 8]

CÓDIGO 3

# Adiciona duas listas usando map e lambda 
  
numbers1 = [1, 2, 3] 
numbers2 = [4, 5, 6] 
  
result = map(lambda x, y: x + y, numbers1, numbers2) 
print(list(result)) 

Resultado:

[5, 7, 9]

CÓDIGO 4

# List of strings 
l = ['sat', 'bat', 'cat', 'mat'] 
  
# map() pode listar a lista de strings individualmente
test = list(map(list, l)) 
print(test) 

Resultado:

[['s', 'a', 't'], ['b', 'a', 't'], ['c', 'a', 't'], ['m', 'a ',' t ']]

Artigo escrito por pawan_asipu e traduzido por Acervo Lima de Python map() function.