Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Atividade Casa e sala finalizados #10

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
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
75 changes: 75 additions & 0 deletions exercicios/para-casa/atividade_casa_FlavienneMarins.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import pandas as pd
import matplotlib.pyplot as plt
import datetime as dt

#Carregando o dataframe
df = pd.read_csv(r"C:\Users\flavi_000\OneDrive\Flavienne\Cursos\Reprograma\S12 - 17.08\on33-python-s10-pandas-numpy-II\material\Employee.csv")

print(df.describe()) # faz uma descrição matemát. dos dados, um resumo estatístico rápido de um DataFrame, media, desvio padrão, contagem de linhas em cada coluna

# Atividade 1 - Faça a limpeza do seu dataframe excluindo linhas duplicadas ou preenchendo valores nulos.
print(df.isnull().sum()) # sem valores nulos, logo não há células vazias ou com valor ausentes.
print(df.duplicated().sum()) #imprimiu 1889 valores duplicados.
print(df.duplicated().value_counts()) # conferi a frequência dos duplicados(true 1889) e não duplicados (false 2764)
df.drop_duplicates(inplace=True) # remover as duplicadas no DF e as alterações serão permanentes no DF.
print(df.duplicated().value_counts()) #verificar se a remoção foi eficiente, resultado nulo não é exibido.

# Atividade 2 - Crie um dataframe que tenha os empregados que trabalham na empresa a mais de 5 anos.
current_year = dt.datetime.now().year #armazena na variável a data atual (ano)
print(current_year)

df["Years_of_Service"] = (df["JoiningYear"] - current_year) #DF criado que receberá o cálculo da quantidade de anos na empresa
print(df.info())

filtered_df = df[df["Years_of_Service"] > 5] #Filtro com os funcionários com mais de 5 anos
print(filtered_df.head())

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

df["Age"].value_counts().sort_index().plot(kind="barh", title="Idade dos Empregados", xlabel="Quantidade", ylabel="Idades", color="LightSlateGray")
#Calcula a frequência de cada idade na coluna "Age" do DF;ordenando em ordem crescente;
plt.show()

df["Gender"].value_counts().plot(kind="pie", title="Gênero dos Empregados", colors=["DarkBlue" , "MediumVioletRed" ], autopct="%.2f%%")
# Calcula a frequência de cada gênero aparece na coluna "Gender" do DF e gera um gráfico
plt.ylabel("") #limpa os eixos x e y do gráfico de barras, pois solicitei um gráfico de pizza.
plt.legend() #adiciona uma legenda de cores no gráfico
plt.show()

# Atividade 4 - Veja qual a cidade que mais tem empregados e faça uma média do tempo de serviço dos empregados por cidade
#Cidade que mais tem empregados
most_employees_city = df["City"].value_counts().idxmax() #conta quantos funcionários existem em cada cidade e pega o nome da cidade que aparece mais vezes.
print("A cidade com mais empregados é", most_employees_city)

#Média do tempo de serviço dos empregados por cidade
df["years_of_service"] = current_year - df["JoiningYear"] #calcula a quantidade de anos de serviço para cada funcionário e armazenando o resultado em uma nova coluna chamada "years_of_service".
avg_time_service_by_city = df.groupby("City")["years_of_service"].mean() #calcula a média de anos de serviço para cada cidade.
print(f"\nMédia de tempo de serviço dos empregados por cidade \n{avg_time_service_by_city}")

# Atividade 5 - Faça a porcentagem de quantos empregados ainda trabalham na empresa (use a coluna `LeaveOrNot` do dataframe)
total_employees = df["LeaveOrNot"].count() #conta o número de funcionários que deixaram e os que não deixaram a empresa, selecionando o maior número de cada.
still_working = df["LeaveOrNot"].value_counts().values[0] #número de funcionários que ainda estão trabalhando na empresa
percent_employees = still_working / total_employees * 100 #converte a proporção em uma porcentagem
print(f"\nA porcentagem de empregados que continuam trabalhando na empresa é de {percent_employees:.2f}%")

# Atividade 6 - Conte quantos empregados existem por `PaymentTier`
employees_paymentTier = df["PaymentTier"].count() #conta quantos funcionários estão em cada nível de pagamento e seleciona o maior entre eles.
print(f"\nO número de empregados é de {employees_paymentTier}\n")

# Atividade 7 - Substitua os valores da coluna `EverBenched` para `True` ou `False`
df["EverBenched"].replace({"Yes": True, "No": False}, inplace=True) #convertendo os valores
print(df["EverBenched"].head())

# Atividade 8 - Crie um gráfico de pizza com o resultado da coluna `EverBenched` e outro com `LeaveOrNot`
everbenched_counts = df["EverBenched"].value_counts()
leaveornot_counts = df["LeaveOrNot"].value_counts()

##gráfico dos everbenched
labels = ["No", "Yes"] #labels é utilizado para melhorar o layout do gráfico.
everbenched_counts.plot(kind='pie', labels=labels, autopct='%1.1f%%', colors=['Gray', 'Indigo'], title='Funcionários Desligados da Empresa')
plt.show()

##gráfico dos Leave or Not
labels = ["Funcionários Presentes na Empresa", "Funcionários Desligados da Empresa"]
leaveornot_counts.plot(kind='pie', labels=labels, autopct='%1.1f%%', colors=['Gray', 'Indigo'], title='Funcionários Presentes e Desligados da Empresa')
plt.show()
69 changes: 69 additions & 0 deletions exercicios/para-sala/aula.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(r"C:\Users\flavi_000\OneDrive\Flavienne\Cursos\Reprograma\S12 - 17.08\on33-python-s10-pandas-numpy-II\material\desenvolvimento_paises.csv")

# print(df.describe()) # faz uma descrição matemát. dos dados, um resumo estatístico rápido de um DataFrame, media, desvio padrão, contagem de linhas em cada coluna
# print(df.info()) #fornece um resumo rápido e conciso das principais características numéricas dos seus dados
# print(df["AveragScore"].value_counts()) #aplicado apenas em uma coluna, mostra quantas vezes cada valor aparece nos seus dados.

# print(df.fillna(0, inplace=True))#o resultado deste dataframe será alterado no original
# print(df.isnull().sum()) #isnull() cria um DataFrame com a mesma forma que o original, mas com valores booleanos indicando onde há valores nulos.#sum() conta quantos valores True (nulos) há em cada coluna.usada para contar a quantidade de valores nulos (missing values) em cada coluna desse DataFrame
# print(df.duplicated().sum()) #calcula e retorna o número total de linhas duplicadas com true ou false presentes em um DataFrame.
# print(df.drop_duplicates(inplace=True))#deletar os valores duplicados
# print(df.duplicated().sum())#deletar os valores duplicados

#Item 2:Encontre os pais que têm o maior e o menor valor para a coluna SafetySecuritye imprima a diferença entre eles. (alterar tudo p inglês depois)
# 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 máximo esteja presente
# linha_maior_vaylor_security = df[df["SafetySecurity"] == pais_maior_security_value] #filtro, retorne as linhas desse dataframe
# print(linha_maior_vaylor_security)

# #outra forma de fazer o item 2:
# #retorna o index do primeiro valor máximo encontrado
index_greater_value = df["SafetySecurity"].idxmax()
# #retorna dados da linha por index
# print(df.iloc[index_greater_value])# o loc encontra dados na linha que vc escolheu

#Ativ 3: Use o apply() para criar uma coluna nova onde a média de todas as colunas - menos a Country- quando: Maior que 80 o valor seja "Desenvolvido", entre 50 e 70 seja "Em desenvolvimento" e menor que 60 seja "Subdesenvolvido"
# criar uma coluna nova
columns_name = df.columns

print(columns_name)
columns_name = columns_name.drop(labels= "Country") #deletando a coluna Country

df["Média"] = df[columns_name].mean(axis=1) #executa apenas na linha 1

def categorizar_valores(valor):
if valor > 80:
return "Desenvolvido"
if valor < 70 and valor >=50:
return "Em desenvolvimento"
if valor < 60:
return "Não Categorizado"

df["Categoria Desenvolvimento"] = df["Média"].apply(categorizar_valores)
#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")

plt.show()
#Filtre os dados onde o PersonelFreedom seja inferior a 30. Se existir
personel_freedom_filter = df.where((df["PersonelFreedom"] <= 30) & (df["Categoria_Desenvolvimento"] == "Subdesenvolvido"))

personel_freedom_filter.dropna(inplace=True)

print(personel_freedom_filter.info())