Pandas e Python
Pandas é uma biblioteca de código aberto em Python que fornece análise e
manipulação de dados ema programação em Python.
É uma biblioteca muito promissora para representação de dados, filtragem e programação
estatística. A peça mais importante no pandas é o DataFrame, onde armazena e manipula
com os dados.
Neste tutorial, você aprenderá o que é um DataFrame, como criá-lo a partir de diferentes fontes,
como exportá-lo para diferentes resultados e como manipular seus dados.
Instalar pandas
Você pode instalar pandas no Pythonusando pip. Execute o seguinte comando no cmd:
pip instalar pandas
Além disso, você pode instalar pandas usando conda assim:
condainstallpandas
Ler um arquivo do Excel
Você pode ler a partir de um arquivo Excel usando o método read_excel() do pandas. Para isso,
você precisa importar um módulo a mais chamado xlrd.
Instale xlrd usando pip:
pipinstalarlxlrd
O seguinte exemplo mostra como ler de uma folha de Excel:
1. Criamos uma folha de Excel com os seguintes conteúdos:
2. Importa o módulo do pandas.
importar pandas
3. Passaremos o nome do arquivo Excel e o número da aba da qual precisamos
ler os dados no método read_excel().
pandas.ler_excel('pandasExcel.xlsx','Planilha1')
O fragmento anterior gerará o seguinte resultado:
Se você verificar o tipo de saída usando a palavra-chave de tipo, receberá o seguinte resultado:
<classe 'pandas.core.frame.DataFrame'>
Este resultado é chamado de DataFrame! Essa é a unidade básica do pandas com a qual vamos
a tratar até o final do tutorial.
O DataFrame é uma estrutura de 2 dimensões etiquetada onde podemos armazenar
dados de diferentes tipos. DataFrame é semelhante a uma tabela SQL ou uma planilha de
Excel.
Importar arquivo CSV
Para ler um arquivo CSV, você pode usar o método read_csv() do pandas.
Importe o módulo pandas:
importar pandas
Agora chame o método read_csv() da seguinte maneira:
pandas.ler_csv('Book1.csv')
O arquivo Book1.csv tem o seguinte conteúdo:
O código gerará o seguinte DataFrame:
Ler um arquivo de texto
Também podemos usar o método read_csv do pandas para ler a partir de um arquivo de texto;
Considere o seguinte exemplo:
importar pandas
pandas.read_csv('myFile.txt')
O myFile.txt tem o seguinte formato:
A saída do código anterior será:
Este arquivo de texto é tratado como um arquivo CSV porque temos elementos separados
por vírgulas. O arquivo também pode usar outro delimitador, como um ponto e vírgula, um
tabulador, etc.
Suponhamos que temos um delimitador de tabulação e o arquivo se parece com isso:
Quando o delimitador é uma tabulação, teremos o seguinte resultado:
Como pandas não tem ideia do delimitador, traduza o tabulador para \t.
Para definir o caractere de tabulação como um delimitador, passe o argumento delimiter de
esta maneira:
pandas.read_csv('myFile.txt', delimitador='\t')
Agora a saída será:
Parece correto agora.
Ler SQL
Você pode usar o método read_sql() do pandas para ler de um banco de dados SQL. Isso se
demonstra no seguinte exemplo:
importar sqlite3
importar pandas
con = sqlite3.connect('meubanco.db')
pandas.read_sql('selecionar * da Employee', con)
Neste exemplo, nós nos conectamos a umabanco de dados SQLite3que tem uma tabela chamada
“Empregado”. Usando o método read_sql () do pandas, passamos uma consulta e um objeto de
conexão ao método read_sql(). A consulta recupera todos os dados da tabela.
Nossa tabela de funcionários se parece com o seguinte:
Quando você executar o código acima, a saída será como a seguinte:
Selecionar colunas
Suponhamos que temos três colunas na tabela Funcionário da seguinte maneira:
Para selecionar colunas da tabela, passaremos a seguinte consulta:
selecionar Nome, Cargo da Funcionário
A sentença do código de pandas será a seguinte:
pandas.read_sql('select Nome, Trabalho de Funcionário', con)
Também podemos selecionar uma coluna de uma tabela acessando o DataFrame a.
Considere o seguinte exemplo:
x = pandas.read_sql('select * from Employee', con)
Nome
O resultado será o seguinte:
Selecionar linhas por valor
Primeiro, criaremos um DataFrame do qual selecionaremos linhas.
Para criar um DataFrame, considere o seguinte código:
importar pandas
frame_data = {'name': ['James','Jason','Rogers'],'age': [18,20,22],'job': ['Assistant','Manager',
'Funcionário']
df = pandas.DataFrame(frame_data)
Neste código, criamos um DataFrame com três colunas e três linhas usando o método
DataFrame () do pandas. O resultado será o seguinte:
Para selecionar uma linha de acordo com seu valor, execute a seguinte sentença
df.loc[df['name'] =='Jason']
df.loc [] o DataFrame.loc [] é um array booleano que pode ser usado para acessar linhas ou
colunas através de valores ou rótulos. No código anterior, será procurada a linha onde o
o nome é igual a Jason.
A saída será:
Selecionar linha por índice
Para selecionar uma linha pelo seu índice, podemos usar o operador de segmentação (:) ou o
arranjo df.loc []
Considere o seguinte código:
>>> frame_data = {'name': ['James','Jason','Rogers'],'age': [18,20,22],'job': ['Assistant','Manager',
Funcionário
>>> df = pandas.DataFrame(frame_data)
Criamos um DataFrame. Agora vamos acessar uma linha usando df.loc []:
>>> df.loc[1]
Como você pode ver, recuperamos uma linha. Podemos fazer o mesmo usando o operador de
segmentação da seguinte maneira:
>>> df[1:2]
Alterar tipo de coluna
O tipo de dados de uma coluna pode ser alterado usando o atributo astype () de
DataFrame. Para verificar o tipo de dados das colunas, usamos o atributo dtypes de
DataFrame.
>>> df.dtypes
A saída será:
Agora, para converter o tipo de dados de um para outro:
>>> df.name = df.name.astype(str)
Buscamos a coluna 'name' do nosso DataFrame e mudamos seu tipo de dados de objeto
uma cadeia de caracteres.
Aplicar uma função a colunas / linhas
Para aplicar uma função em uma coluna ou linha, você pode usar o método apply () de
DataFrame.
Considere o seguinte exemplo:
>>> frame_data = {'A': [1,2,3],'B': [18,20,22],'C': [54,12,13]}
>>> df = pandas.DataFrame(frame_data)
Criamos um DataFrame e adicionamos valores do tipo inteiro nas linhas. Para aplicar uma
função, por exemplo, a raiz quadrada nos valores, importaremos o módulonumpypara
usar a função sqrt dessa maneira:
>>>importarnumpycomo np
>>>df.aplicar(np.sqrt)
A saída será a seguinte:
Para aplicar uma função de soma, o código será:
>>> df.apply(np.sum)
Para aplicar a função a uma coluna específica, você pode especificar a coluna da
próxima forma:
>>>df['A'].apply(np.sqrt)
Ordenar valores / ordenar por coluna
Para ordenar os valores em um DataFrame, utilize o método sort_values() do DataFrame.
Crie um DataFrame com valores inteiros:
>>> frame_data = {'A': [23,12,30],'B': [18,20,22],'C': [54,112,13]}
>>> df = pandas.DataFrame(frame_data)
Agora para ordenar os valores:
>>> df.sort_values(by=['A'])
A saída será:
O método sort_values() tem um atributo "by" que é necessário. No código acima, os
valores são ordenados pela coluna A. Para ordenar por várias colunas, o código é o
seguinte:
>>> df.sort_values(by=['A','B'])
Se você deseja ordenar em ordem decrescente, defina o atributo ascending de set_values como
Falso da seguinte maneira:
>>>df.sort_values(by=['A'], ascending=False)
A saída será:
Quitar / Eliminar duplicados
Para eliminar filas duplicadas de um DataFrame, use o método drop_duplicates () do
DataFrame.
Considere o seguinte exemplo:
>>> frame_data = {'name': ['James','Jason','Rogers','Jason'],'age': [18,20,22,20],'job': ['Assistant',
'Manager','Clerk','Manager']}
>>> df = pandas.DataFrame(frame_data)
Aqui criamos um DataFrame com uma linha duplicada. Para verificar se há linhas duplicadas em
o DataFrame, usa o método duplicated() do DataFrame.
>>> df.duplicados()
O resultado será:
Pode-se ver que a última linha é um duplicado. Para remover esta linha, execute o seguinte
linha de código:
>>> df.quitar_duplicatas()
Agora o resultado será:
Eliminar duplicados por coluna
Às vezes, temos dados em que os valores das colunas são os mesmos e desejamos
eliminá-los. Podemos eliminar uma linha por coluna ao passar o nome da coluna que
devemos eliminar.
Por exemplo, temos o seguinte DataFrame:
>>> frame_data = {'name': ['James','Jason','Rogers','Jason'],'age': [18,20,22,21],'job': ['Assistant',
'Manager','Clerk','Employee']}
>>> df = pandas.DataFrame(frame_data)
Aqui você pode ver que Jason está duas vezes. Se você deseja remover duplicados por coluna,
simplesmente passe o nome da coluna da seguinte maneira:
>>> df.remover_dobrados(['nome'])
O resultado será como o seguinte:
Borrar uma coluna
Para eliminar uma coluna ou linha completa, podemos usar o método drop() do DataFrame.
especificando o nome da coluna ou linha.
Considere o seguinte exemplo:
>>> df.drop(['job'], axis=1)
Nesta linha de código, estamos removendo a coluna chamada “job”. O argumento do
eixo é necessário aqui. Se o valor do eixo é 1, significa que queremos eliminar colunas, se o
valor do eixo é 0 significa que a linha será excluída. Em valores de eixo, 0 é para índice e 1
para colunas.
O resultado será:
Eliminar linhas
Podemos usar o método drop() para eliminar uma linha passando o índice da linha.
Suponhamos que temos o seguinte DataFrame:
>>> frame_data = {'name': ['James','Jason','Rogers'],'age': [18,20,22],'job': ['Assistant','Manager',
Funcionário
>>> df = pandas.DataFrame(frame_data)
Para eliminar uma linha com o índice 0 onde o nome é James, a idade é 18 e o trabalho
Você é assistente, use o seguinte código:
>>> df.drop([0])
Vamos criar um DataFrame onde os índices são os nomes:
>>> frame_data = {'name': ['James','Jason','Rogers'],'age': [18,20,22],'job': ['Assistant','Manager',
Funcionário
>>> df = pandas.DataFrame(frame_data, index = ['James','Jason','Rogers'])
Agora podemos eliminar uma linha com um certo valor. Por exemplo, se quisermos eliminar uma
fila onde o nome é Rogers, então o código será:
>>> df.drop(['Rogers'])
A saída será:
Você também pode excluir um intervalo de linhas da seguinte forma:
>>>df.drop(df.index[[0, 1]])
Isso eliminará as linhas do índice 0 a 1 e ficará apenas uma linha, uma vez que nosso DataFrame se
compõe de 3 filas:
Se você deseja eliminar a última linha do DataFrame e não sabe qual é o número total de linhas,
pode usar a indexação negativa como mostrado a seguir:
>>>df.drop(df.index[-1])
-1 apaga a última linha. Da mesma forma, -2 apagará as últimas 2 linhas e assim por diante.
Somar uma coluna
Você pode usar o método sum () do DataFrame para somar os elementos da coluna.
Suponhamos que temos o seguinte DataFrame:
>>> frame_data = {'A': [23,12,12],'B': [18,18,22],'C': [13,112,13]}
>>> df = pandas.DataFrame(frame_data)
Agora, para somar os elementos da coluna A, use a seguinte linha de código:
>>> df['A'].soma()
Você também pode usar o método apply() do DataFrame e passar o método de soma de
numpy para somar os valores.
Contar valores únicos
Para contar valores únicos em uma coluna, você pode usar o método nunique() do
DataFrame.
Suponha que temos um DataFrame como o seguinte:
>>> frame_data = {'A': [23,12,12],'B': [18,18,22],'C': [13,112,13]}
>>> df = pandas.DataFrame(frame_data)
Para contar os valores únicos na coluna A:
>>> df['A'].nunique()
Como você pode ver, a coluna A tem apenas 2 valores únicos 23 e 12 e o outro 12 é um
duplicado, por isso temos 2 na saída.
Se você quiser contar todos os valores em uma coluna, pode usar o método count () da
seguinte maneira:
>>> df['A'].count()
Filas de subconjuntos
Para selecionar um subconjunto de um DataFrame, você pode usar os colchetes.
Por exemplo, temos um DataFrame que contém alguns inteiros. Podemos selecionar ou
buscar o subconjunto de uma linha desta forma:
df.[início:contagem]
O ponto de início será incluído no subconjunto, mas o ponto de parada não é incluído.
exemplo, para selecionar 3 linhas a partir da primeira linha, você escreverá:
>>> df[0:3]
A saída será:
Esse código significa começar a partir da primeira linha que é 0 e selecionar 3 linhas.
Da mesma forma, para selecionar as duas primeiras linhas, você escreverá:
>>> df[0:2]
Para selecionar ou buscar um subconjunto com a última linha, use a indexação negativa:
>>> df[-1:]
Escrever em um Excel
Para escrever um DataFrame em uma planilha do Excel, podemos usar o método to_excel ().
Para escrever em uma planilha do Excel, você precisa abrir a planilha e para abrir uma planilha do Excel,
teremos que importar o módulo openpyxl.
Instale openpyxl usando pip:
pip instalar openpyxl
Considere o seguinte exemplo:
>>> importar openpyxl
>>> frame_data = {'name': ['James','Jason','Rogers'],'age': [18,20,22],'job': ['Assistant','Manager',
Funcionário
>>> df = pandas.DataFrame(frame_data)
>>> df.to_excel("pandasExcel.xlsx", "Sheet1")
O arquivo do Excel será como o seguinte:
Escrever em um arquivo CSV
Da mesma forma, para escrever um DataFrame em CSV, você pode usar o método to_csv()
como se mostra na seguinte linha de código.
>>> df.to_csv("pandasCSV.csv")
O arquivo de saída será como o seguinte:
Escrever em SQL
Para escrever dados em SQL, podemos usar o método to_sql().
Considere o seguinte exemplo:
importar sqlite3
importar pandas
con = sqlite3.connect('meubanco.db')
frame_data = {'name': ['James','Jason','Rogers'],'age': [18,20,22],'job': ['Assistant','Manager',
Funcionário
df = pandas.DataFrame(frame_data)
df.to_sql('usuarios', con)
Neste código, criamos uma conexão com um banco de dados sqlite3. Em seguida, criamos um
DataFrame com três linhas e três colunas.
Finalmente, utilizamos o método to_sql do nosso DataFrame (df) e passamos o nome de
a tabela onde os dados serão armazenados juntamente com o objeto de conexão.
O banco de dados SQL terá a seguinte aparência:
Escrever em JSON
Você pode usar o método to_json() do DataFrame para escrever em um arquivo JSON.
Isto é demonstrado no seguinte exemplo:
>>> df.to_json("myJson.json")
Nesta linha de código, o nome do arquivo JSON é passado como um argumento. O
O DataFrame será armazenado no arquivo JSON. O arquivo terá o seguinte conteúdo:
Escrever em um arquivo HTML
Você pode usar o método to_html() do DataFrame para criar um arquivo HTML com o
conteúdo do DataFrame.
Considere o seguinte exemplo:
>>> df.to_html("myhtml.html")
O arquivo de resultados terá o seguinte conteúdo:
Quando você abrir o arquivo HTML no navegador, ele aparecerá assim:
Trabalhar com pandas é muito fácil. É como trabalhar com folhas de Excel! Pandas DataFrame
é uma biblioteca muito flexível que você pode usar.