Jump to content

DIFICULDADE COM FUNÇÃO EM PYTHON USANDO GOOGLE COLAB


O_Aprendiz

Postagens Recomendadas

Estou na fase inicial dos meus estudos sobre análise de dados e nesse módulo eu não consegui progredir. estou tendo muita dificuldade em  extrair os dados como solicitado no exercício, se alguém puder me ajudar agradeço muito. Estou usando Google Colab.

 

%%writefile carros.csv

id,valor_venda,valor_manutencao,portas,pessoas,porta_malas

1,vhigh,med,2,2,small

2,med,vhigh,2,2,small

3,low,vhigh,2,2,small

4,low,high,2,2,small

5,low,high,2,2,small

6,low,high,4,4,big

7,low,high,4,4,big

8,low,med,2,2,small

9,low,med,2,2,small

10,low,med,2,2,small

11,low,med,4,4,big

12,low,low,2,2,small

13,low,low,4,4,small

14,low,low,4,4,med

 

Complete a função abaixo para extrair uma coluna do arquivo csv em uma lista. Os elementos devem ter o tipo de dado correto:

 

def extrai_coluna_csv(nome_arquivo: str, indice_coluna: int, tipo_dado: str):

  coluna = []

  # leia o arquivo com o comando 'with' utilizando o parametro 'nome_arquivo'

  # extraia a coluna do arquivo utilizando o parametro 'indice_coluna'

  # use a estrutura de decisão if/elif/else para fazer a conversão do tipo de dados utilizando o parametro 'tipo_dado'

  return coluna

 

Você pode testar a função com os códigos abaixo:

# extrair a coluna valor_venda

valor_venda = extrai_coluna_csv(nome_arquivo='./carros.csv', indice_coluna=1, tipo_dado='str')

print(valor_venda) # deve retornar ['vhigh', 'med', 'low', ...]

 

# extrair a coluna pessoas

pessoas = extrai_coluna_csv(nome_arquivo='./carros.csv', indice_coluna=4, tipo_dado='int')

print(pessoas) # deve retornar [2, 2, 2, ...]

  • Curtir 1
Link to comment
Compartilhe em outros sites

  • Pessoal da TecnoSpeed

Olá tudo bem?

Uma das maneiras de ler um arquivo CSV é assim:

import csv

with open('carros.csv') as csv_carros:
        carros = csv.reader(csv_carros)
        lista = []
        for coluna in carros:
            lista.append(coluna)
lista

Deste modo a variável lista terá armazenado todo o conteúdo do CSV

Obs: Como está utilizando o COLAB lembre-se de realizar o upload do arquivo.csv dentro do COLAB, para realizar isso, basta clicar em image.pnglocalizado no lado esquerdo da tela. Depois em image.png e selecionar o arquivo CSV.

 

Segue abaixo a maneira com a qual eu resolveria este exercício.

import csv

def extrai_coluna_csv(nome_arquivo: str, indice_coluna: int, tipo_dado: str):
    #Extrair os dados do arquivo CSV
    with open(nome_arquivo) as csv_carros:
        carros = csv.reader(csv_carros)
        lista = []
        for coluna in carros:
            lista.append(coluna[indice_coluna])
            
        #Armazenar os dados do arquivo CSV em um array e remover o 1° item (1° item é o nome da coluna)
        lista = lista[1:]    
    
    #Tratativa de erro. Podendo ser feita de diversas outras maneiras.
    try:
        # Estruturas de condição para verificar o ``tipo_dado`` 
        if tipo_dado == 'str':
            # List Comprehension para alterar o tipo do dado, esta parte existem diversas maneiras de fazer
            lista = [str(item) for item in lista]
        elif tipo_dado == 'int':
            lista = [int(item) for item in lista]
        # Caso tipo de dado não seja str ou int, retorna a mensagem abaixo.
        else:
            return 'Tipo de dado invalido'
    #Caso codigo não consiga alterar algum tipo de dado ele retorna a mensagem abaixo
    except:
        return 'Tipo de dado não corresponde a da coluna'
    
    #Retorna a lista com os valores
    return lista

Espero que ajude! caso fique com dúvida em alguma parte do código, fico a disposição para auxiliar em quaisquer dúvidas que possam surgir. 

Grande abraço! 👍

  • Curtir 1
Link to comment
Compartilhe em outros sites

Obrigado pela resposta! Acabei resolvendo com:

 

def extrai_coluna_csv(nome_arquivo: str, indice_arquivo: int, tipo_dado: str):

  coluna=[]

  with open(file='./carros.csv', mode='r', encoding='utf8') as fp:

    linha=fp.readline()

    linha=fp.readline()

 

    while linha:

      linha_separada=linha.split(sep=',')

      item_desejado=linha_separada[indice_arquivo]

 

      if type(tipo_dado) == 'str':

        item_desejado = str(item_desejado)

      if type(tipo_dado) == 'int':

        item_desejado = int(item_desejado)    

      if type(tipo_dado) == 'float':

        item_desejado = float(item_desejado)        

      if type(tipo_dado) == 'bool':

        item_desejado = bool(item_desejado)

 

      coluna.append(item_desejado)

      linha=fp.readline()

 

    return coluna

  • Curtir 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...