Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions exercicios/para-casa/joyce.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
import pandas as pd
import matplotlib.pyplot as plt
import datetime as dt

df_empresa = pd.read_csv(r'C:\Users\55119\OneDrive\Área de Trabalho\REPROGRAMA (On33)\Semana12\on33-python-s10-pandas-numpy-II\material\Employee.csv')


# - Analise o dataset Employee e extraia as seguintes informações:
# - Faça a limpeza do seu dataframe excluindo linhas duplicadas ou preenchendo valores nulos.

print(df_empresa.info())
print(df_empresa.isnull().sum())
print(df_empresa.duplicated().sum())
print(df_empresa.drop_duplicates(inplace=True))
print(df_empresa.duplicated().sum())

# - Crie um dataframe que tenha os empregados que trabalham na empresa a mais de 5 anos.

ano = dt.datetime.now().year

df_empresa['tempo_empresa'] = (ano - df_empresa['JoiningYear'])
print(df_empresa)

cinco_anos = df_empresa[df_empresa['tempo_empresa'] > 5]
print(cinco_anos)

# - Agrupe os empregados por gênero e idade e crie um gráfico para cada caso.

idade = df_empresa['Age'].value_counts()
genero = df_empresa['Gender'].value_counts()

idade.plot(kind='bar', title='Idade')
plt.show()

genero.plot(kind='bar', title='Gênero')
plt.show()

# - Veja qual a cidade que mais tem empregados e faça uma média do tempo de serviço dos empregados por cidade

cidades = df_empresa['City'].value_counts()
mais_empregados = cidades.idxmax()
numero = cidades.max()
media_tempo = df_empresa.groupby('City')['tempo_empresa'].mean()

print(cidades)
print(f'Com {numero} empregados, a filial de {mais_empregados} é a cidade com mais colaboradores')
print('\nA média do tempo que os empregados trabalham na empresa é de ', media_tempo)

# - Faça a porcentagem de quantos empregados ainda trabalham na empresa (use a coluna `LeaveOrNot` do dataframe)

total_empregados = len(df_empresa)
atuando = df_empresa["LeaveOrNot"].value_counts()
porcentagem = (atuando / total_empregados) * 100
print(porcentagem)

# - Conte quantos empregados existem por `PaymentTier`

payment = df_empresa['PaymentTier'].value_counts()
print('A quantidade de empregados por: ')
print(payment)

# - Substitua os valores da coluna `EverBenched` para `True` ou `False`

df_empresa['EverBenched'] = df_empresa['EverBenched'].replace({'Yes': True, 'No': False})
print(df_empresa['EverBenched'].head())

# - Crie um gráfico de pizza com o resultado da coluna `EverBenched` e outro com `LeaveOrNot`

benched = df_empresa['EverBenched'].value_counts()
leaveOrnot = df_empresa['LeaveOrNot'].value_counts()

benched.plot(kind= 'pie', title='EverBenched')
plt.show()
leaveOrnot.plot(kind='pie', title='LeaveOrNot')
plt.show()

71 changes: 71 additions & 0 deletions exercicios/para-sala/aula.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import pandas as pd
import matplotlib.pyplot as plt


df = pd.read_csv(r"C:\Users\55119\OneDrive\Área de Trabalho\REPROGRAMA (On33)\Semana12\on33-python-s10-pandas-numpy-II\material\desenvolvimento_paises.csv")

#print(df.describe())

#print(df.info())

#print(df['Country'].value_counts())

print(df.fillna(0, inplace=True)) #substitui os valores nulos por algum número, nesse caso 0(zero);
#você usa o inplace True pra substituir no DataFrame original.
#Se você não coloca como True (por padrão ele vem como False), mesmo que você faça o fillna, ele não vai substituir no DataFrame, é como se ele salvasse em outro DataFrame.
#Por isso você tem que dar esse comando pra ele mudar.

print(df.isnull().sum())

print(df.duplicated().sum()) #apresenta linhas duplicadas

print(df.drop_duplicates(inplace=True)) #
print(df.duplicated().sum())

pais_maior_security_value = df['SafetySecurity'].max()
pais_menor_security_value = df['SafetySecurity'].min()
print(pais_maior_security_value)
print(pais_menor_security_value)
print('A diferença entre o maior país com SafetySecurity é de:' , pais_maior_security_value - pais_menor_security_value)

#encontra mais de uma linha onde o valor maximo esteja presente
linha_maior_valor_security = df[df['SafetySecurity'] == pais_maior_security_value] #filtro dizendo que a coluna 'SafetySecurity' seja igual ao "pais maior"; ou seja, irá retornar a linha que será igual
print(linha_maior_valor_security['SafetySecurity'])

index_greater_value = df['SafetySecurity'].idxmax() # retorna o index do primeiro valor maximo encontrado
print(df.loc[index_greater_value]) #(loc) retorna dados da linha por index

columns_name = df.columns
columns_name = columns_name.drop(labels='Country') #drop(de index) é apagar, aqui está pegando todo o data frame a apagando a coluna escolhida que foi Country
print(columns_name)

def categorizar_valores(valor): #função criada como (Lambda)
if valor > 80: #Lambda é uma função anônima que aceita somente uma instrução
return 'Desenvolvido'
if valor < 70 and valor >= 50:
return 'Em desenvolvimento'
if valor < 60:
return 'Subdesenvolvido'
else:
return 'Não Categorizado'

df['Média'] = df[columns_name].mean(axis=1)

df['Categoria Desenvolvimento'] = df['Média'].apply(categorizar_valores) #apply aplica uma lógica em todas as linhas do df
print(df['Categoria Desenvolvimento'])

development_category_counts = df['Categoria Desenvolvimento'].value_counts()
print(development_category_counts)

development_category_counts.plot(kind='bar', title='QTD Países por Categoria') #cria o gráfico, kind é o tipo, title é titulo
plt.show() #para mostrar o gráfico pronto

personel_freedom_filter = df.where(df['PersonelFreedom'] <= 30)

personel_freedom_filter.dropna(inplace=True)
print(personel_freedom_filter.info())

print(df.sort_values(by=['Education', 'Health'], inplace=True, ascending=False))
print(df.head())