1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

[Python] Importar CSV para banco Pandas sem converter string para tuple

Discussão em 'Python' iniciado por Stack, Setembro 9, 2024.

  1. Stack

    Stack Membro Participativo

    Carrego um arquivo CSV com mais de 3 milhões de linhas e cerca de 770 Mb, utilizo o pandas e preciso converter uma coluna que está em formato string. Abaixo a coluna 'lbBins', que ao ler do CSV veio em formato string (qual o melhor padrão para salvar o dado no CSV?), e as colunas: lnBin1 à lbBin5 resultantes da função "reshapeBin' mais abaixo.


    tempFrame[['lnBins','lnBin1', 'lnBin21, 'lnBin3', 'lnBin4', 'lnBin5']].tail(2)

    2445169 (0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, ... (0, 1, 1, 0, 0) (0, 1, 0, 1, 1) (1, 1, 0, 0, 0) (1, 1, 1, 1, 1) (0, 1, 1, 0, 1)
    2445170 (0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, ... (0, 1, 1, 0, 0) (0, 1, 0, 1, 1) (1, 1, 0, 0, 0) (1, 1, 1, 1, 1) (0, 1, 0, 1, 1)


    Como podem ver na função 'reshapeBin' preciso realizar várias funções:


    eval()
    np.array()
    .reshape(5,5)
    [num]
    .tolist()
    tuple()


    Uso o eval() para converter a linha da tabela, convertendo de string para tuple, depois converto para array e faço o reshape, pego linha por linha do array em [num], converto para lista e depois converto para tuple visando salvar na tabela, para poder salvar a tabela no CSV novamente.

    Função, porém acho que posso melhorar algo mais para ser mais rápido o processamento:


    def reshapeBin(x, num):
    return tuple(np.array(eval(x)).reshape(5,5)[num].tolist())

    for n in range(0,5):
    tempFrame['lnBin'+str(n+1)]=tempFrame['lnBins'].apply(reshapeBin, num=n)
    print('finalizei o ', n)


    Provavelmente a forma como estou salvando do pandas para csv não seja a melhor opção, pelo menos o formato do dado: na tabela tuple e para o csv em string, e vice versa.

    Continue reading...

Compartilhe esta Página