Excel com Python

977 views
Skip to first unread message

Lucas Mascia

unread,
Oct 24, 2015, 8:03:48 PM10/24/15
to Python Brasil
Olá!

Gostaria de saber se há um modulo/biblioteca bom para filtrar dados de uma extensa tabela de excell (300x15)

Por ex.:  Filtrar uma tabela por clientes A e em seguida filtrar por fornecedor B: Quantas "linhas" de info eu tenho?

att

Fabio C. Barrionuevo da Luz

unread,
Oct 24, 2015, 8:27:34 PM10/24/15
to python...@googlegroups.com
Lucas, veja se alguma dessas atende as suas necessidades:

http://www.python-excel.org/

https://www.enthought.com/products/pyxll/


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Fábio C. Barrionuevo da Luz
Acadêmico de Sistemas de Informação na Faculdade Católica do Tocantins - FACTO
Palmas - Tocantins - Brasil - América do Sul


Blog colaborativo sobre Python e tecnologias Relacionadas, mantido totalmente no https://github.com/pythonclub/pythonclub.github.io .

Todos são livres para publicar. É só fazer fork, escrever sua postagem e mandar o pull-request. Leia mais sobre como publicar em README.md e contributing.md.
Regra básica de postagem:
"Você" acha interessante? É útil para "você"? Pode ser utilizado com Python ou é útil para quem usa Python? Está esperando o que? Publica logo, que estou louco para ler...

Samuel Sampaio

unread,
Oct 24, 2015, 9:28:43 PM10/24/15
to python...@googlegroups.com
Fala Lucas, 

Cara criei hoje um scriptizinho com o python-excel, nele as libs que le em escreve são separadas.

Segue um exemplo simples de leitura no meu gist: https://gist.github.com/samukasmk/b7fd490fdd97995df207

Abs,
Samuel

Lucas Mascia

unread,
Oct 26, 2015, 9:21:20 AM10/26/15
to Python Brasil
vlw cara, mas estou buscando algo para filtrar as infos de um excel :/

Fred Chevitarese

unread,
Oct 26, 2015, 10:54:07 AM10/26/15
to python-brasil
Você não consegue exportar este arquivo para csv e importar num database não? 
Acho que o resultado final, em termos de performance e maneiras de manipular os dados serão muito melhores. 
Também, você poderá exportar os dados filtrados para csv e abrir no excel do mesmo jeito. 

Enfim, achei isso no stack, segue a mesma linha do que estou falando... 




Abraço!



"
São os homens que mais me surpreendem na humanidade. Porque perdem a saúde para juntar dinheiro, depois perdem dinheiro para recuperar a saúde. E por pensarem ansiosamente no futuro, esquecem do presente de tal forma que acabam por não viver nem o presente nem o futuro. E vivem como se nunca fossem morrer e morrem como se nunca tivessem vivido” - Dalai Lama.
"

Fred Chevitarese - GNU/Linux


Sinval Júnior

unread,
Oct 26, 2015, 11:52:55 AM10/26/15
to python...@googlegroups.com
Tem o pypandas [1] uma biblioteca de  Data Analysis. Ou seja irá conseguir fazer count, joins, filter, split, etc... Tudo com uma velocidade incrível mesmo com arquivos grandes.  





Ao encaminhar esta mensagem, por favor:
1 - Apague meu endereço eletrônico;
2 - Encaminhe como Cópia Oculta (Cco ou BCc) aos seus destinatários. Dificulte assim a disseminação de vírus, spams e banners.

#=================================================================+
#!/usr/bin/env python
nome = 'Sinval Júnior'
email = 'sinvalju arroba gmail ponto com'
print nome
print email
#==================================================================+

--

Lucas Mascia

unread,
Oct 26, 2015, 2:18:06 PM10/26/15
to Python Brasil
O download do arquivo é feito automaticamente em .xlsx. Não tem como alterar a extensão no download.

Mas obrigado pelo link, sou bem inciiante em programação python mas irei dar uma olhada para ver se consigo extrair algo.

Lucas Mascia

unread,
Oct 26, 2015, 2:18:06 PM10/26/15
to Python Brasil
Obrigado pelo link. Darei uma olhada a analisar se consigo extrair e utilizar o conteúdo

Ailton Caetano

unread,
Oct 26, 2015, 3:27:35 PM10/26/15
to python...@googlegroups.com
Lucas,

  a biblioteca "openpyxl" é voltada a manipulação de arquivos .xlsx e sua documentação é bem tranquila. Veja os detalhes em https://openpyxl.readthedocs.org/en/latest/.

  Concordo com o Fred. Quem criou esse formato de exportação na ferramenta deveria repensar seriamente o seu uso. Acho que não vale a pena você instalar um banco de dados só para isso, já que são só 300 entradas com 15 colunas, mas o desenvolvedor poderia adicionar outros formatos.


[]'s Ailton Caetano


Em 26 de outubro de 2015 15:22, Lucas Mascia <lucas...@gmail.com> escreveu:
Obrigado pelo link. Darei uma olhada a analisar se consigo extrair e utilizar o conteúdo
--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar

<*> Para visitar o site do grupo na web, acesse:
    http://groups.google.com/group/python-brasil

<*> Para sair deste grupo, envie um e-mail para:
    python-brasi...@googlegroups.com

---
Você está recebendo esta mensagem porque se inscreveu no grupo "Python Brasil" dos Grupos do Google.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.

Lucas Mascia

unread,
Oct 26, 2015, 3:35:01 PM10/26/15
to Python Brasil
Já que tantos falam do openpyxl e quase ngm falou do Pandas, acho que vou migrar mais meu foco nesse doc hahah

mas realmente... alem de a tabela ser em .xlsx ... elá é um tanto desformatada e bagunçada.. tem coluna que usa a mesma palavra de duas formas diferente.. miusculo minusculo...


OUTRA PERGUNTA.. é sobre caracteres especiais no python.. por exemplo, não consigo usar acentos ou 'ç' que aparece um erro... tentei colocar 

# -*- coding: iso-8859-1 -*-
ou
# -*- coding: utf-8 -*-

mas ainda assim voltou um caractere esquisito ao invés dos desejados, alguma ajuda ?

Fabio C. Barrionuevo da Luz

unread,
Oct 26, 2015, 3:51:34 PM10/26/15
to python...@googlegroups.com
Lucas, em relação aos caracteres especiais, Python3 resolveu esse problema tornando todas as strings em UNICODE [1] por padrão, ou seja, isso é um problema só de Python2. Então evite usar Python2 a todo custo, porque Python2 é antigo e não será atualizado. Use Python3 em vez de Python2.

Dito esto, se você estiver utilizando Windows, alguns caracteres podem aparecer errado no CMD do Windows, porque a Microsoft aparentemente não se importa com que usa o CMD.



Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Lucas Mascia

unread,
Oct 26, 2015, 3:56:05 PM10/26/15
to python...@googlegroups.com
​Fabio,

Eu rodo meus scripts no PowerShell, não sei se seria o mesmo que CMD. Mas vou migrar para o P3 o mais rapido possivel.


obrigado pela ajuda

Lucas R. Mascia
 
 
"It is not the strongest of the species that survives, nor the most intelligent that survives. It is the one that is most adaptable to change."  - Darwin.

Você recebeu essa mensagem porque está inscrito em um tópico no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/python-brasil/x92RhYYopCs/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para python-brasi...@googlegroups.com.

Lucas de Biaggi Januário

unread,
Oct 26, 2015, 4:07:18 PM10/26/15
to python...@googlegroups.com

Bem não sei se mtos conhecem mais uso bastante o pacote xlrd para ler documentos xls gigantes (500 mil linhas em média)  sem nenhum Problema ele possui ótimos filtros.

Abraços,
Lucas

Lucas Mascia

unread,
Oct 26, 2015, 4:12:27 PM10/26/15
to Python Brasil
Lucas,

Os arquivos do Excel que estou usando são em extensão .xlsx 
Se não me engane (ou ao menos é o que tem escrito no site do pacote xlrd  -  http://www.python-excel.org/) é que este pacote são para versões .xls

Mesmo assim, obrigado pelo post!

Tiago Guimarães

unread,
Oct 27, 2015, 8:41:42 AM10/27/15
to Python Brasil
Tb voto no pandas.

@Lucas, já passei por isso, e no fim das contas tive a impressão de que o pandas é a melhor saída.

Essencialmente, vc terá que:
  1. Instalar o pandas [Link]
  2. Executar o comando pandas.read_excel, para criar um objeto de tabela (chamado DataFrame) [Link]
  3. Filtrar a tabela, ou fazer qualquer outra operação que te interesse [Link]
  4. Exportar de volta para o Excel usando o comando DataFrame.to_excel [Link]
Se você costuma trabalhar com arquivos Excel ou CSV para análise, e não tem interesse em persistir dados transitórios, recomendo usar o pandas ao invés de um banco de dados. O pandas seria uma opção mais rápida e objetiva (você não precisaria "sair" do stack de python para o stack de banco de dados, e voltar novamente).

Lucas de Biaggi Januário

unread,
Oct 27, 2015, 9:26:13 AM10/27/15
to python...@googlegroups.com
Então caro chará (escrevi certo?),

Reveja bem, não conheço esse site excel mas uso essa lib pra tudo que é problema com excel e sempre resolveu.

https://pypi.python.org/pypi/xlrd

obs: eu processo arquivos de xlsx

Abraços,
Lucas

Lucas de Biaggi Januário

unread,
Oct 27, 2015, 9:32:27 AM10/27/15
to python...@googlegroups.com
Opa, faltou uma parte Difícil redigir do celular

Me desculpe,

A informação do site é da versão 0.7.X de 2012... a versão do pypi está na 0.9.4 que é totalmente diferente,

Abraços,
Lucas

Lucas de Biaggi Januário

unread,
Oct 27, 2015, 10:21:36 AM10/27/15
to python...@googlegroups.com
Segue exemplo de uso na 0.9.3 e 0.9.4, lembrando que tem uma utilidade nova mto interessante na 0.9.4 que procura as rows por você que é a get_rows()

o exemplo usando a versão 0.9.3, (versão que utilizo num RPi)

In [1]: import xlrd

In [2]: a = xlrd.open_workbook("teste.xlsx")

In [3]: sheet = a.sheet_by_name("Sheet1")

In [4]: for i in range(1,3):
   ....:    print(sheet.row_values(i))
   ....:
['teste', '00.00.0000', '00.00.0000']
['teste2', '00.00.0000', '00.00.0000']

exemplo 0.9.4


In [1]: import xlrd

In [2]: a = xlrd.open_workbook("teste.xlsx")

In [3]: sheet = a.sheet_by_name("Sheet1")

In [4]: for i in sheet.get_rows():
   ...:     print(i)
   ...:
[text:'Usuário', text:'Válido desde', text:'Válido até']
[text:'teste', text:'00.00.0000', text:'00.00.0000']
[text:'teste2', text:'00.00.0000', text:'00.00.0000']
[text:'teste3', text:'00.00.0000', xldate:42242.0]
[text:'teste4', text:'00.00.0000', xldate:42275.0]
[text:'teste5', text:'00.00.0000', text:'00/00/0000']
[text:'teste6', text:'00.00.0000', text:'30.06.2015']
[text:'teste7', text:'00.00.0000', text:'00/00/0000']


Abraços,
Lucas


Reply all
Reply to author
Forward
0 new messages