python: a arma secreta do cientista de dados
TRANSCRIPT
Python: A
Arma Secreta do
Cientista de DadosRodrigo Dias Arruda Senra
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, 2011fonte: 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 ZETTABYTES1,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
20090.8 Zettabytes CRESCIMENTO
DA INFORMAÇÃO
2020
44X
MAIOR35.2 ZB
IN 2010 THE DIGITAL UNIVERSE WAS
1.2 ZETTABYTES1,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
20090.8 Zettabytes CRESCIMENTO
DA INFORMAÇÃO
2020
44X
MAIOR35.2 ZB
IN 2010 THE DIGITAL UNIVERSE WAS
1.2 ZETTABYTES1,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 DadosRodrigo 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
1X y10. 8.08.0 6.913. 7.59.0 8.8
11.0 8.314. 9.96.0 7.24.0 4.212. 10.7.0 4.85.0 5.6
2x y10. 9.18.0 8.113. 8.79.0 8.711. 9.214. 8.16.0 6.14.0 3.112. 9.17.0 7.25.0 4.7
3x y10. 7.48.0 6.713. 12.9.0 7.111. 7.814. 8.86.0 6.04.0 5.312. 8.17.0 6.45.0 5.7
4x y
8.00 6.588.00 5.768.00 7.718.00 8.848.00 8.478.00 7.048.00 5.2519.0 12.58.00 5.568.00 7.918.00 6.89
Estatísticas descritivas: ! Média vs. Mediana. ! Desvio Padrão ! Quartis, Min/Max. ! Correlação entre variavéis
1X y10. 8.08.0 6.913. 7.59.0 8.8
11.0 8.314. 9.96.0 7.24.0 4.212. 10.7.0 4.85.0 5.6
2x y10. 9.18.0 8.113. 8.79.0 8.711. 9.214. 8.16.0 6.14.0 3.112. 9.17.0 7.25.0 4.7
3x y10. 7.48.0 6.713. 12.9.0 7.111. 7.814. 8.86.0 6.04.0 5.312. 8.17.0 6.45.0 5.7
4x y
8.00 6.588.00 5.768.00 7.718.00 8.848.00 8.478.00 7.048.00 5.2519.0 12.58.00 5.568.00 7.918.00 6.89
Média de x: 9Variâ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.816Regressã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
1X y10. 8.08.0 6.913. 7.59.0 8.8
11.0 8.314. 9.96.0 7.24.0 4.212. 10.7.0 4.85.0 5.6
2x y10. 9.18.0 8.113. 8.79.0 8.711. 9.214. 8.16.0 6.14.0 3.112. 9.17.0 7.25.0 4.7
3x y10. 7.48.0 6.713. 12.9.0 7.111. 7.814. 8.86.0 6.04.0 5.312. 8.17.0 6.45.0 5.7
4x y
8.00 6.588.00 5.768.00 7.718.00 8.848.00 8.478.00 7.048.00 5.2519.0 12.58.00 5.568.00 7.918.00 6.89
Média de x: 9Variâ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.816Regressã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
1X y10. 8.08.0 6.913. 7.59.0 8.8
11.0 8.314. 9.96.0 7.24.0 4.212. 10.7.0 4.85.0 5.6
2x y10. 9.18.0 8.113. 8.79.0 8.711. 9.214. 8.16.0 6.14.0 3.112. 9.17.0 7.25.0 4.7
3x y10. 7.48.0 6.713. 12.9.0 7.111. 7.814. 8.86.0 6.04.0 5.312. 8.17.0 6.45.0 5.7
4x y
8.00 6.588.00 5.768.00 7.718.00 8.848.00 8.478.00 7.048.00 5.2519.0 12.58.00 5.568.00 7.918.00 6.89
Média de x: 9Variâ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.816Regressão linear: Y = 3.00 + 0.500xTruth lies on statistics !
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-stackLog 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
FortranLISP
Harddisk
CircuitoIntegrado
60
COBOLSIMULABASICLOGO
ITSOS360
MULTICS
Mouse
InterrupçõesVirt.MemARPANET
RS-232
70
PascalC
SmalltalkProlog
UNIXCP/MVMS
Floppy
Micro-processador
PONGTCP/IP
Ethernet
80
AdaC++PerlSQL
LISAMacintosh
UNIXMS-DOSWindows
1.0-2.0OS/2
MINIXAIX
HPUXSCOGNURISC
90
JavascriptPython
JavaPHP
BeOSLinuxSolaris
Windows2.0 - 98
OpenBSD
ISAWWW
2000
ScalaC#
Mac OSX
WindowsME
2000XP
Vista7
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 = 0while 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 = 0while 1: line = sys.stdin.readline().strip() if not line: break count += int(line)print count
Pythonimport sys, itertoolsprint 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 vero 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 rowx = [ ('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()
Networkingfrom twisted.internet.protocol import Protocol, Factoryfrom twisted.internet import reactorfrom 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 SOAPProxyfrom 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 viewfrom 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 [email protected]
@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.