Criar um Site Grátis Fantástico
Pandas
Pandas

Notas:

 # Importação

import pandas as pd

# Construção de Séries
'''
serie3 = serie1 + serie2


# Estruturas de Séries

dic = {'a': 2, 'b': 3}
dic2 = {'a': 3, 'b': 4}

serie1 = pd.Series(data=dic)
serie2 = pd.Series(data=dic2)

# Soma de Séries

print(serie3)
'''

# Construção de Data Frame (Colunas)
'''
dic3 = {'Nome': ['Luiz', 'Matheus', 'Maria'], 'Idade': [50, 30, 22]}

df = pd.DataFrame(dic3)
print(df)
print('-'*15)
print(df['Idade'])
'''

# Construção de Data Frame
'''
dic4 = {'Nome': ['Luiz', 'Matheus', 'Maria'], 'Idade': [40, 25, 69]}
df = pd.DataFrame(dic4)
print(df)
'''
# Criação por Listas
'''
lista = [['Paris', 4, 3], ['Brasil', 7, 5], ['Chile', 8, 10]]
df_pais = pd.DataFrame(lista, columns=['Pais', 'Medalhas_Ouro', 'Medalhas_Prata'])

print(df_pais)
print('-'*15)
print(df_pais['Medalhas_Ouro'])
print('-'*40)

# Análise Estatística
print(df_pais['Medalhas_Ouro'].mean())
print(df_pais['Medalhas_Ouro'].mode())
print(df_pais['Medalhas_Ouro'].median())
print(df_pais['Medalhas_Ouro'].var())
print(df_pais['Medalhas_Ouro'].max())
print(df_pais['Medalhas_Ouro'].min())
'''

Exercício 20

1.Escreva um programa que leia, nome, idade, sexo e país de orígem. 

  1. Organize cada leitura como uma lista, e insira em outra lista de armazenamento. 
  1. Após isso, crie um data frame usando pandas com suas respectivas colunas.
  1. Calcule usando pandas.
    4.1 média de idade
    4.2 moda de idade
    4.3 mediana da idade
import pandas as pd
import tkinter as tk

def inserir():
nome_f = nome_l.get()
idade_f = int(idade_l.get())
sexo_f = sexo_l.get()
pais_f = pais_l.get()
add.append(nome_f)
add.append(idade_f)
add.append(sexo_f)
add.append(pais_f)
lista.append(add.copy())
add.clear()
nome_l.delete(0, tk.END)
idade_l.delete(0, tk.END)
sexo_l.delete(0, tk.END)
pais_l.delete(0, tk.END)

def mostrar():
df = pd.DataFrame(lista, columns=['Nome', 'Idade', 'Sexo', 'Pais'])
print(df)
print('-'*40)
print(f'Maior Idade: {df['Idade'].max()}')
print(f'Menor Idade: {df['Idade'].min()}')
print(f'Mediano de Idades: {df['Idade'].median()}')

add=[]
lista = []

janela = tk.Tk()
janela.title('Registro')

text_1 = tk.Label(janela, text='Nome')
nome_l = tk.Entry(width=40)
text_1.grid(row=0, column=0)
nome_l.grid(row=0, column=1)

text_2 = tk.Label(janela, text='Idade')
idade_l = tk.Entry(width=40)
text_2.grid(row=1, column=0)
idade_l.grid(row=1, column=1)

text_3 = tk.Label(janela, text='Sexo')
sexo_l = tk.Entry(width=40)
text_3.grid(row=2, column=0)
sexo_l.grid(row=2, column=1)

text_4 = tk.Label(janela, text='Pais')
pais_l = tk.Entry(width=40)
text_4.grid(row=3, column=0)
pais_l.grid(row=3, column=1)

inserir_dados = tk.Button(janela, text='Enviar', command=inserir)
inserir_dados.grid(row=4, column=1)

mostrar_dados = tk.Button(janela, text='Mostrar dados', command=mostrar)
mostrar_dados.grid(row=5, column=1)

janela.mainloop()

Com customTkinter

import tkinter.messagebox

import pandas as pd
import customtkinter as ctk
from tkinter import messagebox

def inserir():
nome_f = nome_l.get()
idade_f = int(idade_l.get())
sexo_f = sexo_l.get()
pais_f = pais_l.get()
add.append(nome_f)
add.append(idade_f)
add.append(sexo_f)
add.append(pais_f)
lista.append(add.copy())
add.clear()
nome_l.delete(0, ctk.END)
idade_l.delete(0, ctk.END)
sexo_l.delete(0, ctk.END)
pais_l.delete(0, ctk.END)
tkinter.messagebox.showinfo(title="Sucesso", message="Dados Adicionados!")


def mostrar():
df = pd.DataFrame(lista, columns=['Nome', 'Idade', 'Sexo', 'Pais'])
print(df)
print('-'*40)
print(f'Maior Idade: {df['Idade'].max()}')
print(f'Menor Idade: {df['Idade'].min()}')
print(f'Mediano de Idades: {df['Idade'].median()}')

add=[]
lista = []

janela = ctk.CTk()
janela.title('Registro')
ctk.set_appearance_mode('dark')
janela.geometry('250x180')


text_1 = ctk.CTkLabel(janela, text='Nome')
nome_l = ctk.CTkEntry(janela, width=200)
text_1.grid(row=0, column=0)
nome_l.grid(row=0, column=1)

text_2 = ctk.CTkLabel(janela, text='Idade')
idade_l = ctk.CTkEntry(janela, width=200)
text_2.grid(row=1, column=0)
idade_l.grid(row=1, column=1)

text_3 = ctk.CTkLabel(janela, text='Sexo')
sexo_l = ctk.CTkEntry(janela, width=200)
text_3.grid(row=2, column=0)
sexo_l.grid(row=2, column=1)

text_4 = ctk.CTkLabel(janela, text='Pais')
pais_l = ctk.CTkEntry(janela, width=200)
text_4.grid(row=3, column=0)
pais_l.grid(row=3, column=1)

inserir_dados = ctk.CTkButton(janela, text='Enviar', command=inserir)
inserir_dados.grid(row=4, column=1)

mostrar_dados = ctk.CTkButton(janela, text='Mostrar dados', command=mostrar)
mostrar_dados.grid(row=5, column=1)

janela.mainloop()


# Notas 2
import pandas as pd
import openpyxl

# Importando Dados CSV
df = pd.read_csv('dados_pacientes - dados_pacientes.csv')
# Análise Superficial
print(df.head())

# Importando Dados CSV
df2 = pd.read_excel('Base Aula 002-Exemplo.xlsx')

'''# Análise Superficial
print(df2.head()) # 5 Primeiras linhas
print(df2.tail()) # 5 Ultimas Linhas
print(df2.info()) # Informações
print(df2.describe()) # Medias gerais de vários tipos'''

# Filtrar

'''print(df2['Total'][df2['Vendedor'] == 'Caio'].sum()) # Soma as Vendas do Caio
print(df2['Total'][df2['Vendedor'] == 'Caio'].max()) # A A maior vendo do Caio
print(df2['Vendedor'].nunique()) # Numero de Vendedores
print(df2['Vendedor'].unique()) # Nomes dos Vendedores
print(df2['Produto'].value_counts()) # Quantidades de vendas de cada produto'''

# Ordenação

df2 = df2.sort_values(by= 'Total', ascending=False)
print(df2[['Total', 'Vendedor']])

# Agrupar Por
'''
print(df2[['Total', 'Vendedor', 'Produto', 'Quantidade']].groupby('Vendedor').sum())
print(df2[['Total', 'Vendedor', 'Produto', 'Quantidade']].groupby(['Vendedor', 'Produto']).sum())

# Seleção de Colunas

Vendas_caio = df2[df2['Vendedor'] == 'Caio']
Vendas_caio_Matriz = df2[(df2['Vendedor'] == 'Caio') & (df2['Loja'] == 'Matriz')]
print(Vendas_caio_Matriz.head())'''

# inserir Colunas

df2['Comissão'] = df2['Total'] * 0.05
print(df2.info())
print(df2[['Total', 'Comissão']])

Ex 21:

 

#1.Importe a Base Aula 002 - Exemplo.xlsx
#
#2. Encontre a Informação
# 2.1 - Qual país vendeu mais(Total)?
# 2.2 - Qual o melhor vendedor?
# 2.3 - Qual o melhor tipo de loja?
# 2.4 - Qual é o tipo de envio mais usado?
# 2.5 - Qual o público que mais atendemos (Gênero)?
# 2.6 - Quem fez as 3 maiores vendas?
# 2.7 - Adicione uma nova coluna comissão (Total * 5%)

import pandas
import openpyxl
import pandas as pd

tabela = pd.read_excel('Base Aula 002-Exemplo.xlsx')
print(tabela.info())

print('_'*40, 'MAIS VENDAS:')
pais_que_mais_vendeu = print(tabela['País'].value_counts().head(1))

print('_'*40, 'MELHOR VENDEDOR:')
melhor_vendedor = tabela[['Total', 'Vendedor']].groupby('Vendedor').sum()
print(melhor_vendedor.sort_values(by= 'Total', ascending=False).head(1))

print('_'*40, 'MELHOR LOJA:')
melhor_loja = tabela[['Loja', 'Total', 'Quantidade']].groupby('Loja').sum()
print(melhor_loja.sort_values(by= 'Total', ascending=False).head(1))

print('_'*40, 'ENVIO MAIS USADO:')
loja_mais_usada = tabela[['Tipo de Envio', 'Quantidade']].groupby('Tipo de Envio').sum()
print(loja_mais_usada.sort_values(by= 'Quantidade', ascending=False).head(1))

print('_'*40, 'GÊNERO:')
generos = tabela['Gênero'].value_counts()
print(generos)


# Exportar

df.to_excel('planilha_corrigida.xlsx')

#ETL

df = pd.read_csv('dados_pacientes - dados_pacientes.csv')
'''# print(df.head())
print(df.isna()) # Mostra qual é vazia True e False
print(df.isna().sum()) # Contabiliza a quantidade de colunas e linhas vazias
#print(df.info())'''

'''df = df.dropna() # Deleta todas as colunas com vazios (CUIDADO)
print(df.isna().sum())'''
# df.dropna(inplace = True)
'''df.dropna(inplace=True, thresh=1)
df.dropna(inplace=True, thresh=1, axis=1)'''

'''# preencher
df.fillna(value=0, inplace=True)
'''

# Troca um item específico da lista
df = df['Nome_Paciente'].replace('Paciente_1', 'João')

print(df.isna().sum())
print(df.info())
print(df.head())


# Exercicio 22

 

import openpyxl
import pandas as pd

#ETL

df = pd.read_csv('Vendas_Incorreto - Exemplo.csv')

# Tabela Base
print(df.info())

# Tabela Corrigida
df.dropna(inplace=True, thresh=1)
df.dropna(inplace=True, thresh=1, axis=1)
print(df.info())

print('Quantidade de Produtos vendidos')
print(df['Produto'].value_counts())

print('Vendedores:', df['Vendedor'].unique())

print(df[['Vendedor', 'Quantidade']].groupby('Vendedor').sum())
print(df[['Gênero', 'Quantidade']].groupby('Gênero').sum())

print(df[['Loja', 'Total']].groupby('Loja').sum())

####### Exercicio 23

import pandas as pd
import openpyxl

df = pd.read_csv('Salarios.csv')

quant = len(df)

print(df.head(quant))

print(df.info())

print(f'A média de salário base é: {(float(df['BasePay'].mean())):.2f}')

print(f'A maior hora extra paga é: {(float(df['OvertimePay'].max())):.2f}')

print(f'A profissão do Joseph é: {df[df['EmployeeName'] == 'JOSEPH DRISCOLL']['JobTitle'].values[0]}')

print(f'O nom da pessoa com maior salário é: {df['EmployeeName'][df['BasePay'] == df['BasePay'].max()].values[0]}')

media_pagamento = df.groupby('Year')['TotalPay'].mean().sort_values(ascending=False)

print(f'A média de pagamento por ano é: {media_pagamento}')




PROJETO

 

import pandas as pd
import openpyxl
import seaborn as sns
import matplotlib.pyplot as plt

# Importando Dados CSV
df = pd.read_csv('vinho.csv')

# Remover a coluna 'Unnamed: 0'
df.drop(columns=['Unnamed: 0'], inplace=True)

# Preencher NaN nas colunas numéricas com 0
df[['points', 'price']] = df[['points', 'price']].fillna(0)
df[['country', 'designation', 'province', 'region_1', 'region_2', 'taster_name', 'taster_twitter_handle', 'variety']] = df[['country', 'designation', 'province', 'region_1', 'region_2', 'taster_name', 'taster_twitter_handle', 'variety']].fillna('-')

# Definir a quantidade máxima de colunas a serem exibidas
pd.set_option('display.max_columns', None) # Exibe todas as colunas

# Definir a quantidade máxima de linhas a serem exibidas (opcional)
pd.set_option('display.max_rows', 50) # Exibe até 50 linhas

# Exibir as primeiras 50 linhas do DataFrame
print(df.head(50))


print(df.info())


Código 2

import pandas as pd
import openpyxl
import seaborn as sns
import matplotlib.pyplot as plt

# Importando Dados CSV
df = pd.read_csv('vinho.csv')

# Remover a coluna 'Unnamed: 0'
df.drop(columns=['Unnamed: 0'], inplace=True)

# Preencher NaN nas colunas numéricas com 0
df[['points', 'price']] = df[['points', 'price']].fillna(0)
df[['country', 'designation', 'province', 'region_1', 'region_2', 'taster_name', 'taster_twitter_handle', 'variety']] = df[['country', 'designation', 'province', 'region_1', 'region_2', 'taster_name', 'taster_twitter_handle', 'variety']].fillna('-')

# Definir a quantidade máxima de colunas a serem exibidas
pd.set_option('display.max_columns', None) # Exibe todas as colunas

# Definir a quantidade máxima de linhas a serem exibidas (opcional)
pd.set_option('display.max_rows', 50) # Exibe até 50 linhas

vendas_paises = df['country'].value_counts().reset_index()

# PAÍSES COM MAIOR QUANTIDADE DE VENDAS.
print('PAÍSES COM MAIOR QUANTIDADE DE VENDAS:')
# print(vendas_paises.head(50).to_string(index=False))

for index, row in vendas_paises.head(50).iterrows():
print(f"{row['country'].ljust(30)} {str(row['count']).rjust(10)}")
'''
# Exibir as primeiras 50 linhas do DataFrame
print(df.head(50))
print(df.info())
print(df.describe())'''

# Definindo o estilo do gráfico
sns.set(style="whitegrid")

# Criando o gráfico de barras
plt.figure(figsize=(12, 6)) # Define o tamanho da figura
sns.barplot(data=vendas_paises.head(10), x='count', y='country', palette='viridis')

# Adicionando título e rótulos
plt.title('PAÍSES COM MAIOR QUANTIDADE DE VENDAS', fontsize=16)
plt.xlabel('Quantidade de Vendas', fontsize=14)
plt.ylabel('Países', fontsize=14)

# Exibindo o gráfico
plt.show()