Baixe o app para aproveitar ainda mais
Prévia do material em texto
Python: A Arma Secreta do Cientista de Dados Rodrigo Dias Arruda Senra rsenra@acm.org Apenas um rapaz latino americano... Apenas um rapaz latino americano... Apenas um rapaz latino americano... • Engenheiro de Computação Grad-MSc-PhD IC-Unicamp Apenas um rapaz latino americano... • Engenheiro de Software • GPr Sistemas (11 anos) • HI Tecnologia (5 anos) • Engenheiro de Computação Grad-MSc-PhD IC-Unicamp Apenas um rapaz latino americano... • Engenheiro de Software • GPr Sistemas (11 anos) • HI Tecnologia (5 anos) • Professor Universitário - PUC-Campinas (2 anos) • Engenheiro de Computação Grad-MSc-PhD IC-Unicamp Apenas um rapaz latino americano... • Engenheiro de Software • GPr Sistemas (11 anos) • HI Tecnologia (5 anos) • Professor Universitário - PUC-Campinas (2 anos)• Especialista - globo.com (2 anos) • Engenheiro de Computação Grad-MSc-PhD IC-Unicamp Apenas um rapaz latino americano... • Engenheiro de Software • GPr Sistemas (11 anos) • HI Tecnologia (5 anos) • Professor Universitário - PUC-Campinas (2 anos)• Especialista - globo.com (2 anos)• Cientista Pesquisador - EMC2 • Engenheiro de Computação Grad-MSc-PhD IC-Unicamp Apenas um rapaz latino americano... • Engenheiro de Software • GPr Sistemas (11 anos) • HI Tecnologia (5 anos) • Professor Universitário - PUC-Campinas (2 anos)• Especialista - globo.com (2 anos)• Cientista Pesquisador - EMC2 • Engenheiro de Computação Grad-MSc-PhD IC-Unicamp • Entusiasta de FLOSS (atuante na comunidade Python desde 2000) Quem está aí ? Quem está aí ? • Estudantes ? Quem está aí ? • Estudantes ? • Profissionais ? Quem está aí ? • Estudantes ? • Profissionais ? • Professores ? Quem está aí ? • Estudantes ? • Profissionais ? • Professores ? • Palestrantes ? Quem está aí ? • Estudantes ? • Profissionais ? • Professores ? • Palestrantes ? • Pythonistas ? Vamos falar do quê ? • Cientista de Dados • O Graal do desenvolvedor • Escolhendo uma linguagem • Contextualizando Python • Vocabulário Ofidiglota fONTE: IDC Digital Universe Study, patrocinado pela EMC, 2011 fonte: http://thehumanfaceofbigdata.com/ fONTE: IDC Digital Universe Study, patrocinado pela EMC, 2011 IN 2010 THE DIGITAL UNIVERSE WAS 1.2 ZETTABYTES fonte: http://thehumanfaceofbigdata.com/ fONTE: IDC Digital Universe Study, patrocinado pela EMC, 2011 IN 2010 THE DIGITAL UNIVERSE WAS 1.2 ZETTABYTES 1,200,000,000,000,000,000,000 Zetta Exa Peta Tera Giga Mega Kilo Byte fonte: http://thehumanfaceofbigdata.com/ fONTE: IDC Digital Universe Study, patrocinado pela EMC, 2011 2009 0.8 Zettabytes CRESCIMENTO DA INFORMAÇÃO 2020 44 X MAIOR 35.2 ZB IN 2010 THE DIGITAL UNIVERSE WAS 1.2 ZETTABYTES 1,200,000,000,000,000,000,000 Zetta Exa Peta Tera Giga Mega Kilo Byte fonte: http://thehumanfaceofbigdata.com/ fONTE: IDC Digital Universe Study, patrocinado pela EMC, 2011 2009 0.8 Zettabytes CRESCIMENTO DA INFORMAÇÃO 2020 44 X MAIOR 35.2 ZB IN 2010 THE DIGITAL UNIVERSE WAS 1.2 ZETTABYTES 1,200,000,000,000,000,000,000 Zetta Exa Peta Tera Giga Mega Kilo Byte fonte: http://thehumanfaceofbigdata.com/ http://www.telegraph.co.uk/news/picturegalleries/picturesoftheday/2545407/Pictures-of-the-day-12-August-2008.html?image=8 Cientista de Dados Rodrigo Senra O que faz ? Quem é ? Data Science is a newly emerging field dedicated to analyzing and manipulating data to derive insights and build data products. https://beta.oreilly.com/ideas/what-is-data-science It combines skill-sets ranging from computer science, to mathematics, to art. http://images.fineartamerica.com/images-medium-large-5/1-pi-transition-paths-martin-krzywinski.jpg http://drewconway.com/ http://berkeleysciencereview.com/scientific-collaborations-uc-berkeley-data-driven-cover/ Estatísticas descritivas: ! Média vs. Mediana. ! Desvio Padrão ! Quartis, Min/Max. ! Correlação entre variavéis Estatísticas descritivas: ! Média vs. Mediana. ! Desvio Padrão ! Quartis, Min/Max. ! Correlação entre variavéis 1 X y 10. 8.0 8.0 6.9 13. 7.5 9.0 8.8 11.0 8.3 14. 9.9 6.0 7.2 4.0 4.2 12. 10. 7.0 4.8 5.0 5.6 2 x y 10. 9.1 8.0 8.1 13. 8.7 9.0 8.7 11. 9.2 14. 8.1 6.0 6.1 4.0 3.1 12. 9.1 7.0 7.2 5.0 4.7 3 x y 10. 7.4 8.0 6.7 13. 12. 9.0 7.1 11. 7.8 14. 8.8 6.0 6.0 4.0 5.3 12. 8.1 7.0 6.4 5.0 5.7 4 x y 8.00 6.58 8.00 5.76 8.00 7.71 8.00 8.84 8.00 8.47 8.00 7.04 8.00 5.25 19.0 12.5 8.00 5.56 8.00 7.91 8.00 6.89 Estatísticas descritivas: ! Média vs. Mediana. ! Desvio Padrão ! Quartis, Min/Max. ! Correlação entre variavéis 1 X y 10. 8.0 8.0 6.9 13. 7.5 9.0 8.8 11.0 8.3 14. 9.9 6.0 7.2 4.0 4.2 12. 10. 7.0 4.8 5.0 5.6 2 x y 10. 9.1 8.0 8.1 13. 8.7 9.0 8.7 11. 9.2 14. 8.1 6.0 6.1 4.0 3.1 12. 9.1 7.0 7.2 5.0 4.7 3 x y 10. 7.4 8.0 6.7 13. 12. 9.0 7.1 11. 7.8 14. 8.8 6.0 6.0 4.0 5.3 12. 8.1 7.0 6.4 5.0 5.7 4 x y 8.00 6.58 8.00 5.76 8.00 7.71 8.00 8.84 8.00 8.47 8.00 7.04 8.00 5.25 19.0 12.5 8.00 5.56 8.00 7.91 8.00 6.89 Média de x: 9 Variância de x: 11 Média exata de y: 7.5 (2 d.p) Variância de y: 4.13 (to 2 d.p) Correlação entre x e y : 0.816 Regressão linear: Y = 3.00 + 0.500x Estatísticas descritivas: ! Média vs. Mediana. ! Desvio Padrão ! Quartis, Min/Max. ! Correlação entre variavéis 1 X y 10. 8.0 8.0 6.9 13. 7.5 9.0 8.8 11.0 8.3 14. 9.9 6.0 7.2 4.0 4.2 12. 10. 7.0 4.8 5.0 5.6 2 x y 10. 9.1 8.0 8.1 13. 8.7 9.0 8.7 11. 9.2 14. 8.1 6.0 6.1 4.0 3.1 12. 9.1 7.0 7.2 5.0 4.7 3 x y 10. 7.4 8.0 6.7 13. 12. 9.0 7.1 11. 7.8 14. 8.8 6.0 6.0 4.0 5.3 12. 8.1 7.0 6.4 5.0 5.7 4 x y 8.00 6.58 8.00 5.76 8.00 7.71 8.00 8.84 8.00 8.47 8.00 7.04 8.00 5.25 19.0 12.5 8.00 5.56 8.00 7.91 8.00 6.89 Média de x: 9 Variância de x: 11 Média exata de y: 7.5 (2 d.p) Variância de y: 4.13 (to 2 d.p) Correlação entre x e y : 0.816 Regressão linear: Y = 3.00 + 0.500x Estatísticas descritivas: ! Média vs. Mediana. ! Desvio Padrão ! Quartis, Min/Max. ! Correlação entre variavéis 1 X y 10. 8.0 8.0 6.9 13. 7.5 9.0 8.8 11.0 8.3 14. 9.9 6.0 7.2 4.0 4.2 12. 10. 7.0 4.8 5.0 5.6 2 x y 10. 9.1 8.0 8.1 13. 8.7 9.0 8.7 11. 9.2 14. 8.1 6.0 6.1 4.0 3.1 12. 9.1 7.0 7.2 5.0 4.7 3 x y 10. 7.4 8.0 6.7 13. 12. 9.0 7.1 11. 7.8 14. 8.8 6.0 6.0 4.0 5.3 12. 8.1 7.0 6.4 5.0 5.7 4 x y 8.00 6.58 8.00 5.76 8.00 7.71 8.00 8.84 8.00 8.47 8.00 7.04 8.00 5.25 19.0 12.5 8.00 5.56 8.00 7.91 8.00 6.89 Média de x: 9 Variância de x: 11 Média exata de y: 7.5 (2 d.p) Variância de y: 4.13 (to 2 d.p) Correlação entre x e y : 0.816 Regressão linear: Y = 3.00 + 0.500xTru th l ies o n st atis tics ! Big Data a cada passo da exploração de petróleo Big Data a cada passo da exploração de petróleo Navigation Seismic: Pre-stack Seismic: Post-stack Log Curves Culture Data Geologic Model Pressure Data Velocity Data Interpretation http://i0.wp.com/sciencereview.berkeley.edu/wp-content/uploads/2014/04/spring_2014_azam_05.jpg Fernando Perez,lead PI at BIDS and creator of IPython, demonstrates brain imaging analyses performed using the IPython Notebook, an interactive web-based computational environment. credit: Peg Skorpinski O Graal do Desenvolvedor O Graal do Desenvolvedor http://blog.jessitron.com/ A eterna busca pela ferramenta perfeita 40 Plankalkü Transistor 50 Fortran LISP Harddisk Circuito Integrado 60 COBOL SIMULA BASIC LOGO ITS OS360 MULTICS Mouse Interrupções Virt.Mem ARPANET RS-232 70 Pascal C Smalltalk Prolog UNIX CP/M VMS Floppy Micro- processador PONG TCP/IP Ethernet 80 Ada C++ Perl SQL LISA Macintosh UNIX MS-DOS Windows 1.0-2.0 OS/2 MINIX AIX HPUX SCO GNU RISC 90 Javascript Python Java PHP BeOS Linux Solaris Windows 2.0 - 98 OpenBSD ISA WWW 2000 Scala C# Mac OSX Windows ME 2000 XP Vista 7 Go Linux Julia A verdade dói... # Edsger W.Dijkstra, 18 Junho 1975 http://www.cbi.umn.edu/inv/burros/ewd498.htm A verdade dói... # Edsger W.Dijkstra, 18 Junho 1975 http://www.cbi.umn.edu/inv/burros/ewd498.htm FORTRAN --"the infantile disorder"--, by now nearly 20 years old, is hopelessly inadequate for whatever computer application you have in mind today: it is now too clumsy, too risky, and too expensive to use A verdade dói... # Edsger W.Dijkstra, 18 Junho 1975 http://www.cbi.umn.edu/inv/burros/ewd498.htm PL/1 --"the fatal disease"-- belongs more to the problem set than to the solution set A verdade dói... # Edsger W.Dijkstra, 18 Junho 1975 http://www.cbi.umn.edu/inv/burros/ewd498.htm It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration A verdade dói... # Edsger W.Dijkstra, 18 Junho 1975 http://www.cbi.umn.edu/inv/burros/ewd498.htm The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence Truth lies on statistics! Top 10 - SourceForge Top 10 - SourceForge http://githut.info/ Last data update: Fri Jul 24 20:03:26 BRT 2015 http://www.langpop.com Yahoo Search, Craigslist, Ohloh, Google Code, Freshmeat, Delicious, Powells http://sogrady-media.redmonk.com/sogrady/files/2015/07/lang-rank-615-wm.png Segurança Fonte: http://nvd.nist.gov/nvd.cfm Segurança Fonte: http://nvd.nist.gov/nvd.cfm Python 91 Ruby 109 JS 209 Java 613 C 1559 PHP 2732 http://benchmarksgame.alioth.debian.org/u64q/which-programs-are-fastest.html Duelo de linguagens Duelo de linguagens Duelo de linguagens Duelo de linguagens import java.io.*; import java.util.*; import java.text.*; public class sumcol { public static void main(String[] args) { int count = 0; String line; try { BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); while ((line = in.readLine()) != null) { count = count + Integer.parseInt(line); } } catch (IOException e) { } System.out.println(Integer.toString(count)); Java import java.io.*; import java.util.*; import java.text.*; public class sumcol { public static void main(String[] args) { int count = 0; String line; try { BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); while ((line = in.readLine()) != null) { count = count + Integer.parseInt(line); } } catch (IOException e) { } System.out.println(Integer.toString(count)); Javausing System;class App { public static int Main(String[] args) { int count = 0; for (String line = Console.In.ReadLine(); line != null; line = Console.In.ReadLine()) { count += System.Convert.ToInt32(line); } Console.WriteLine(count.ToString()); return(0); } C# import java.io.*; import java.util.*; import java.text.*; public class sumcol { public static void main(String[] args) { int count = 0; String line; try { BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); while ((line = in.readLine()) != null) { count = count + Integer.parseInt(line); } } catch (IOException e) { } System.out.println(Integer.toString(count)); Javausing System;class App { public static int Main(String[] args) { int count = 0; for (String line = Console.In.ReadLine(); line != null; line = Console.In.ReadLine()) { count += System.Convert.ToInt32(line); } Console.WriteLine(count.ToString()); return(0); } C#import syscount = 0 while 1: line = sys.stdin.readline().strip() if not line: break count += int(line) print count Python import java.io.*; import java.util.*; import java.text.*; public class sumcol { public static void main(String[] args) { int count = 0; String line; try { BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); while ((line = in.readLine()) != null) { count = count + Integer.parseInt(line); } } catch (IOException e) { } System.out.println(Integer.toString(count)); Javausing System;class App { public static int Main(String[] args) { int count = 0; for (String line = Console.In.ReadLine(); line != null; line = Console.In.ReadLine()) { count += System.Convert.ToInt32(line); } Console.WriteLine(count.ToString()); return(0); } C#import syscount = 0 while 1: line = sys.stdin.readline().strip() if not line: break count += int(line) print count Pythonimport sys, itertools print sum(itertools.imap(int, sys.stdin)) Python Python é ... • propósito geral • foco em produtividade do desenvolvedor • multi-plataforma e multi-paradigma • pilhas incluídas • floss software • fácil de extender e embutir • madura (criada em1989, liberada ao público 1991) Interoperabiilidade ✴ Jython (Python implementado em Java) ✴ CPython (onde existir compilador C ISO/IEC 9899:1990) ✴ IronPython (implementado em C# pela M$) ✴ PyPy (Python implementado em... Python) ✴ Py4J (ponte entre CPython e JVM) ✴ Python for .NET [Brian Lloyd] ✴ Win32all [Mark Hammond] (adeus VBA!) ✴ PyObjC (Mac OSX middleware) ✴ Python for Delphi [Morgan Marat] ✴ LunaticPython [Gustavo Niemeyer] ✴ Ruby/Python (importar módulos Python em Ruby) ✴ Python + Fortran Hora da Demo Dá tempo de ver o Python em ação ? É possível ? Seria pedir muito ? Pygame Pygame Python no celular S60 Python no celular S60 Bancos de Dados from psycopg import * o = connect(“ dbname=teste user=fulano” ) c = o.cursor() c.execute(“ SELECT * FROM nome_da_tabela” ) row = c.fetchone() print row x = [ ('valor_1', 'fulano', 0), ('valor_2', 'beltrano', 5), ('valor_3', 'ciclano', 15)] c.executemany(" " " INSERT INTO outra_tabela VALUES (%s, %s, %s)""", x) c.commit() Networking from twisted.internet.protocol import Protocol, Factory from twisted.internet import reactor from time import asctime class TimeServer(Protocol):def dataReceived(self, data): self.transport.write(asctime()) def main(): f = Factory() f.protocol = TimeServer reactor.listenTCP(8000, f) reactor.run() main() Web Services from SOAPpy import SOAPProxy from SOAPpy import Types google = SOAPProxy( 'http://api.google.com/search/beta2', 'urn:GoogleSearch') results = google.doGetCachedPage('Pd6ke...ArQoX' , 'www.owls.org') of = open('cached_page_response.html', 'w') of.write(results) of.close() SciPy import view from Numeric import * x = arange(-3, 6, .04) y = arange(-12, 12, .08) y = sin(y)*exp(-y*y/18.0) z = x * y[:,NewAxis] view.view(z) Referências ! http://python.org ! http://www.pythonbrasil.com.br ! http://associacao.pythonbrasil.org ! http://showmedo.com Referências ! Fluent Python: Luciano Ramalho (O’Reilly) ! Python in a Nutshell: Alex Martelli (O'Reilly) ! Python Cookbook: Alex Martelli, David Ascher (O'Reilly) ! Learning Python for Interactive Computing and Data Visualisation: Cyrille Rossant (Packt) Conclusão • Ágil, madura e moderna • Fácil aprendizado • Comunidade Ativa • Fartura de documentação • Divertida ;o) Obrigado a todos pela atenção. Rodrigo Dias Arruda Senra http://rodrigo.senra.nom.br rodsenra@gmail.com @rodsenra As opiniões e conclusões expressas nesta apresentação são de exclusiva responsabilidade de Rodrigo Senra. Não é necessário requisitar permissão do autor para o uso de partes ou do todo desta apresentação, desde que não sejam feitas alterações no conteúdo reutilizado e que esta nota esteja presente na íntegra no material resultante. Imagens e referências para outros trabalhos nesta apresentação permanecem propriedade daqueles que detêm seus direitos de copyright. Agradecimento especial a Ana Oliveira e Diego Salomone que contribuíram com alguns slides de suas apresentações sobre o mesmo tema.
Compartilhar