1
resposta

[Dúvida] Python para Data Science - Desafio Aula 3 - Questões 9 e 10

Eu estava comparando as minhas respostas com a do instrutor do desafio na aula 3 e todas as outras questões estão semelhantes, tirando o uso de list comprehension, uma função zip(), detalhes nesse nível, mas as questões 9 e 10 ficaram muito diferentes e fiquei me perguntando se a maneira que fiz impactaria em algo, como processamento ou algo nesse sentido.


Questão 9

Uma empresa possui filiais espalhadas nos estados da região sudeste do Brasil. Em uma das tabelas de cadastro das filiais, há uma coluna contendo a informação de qual é o estado a que pertence: estados = ['SP', 'ES', 'MG', 'MG', 'SP', 'MG', 'ES', 'ES', 'ES', 'SP', 'SP', 'MG', 'ES', 'SP', 'RJ', 'MG', 'RJ', 'SP', 'MG', 'SP', 'ES', 'SP', 'MG']

A empresa sempre está abrindo novas filiais, de modo que a tabela está constantemente recebendo novos registros e o gestor gostaria de possuir a informação atualizada da quantidade de filiais em cada estado. A partir da coluna com a informação dos estados, crie um dicionário usando dict comprehension com a chave sendo o nome de um estado e o valor sendo a contagem de vezes em que o estado aparece na lista.

Questão 10

Nessa mesma tabela de cadastro de filiais, há uma coluna com as informações da quantidade de funcionários e o gestor gostaria de ter um agrupamento da soma de funcionários para cada estado. As informações contidas na tabela são:

funcionarios = [('SP', 16), ('ES', 8), ('MG', 9), ('MG', 6), ('SP', 10), ('MG', 4), ('ES',9), ('ES', 7), ('ES', 12), ('SP', 7), ('SP', 11), ('MG',8), ('ES',8), ('SP',9), ('RJ', 13), ('MG', 5), ('RJ', 9), ('SP', 12), ('MG', 10), ('SP', 7), ('ES', 14), ('SP', 10), ('MG', 12)]

A partir da lista de tuplas, crie um dicionário em que as chaves são os nomes dos estados únicos e os valores são as listas com o número de funcionários referentes ao estado. Crie também um dicionário em que as chaves são os nomes dos estados e os valores são a soma de funcionários(as) por estado.


Minhas Soluções

9
estados = ['SP', 'ES', 'MG', 'MG', 'SP', 'MG', 'ES', 'ES', 'ES', 'SP', 'SP', 'MG', 'ES', 'SP', 'RJ', 'MG', 'RJ', 'SP', 'MG', 'SP', 'ES', 'SP', 'MG']

estados_dict = {key : estados.count(key) for key in set(estados)}

estados_dict
10
funcionarios = [('SP', 16), ('ES', 8), ('MG', 9), ('MG', 6), ('SP', 10), ('MG', 4), ('ES',9), ('ES', 7), ('ES', 12), ('SP', 7), ('SP', 11), ('MG',8), ('ES',8), ('SP',9), ('RJ', 13), ('MG', 5), ('RJ', 9), ('SP', 12), ('MG', 10), ('SP', 7), ('ES', 14), ('SP', 10), ('MG', 12)]

estados_key = list(set([key[0] for key in funcionarios]))

estados_func = {}
estados_func_total = {}

for key in estados_key:
    lista_func = [qtd[1] for qtd in funcionarios if qtd[0] == key]
    estados_func[key] = lista_func
    estados_func_total[key] = sum(lista_func)

print(estados_func)
print(estados_func_total)

Soluções Desafio

9
# Armazenando os estados sem repetição de valor
estados_unicos = list(set(estados))

# Criando uma lista de listas com valores repetidos de cada estado
lista_de_listas = []
for estado in estados_unicos:
    lista = [uf for uf in estados if uf == estado]
    lista_de_listas.append(lista)
print(lista_de_listas)

# Criando um dicionário em que a chave é o nome de cada estado único e o valor é a contagem de elementos
contagem_valores = {estados_unicos[i]: len(lista_de_listas[i]) for i in range(len(estados_unicos))}
print(contagem_valores)
10
# Armazenando os estados sem repetição de valor
estados_unicos = list(set([tupla[0] for tupla in funcionarios]))

# Criando uma lista de listas com valores de funcionários de cada estado
lista_de_listas = []
for estado in estados_unicos:
    lista = [tupla[1] for tupla in funcionarios if tupla[0] == estado]
    lista_de_listas.append(lista)
print(lista_de_listas)

# Criando um dicionário com dados agrupados de funcionário por estado
agrupamento_por_estado = {estados_unicos[i]: lista_de_listas[i] for i in range(len(estados_unicos))}
print(agrupamento_por_estado)

# Criando um dicionário com a soma de funcionários por estado
soma_por_estado = {estados_unicos[i]: sum(lista_de_listas[i]) for i in range(len(estados_unicos))}
print(soma_por_estado)

Obrigado desde já!

1 resposta

Oii, Paulo! Tudo bem?

É muito legal acompanhar você praticando as atividades e se desenvolvendo, parabéns! Não tem problema, testei o seu código e o retorno está correto. Na programação temos essa possibilidade, resolver os problemas de diversas formas. Uma vez mais robustas outras menos robustas. A resolução do Instrutor é interessante para você expandir ainda mais os conhecimentos, conhecendo outras formas de realizar.

Continue se dedicando aos estudos e qualquer dúvida, compartilhe no fórum.

Até mais, Paulo!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado!