Python para Ciência de Dados#
Manipulação de Dados Tabulares com Pandas - Funções Básicas#
import pandas as pd
cidades = pd.DataFrame(
[
['Paraná', 'Londrina', 575377, 1356.00],
['São Paulo', 'São Carlos', 254484, 1508.00],
['Santa Catarina', 'Florianópolis', 508826, 1798.00],
['Paraná', 'Curitiba', 1963726, 2293.00],
['São Paulo', 'Campinas', 1223237, 1710.00]
], columns=['Estado', 'Cidade', 'Habitantes', 'Salário-Médio'])
cidades
df = pd.read_csv('qualidade_vinho.csv', sep=',', header=0)
df.head(2)
cidades.head(2) # Retorna um novo dataframe com as n primeiras amostras
cidades.tail(2) # Retorna um novo dataframe com as n últimas amostras
cidades.shape # Retorna uma tupla com o número de linhas e colunas
cidades.info() # Retorna vazio e imprime na tela as informações gerais do dataframe
cidades.columns # Retorna uma lista com o nome de todas as colunas
cidades['Salário-Médio'].describe() # Retorna um objeto DataFrame com as medidas estatísticas para cada coluna
Tipos de Dados com Pandas#
cidades.dtypes
cidades.info()
cidades['Habitantes'] = cidades['Habitantes'].astype('float64')
cidades.dtypes
cidades['Data'] = ['3-8-2021', '3-9-2021', '3-10-2021', '3-11-2021', '3-12-2021']
cidades['Data'] = pd.to_datetime(cidades['Data'], format='%d-%m-%Y') # Dia, Mês, Ano
cidades
cidades['Data'] = cidades['Data'].dt.strftime('%d-%m-%Y') # Dia, Mês, Ano
cidades # Novo Formato
Renomeando Colunas#
cidades.rename(columns={'Habitantes': 'N Habitantes', 'Data': 'Data - Censo'}, inplace=True)
cidades
Selecionando Linhas e Colunas#
cidadesHab = cidades[['N Habitantes', 'Salário-Médio']] # Seleciona as duas colunas com os nomes especificados
cidadesHab
cidades.loc[[1, 2]] # Seleciona as duas linhas com os nomes especificados (note que o "rótulo" de cada linha está presente na forma de números inteiros)
cidades.iloc[1:3] # Seleciona as linhas do dataframe original, referentes ao índice determinado
cidades.iloc[:, 0:2] # Seleciona todas as linhas e as duas primeiras colunas do dataframe original
cidades.iloc[1:3, :3] # Seleciona as duas primeiras linhas e as três primeiras colunas
cidades.iloc[:, [1, 3, 0, 2]] # Seleciona todas as linhas e as colunas determinadas
Adicionando e Removendo Colunas#
cidades.insert(2, 'Sigla', ['PR', 'SP', 'SC', 'PR', 'SP']) # Adiciona novos dados no índice dois
cidades.insert(2, 'Sigla-Repetida', cidades['Sigla']) # Adiciona uma coluna repetida "Sigla"
cidades
cidades.pop('Sigla-Repetida')
# ou
cidades = cidades.drop(['Sigla-Repetida'], axis=1)
cidades
Operações Básicas - Consultas#
cidades.query('`Salário-Médio` > 1400.0')
cidades.query('Estado == "São Paulo"')
cidades.query('`N Habitantes` > 500000 and `N Habitantes` < 1300000')
Operações Básicas - Ordenação#
cidades.sort_values(by='Cidade', inplace=True)
cidades
cidades.sort_values(by='Salário-Médio', inplace=True)
cidades
Operações Básicas - Combinando DataFrames#
cidades_salarios = pd.DataFrame(
[
['Paraná', 'Londrina', 1356.00],
['São Paulo', 'São Carlos', 1508.00],
['Santa Catarina', 'Florianópolis', 1798.00],
['Paraná', 'Curitiba', 2293.00],
['São Paulo', 'Campinas', 1710.00]
], columns=['Estado', 'Cidade', 'Salário-Médio'])
cidades_salarios
cidades_pop = pd.DataFrame(
[
['Londrina', 575377],
['São Carlos', 254484],
['Florianópolis', 508826],
['Curitiba', 1963726],
['Campinas', 1223237]
], columns=['Cidade', 'Habitantes'])
cidades_pop
pd.merge(left=cidades_salarios, right=cidades_pop, on="Cidade")
pd.merge(left=cidades_salarios, right=cidades_pop, on="Cidade", how="outer")
cidades_df1 = pd.DataFrame(
[
['Londrina', 575377],
['São Carlos', 254484],
['Florianópolis', 508826],
], columns=['Cidade', 'Habitantes'])
cidades_df1
cidades_df2 = pd.DataFrame(
[
['Curitiba', 1963726],
['Campinas', 1223237]
], columns=['Cidade', 'Habitantes'])
cidades_df2
pd.concat([cidades_df1, cidades_df2], ignore_index=True)
Operações Básicas - Salvando DataFrames#
cidades.to_csv("my_df.csv")
cidades.to_html("my_df.html")
cidades.to_json("my_df.json")