diff --git a/exercicios/para-casa/joyce.py b/exercicios/para-casa/joyce.py new file mode 100644 index 0000000..bc2843c --- /dev/null +++ b/exercicios/para-casa/joyce.py @@ -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() + diff --git a/exercicios/para-sala/aula.py b/exercicios/para-sala/aula.py index e69de29..1139368 100644 --- a/exercicios/para-sala/aula.py +++ b/exercicios/para-sala/aula.py @@ -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()) + +