Ir para conteúdo
Fórum Script Brasil
  • 0

Trabalho com dados csv


Wilson Avila

Pergunta

Sou iniciante em programação e preciso separar uma série de dados importados do Excel (csv), os mesmos estão em 4 colunas e centenas de linhas.  Preciso identificar as linhas que tenham a coluna de dados em comum e separa-las em outra 'lista'. Tipo um filtro!! Para depois usar estes dados para fazer cálculos estatísticos.

Qual seria a sugestão de ferramenta ou formas de chegar a essa lista de dados?

Editado por Wilson Avila
Erro de digitação
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0
4 horas atrás, ArteEN disse:

deu um trabalhinho chegar nisso aqui


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt 

label = ['velocidade', 'classe', 'Faixa', 'dia' , 'hora']
data = [ 
        [106, 1, 2, 5, 0], 
        [87, 1, 3, 5, 0], 
        [78, 1, 3, 5, 1], 
        [74, 1, 3, 5, 1], 
        [75, 1, 3, 5, 1], 
        [88, 1, 2, 5, 2], 
        [130, 1, 2, 5, 2], 
        [76, 1, 2, 5, 3], 
        [77, 1, 3, 5, 3]
]

df = pd.DataFrame(data, columns=label)

d5 = df[label[3]]==5
media = df[d5].loc[:, (label[0], label[4])].groupby(label[4])

ax = media.mean().plot()
plt.xticks(range(4), range(4))                                                                                         
plt.show()

 

Deixei assim!! São 952mil linhas para tratar!!

mport pandas as pd
import numpy as np
import matplotlib.pyplot as plt

pd.read_csv
df = pd.read_csv("transito8.csv")

label = ['velocidade', 'classe', 'Faixa', 'dia' , 'hora']

d5 = df[label[3]]==5
media = df[d5].loc[:, (label[0], label[4])].groupby(label[4])

ax = media.mean().plot()
plt.title('Velocidade Média do Dia')
plt.xticks(range(24), range(24))
plt.show()

 

Ficou show!!

Tem como ficar em barras e o valor aparecer no topo delas?

Link para o comentário
Compartilhar em outros sites

  • 0
1 hora atrás, ArteEN disse:

 

tem, para grafico com barra só usar


ax = media.mean().plot.bar()

 

para colocar os numeros vai ser um pouco mais complicado, veja este video

 

d5 = df[label[3]]==5
media = df[d5].loc[:, (label[0], label[4])].groupby(label[4])

for barra in (d5,media):
    for b in barra.get_media:
        plt.text(b.get_x() + 0.3,
                b.get_height()+ 0.2,
                int (b.get_height()))

Desculpe incomodar novamente, mas o segundo for está dando erro!!

 

Link para o comentário
Compartilhar em outros sites

  • 1

você teria que adaptar algumas coisas, já que o video não foi feito com pandas em mente

 

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt 

label = ['velocidade', 'classe', 'Faixa', 'dia' , 'hora']
data = [ 
        [106, 1, 2, 5, 0], 
        [87, 1, 3, 5, 0], 
        [78, 1, 3, 5, 1], 
        [74, 1, 3, 5, 1], 
        [75, 1, 3, 5, 1], 
        [88, 1, 2, 5, 2], 
        [130, 1, 2, 5, 2], 
        [76, 1, 2, 5, 3], 
        [77, 1, 3, 5, 3]
]

df = pd.DataFrame(data, columns=label)

d5 = df[label[3]]==5
media = df[d5].loc[:, (label[0], label[4])].groupby(label[4])

ax = media.mean().plot.bar()
plt.xticks(range(4), range(4))

for x,y in enumerate(media.mean()[label[0]]):                                                                          
    plt.text(x - .2,
             y + .7,
             f'{y:0.2f}')

plt.show()

 

Link para o comentário
Compartilhar em outros sites

  • 0
3 minutos atrás, ArteEN disse:

isso é só mais um plt.text no grafico, ou você pode alterar o titulo do grafico

Não me fiz entender!! No caso a entrada de dados via input, só completar algo já escrito, como pedir  hora e induzir que seja hora fechada tipo __:00h. Lembro de ter visto algo parecido em C++, mas não achei nada...

Link para o comentário
Compartilhar em outros sites

  • 1

você pode fazer um input no terminal, e adicionar em qualquer lugar no grafico com

texto = input()
plt.text(x,
         y,
         f'{texto}:00hrs')

claro que você tem que levar em conta que isso deve ser feito antes de aparecer a janela do grafico, pois aqui comigo,  a janela do grafico trava a entrada do terminal

Link para o comentário
Compartilhar em outros sites

  • 0
40 minutos atrás, ArteEN disse:

você pode fazer um input no terminal, e adicionar em qualquer lugar no grafico com


texto = input()
plt.text(x,
         y,
         f'{texto}:00hrs')

claro que você tem que levar em conta que isso deve ser feito antes de aparecer a janela do grafico, pois aqui comigo,  a janela do grafico trava a entrada do terminal

Está assim!     Que hora pretende passar pela Free Way?__:00 horas  23          , tem como preencher a hora no lugar dos traços e não depois como está?

Link para o comentário
Compartilhar em outros sites

  • 1

acho que com curses é possivel

o input do python não permite essa edição de mensagem durante a entrada

você tambem pode colocar o campo de entrada dentro do grafico, isso já é um pouco complicado de explicar, eu já não vou saber

Link para o comentário
Compartilhar em outros sites

  • 0

fala das horas que ficam no eixo? como o grafico é em barra, ele automaticamente gira as letras, bem você pode procurar no site do matplotlib, lá tem todos os exemplos que você pode necessitar

 

Editado por ArteEN
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...