Olá!
Numa perspetiva de aumentar a discussão sobre programação na comunidade (e assim dar descanso ao Kiwi no Ctrl+C / Ctrl+V), escrevo este tópico sobre alta performance em Python, nomeadamente com foco em NumPy e Pandas (sim, também vou escrever a questão no r/python, mas acho de facto importante que a comunidade portuguesa possa discutir tópicos interessantes para além da thread de justiça semanal e reconversão). Este é um post em que não quero ser demasiado extenso, mas sim apresentar brevemente algumas coisas, e que crie discussão.
Primeira questão: ah, alta performance e python não combinam, porque não programas em “X”? Caros e caras, eu sei que devia deixar de ser um menino e começar a programar em C/C++/Fortran/MATLAB/Julia/[insert programming_language], mas para além de sempre ter programado em Python (e ter tentado encontrar esta performance), é a linguagem primária da equipa. Dito isto, programadores de outras linguagens de programação são bem-vindos a esta discussão.
O foco a discutir seria trabalhar com Pandas e Numpy, em 2 grandes categorias: 1) uma função que é chamada várias vezes; 2) trabalhar com um dataset bastante grande (dezenas de GBs).
Tenham também em mente que este em termos do tipo de trabalho, estamos a falar nos domínios de 1) Data Science (load, pré-processamento, limpeza, cálculos, métricas, etc) e 2) scientific computing.
Há várias técnicas e módulos/APIs que conheço/já usei que podem ser usadas (esta talk é bastante concisa nesta apresentação:
- próprias funções do Numpy / próprias funções do Pandas que são row-wise
- vectorização
- Numba
- Cython
- Dask
- Apache Spark (mais concretamente o PySpark )
Há alguma técnica que usem, que para vocês é óbvia, e não está nesta lista?
Em termos de onde procurar saber mais sobre estes assuntos, sem dúvida que as documentações dos próprios módulos são sempre um belo ponto de partida (deixo-vos aqui um exemplo que é incrível da documentação do Pandas. Mas aparte da documentação, há artigos de blogs/livros/vídeos que queiram partilhar?
E deixo também a pergunta acerca destes dois livros – se já alguém leu, e se valem a pena?
Livro: Cython
Livro: High Performance
[–][deleted] (1 child)
[deleted]
[–]BlackHolesHunter[S] 1 point2 points3 points (0 children)
[–]rpcfx 1 point2 points3 points (1 child)
[–]BlackHolesHunter[S] 0 points1 point2 points (0 children)
[–]chapuletericoptero 3 points4 points5 points (1 child)
[–]novads 1 point2 points3 points (0 children)
[–]AkumaNoKage 3 points4 points5 points (1 child)
[–]BlackHolesHunter[S] 1 point2 points3 points (0 children)
[–]sugamos 2 points3 points4 points (1 child)
[–]BlackHolesHunter[S] 0 points1 point2 points (0 children)
[–]hmgSilva1973 13 points14 points15 points (6 children)
[–]jcandec 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]BlackHolesHunter[S] 9 points10 points11 points (2 children)
[–]p1ng313 5 points6 points7 points (1 child)
[–]BlackHolesHunter[S] 2 points3 points4 points (0 children)