python: a arma secreta do cientista de dados

102
Python: A Arma Secreta do Cientista de Dados Rodrigo Dias Arruda Senra rsenra@acm.org

Upload: rodrigo-senra

Post on 19-Aug-2015

309 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Python: a arma secreta do Cientista de Dados

Python: A

Arma Secreta do

Cientista de DadosRodrigo Dias Arruda Senra

[email protected]

Page 2: Python: a arma secreta do Cientista de Dados

Apenas um rapaz latino americano...

Page 3: Python: a arma secreta do Cientista de Dados

Apenas um rapaz latino americano...

Page 4: Python: a arma secreta do Cientista de Dados

Apenas um rapaz latino americano...

• Engenheiro de Computação Grad-MSc-PhD IC-Unicamp

Page 5: Python: a arma secreta do Cientista de Dados

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

Page 6: Python: a arma secreta do Cientista de Dados

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

Page 7: Python: a arma secreta do Cientista de Dados

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

Page 8: Python: a arma secreta do Cientista de Dados

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

Page 9: Python: a arma secreta do Cientista de Dados

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)

Page 10: Python: a arma secreta do Cientista de Dados

Quem está aí ?

Page 11: Python: a arma secreta do Cientista de Dados

Quem está aí ?

• Estudantes ?

Page 12: Python: a arma secreta do Cientista de Dados

Quem está aí ?

• Estudantes ?

• Profissionais ?

Page 13: Python: a arma secreta do Cientista de Dados

Quem está aí ?

• Estudantes ?

• Profissionais ?

• Professores ?

Page 14: Python: a arma secreta do Cientista de Dados

Quem está aí ?

• Estudantes ?

• Profissionais ?

• Professores ?

• Palestrantes ?

Page 15: Python: a arma secreta do Cientista de Dados

Quem está aí ?

• Estudantes ?

• Profissionais ?

• Professores ?

• Palestrantes ?

• Pythonistas ?

Page 16: Python: a arma secreta do Cientista de Dados

Vamos falar do quê ?

• Cientista de Dados

• O Graal do desenvolvedor

• Escolhendo uma linguagem

• Contextualizando Python

• Vocabulário Ofidiglota

Page 17: Python: a arma secreta do Cientista de Dados

fONTE: IDC Digital Universe Study, patrocinado pela EMC, 2011fonte: http://thehumanfaceofbigdata.com/

Page 18: Python: a arma secreta do Cientista de Dados

fONTE: IDC Digital Universe Study, patrocinado pela EMC, 2011

IN 2010 THE DIGITAL UNIVERSE WAS

1.2 ZETTABYTES

fonte: http://thehumanfaceofbigdata.com/

Page 19: Python: a arma secreta do Cientista de Dados

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/

Page 20: Python: a arma secreta do Cientista de Dados

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/

Page 21: Python: a arma secreta do Cientista de Dados

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/

Page 22: Python: a arma secreta do Cientista de Dados
Page 23: Python: a arma secreta do Cientista de Dados

http://www.telegraph.co.uk/news/picturegalleries/picturesoftheday/2545407/Pictures-of-the-day-12-August-2008.html?image=8

Page 24: Python: a arma secreta do Cientista de Dados

Cientista de DadosRodrigo Senra

O que faz ?Quem é ?

Page 25: Python: a arma secreta do Cientista de Dados

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

Page 26: Python: a arma secreta do Cientista de Dados
Page 27: Python: a arma secreta do Cientista de Dados

http://drewconway.com/

Page 28: Python: a arma secreta do Cientista de Dados

http://berkeleysciencereview.com/scientific-collaborations-uc-berkeley-data-driven-cover/

Page 29: Python: a arma secreta do Cientista de Dados

Estatísticas descritivas: ! Média vs. Mediana. ! Desvio Padrão ! Quartis, Min/Max. ! Correlação entre variavéis

Page 30: Python: a arma secreta do Cientista de Dados

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

Page 31: Python: a arma secreta do Cientista de Dados

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

Page 32: Python: a arma secreta do Cientista de Dados

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

Page 33: Python: a arma secreta do Cientista de Dados

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 !

Page 34: Python: a arma secreta do Cientista de Dados
Page 35: Python: a arma secreta do Cientista de Dados
Page 36: Python: a arma secreta do Cientista de Dados
Page 37: Python: a arma secreta do Cientista de Dados
Page 38: Python: a arma secreta do Cientista de Dados
Page 39: Python: a arma secreta do Cientista de Dados
Page 40: Python: a arma secreta do Cientista de Dados
Page 41: Python: a arma secreta do Cientista de Dados
Page 42: Python: a arma secreta do Cientista de Dados

Big Data a cada passo da exploração de petróleo

Page 43: Python: a arma secreta do Cientista de Dados

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

Page 44: Python: a arma secreta do Cientista de Dados

http://i0.wp.com/sciencereview.berkeley.edu/wp-content/uploads/2014/04/spring_2014_azam_05.jpg

Page 45: Python: a arma secreta do Cientista de Dados
Page 46: Python: a arma secreta do Cientista de Dados
Page 47: Python: a arma secreta do Cientista de Dados

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

Page 48: Python: a arma secreta do Cientista de Dados
Page 49: Python: a arma secreta do Cientista de Dados

O Graal do Desenvolvedor

Page 50: Python: a arma secreta do Cientista de Dados

O Graal do Desenvolvedor

http://blog.jessitron.com/

Page 51: Python: a arma secreta do Cientista de Dados

A eterna busca pela ferramenta perfeita

Page 52: Python: a arma secreta do Cientista de Dados
Page 53: Python: a arma secreta do Cientista de Dados
Page 54: Python: a arma secreta do Cientista de Dados
Page 55: Python: a arma secreta do Cientista de Dados

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

Page 56: Python: a arma secreta do Cientista de Dados

A verdade dói...

# Edsger W.Dijkstra, 18 Junho 1975 http://www.cbi.umn.edu/inv/burros/ewd498.htm

Page 57: Python: a arma secreta do Cientista de Dados

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

Page 58: Python: a arma secreta do Cientista de Dados

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

Page 59: Python: a arma secreta do Cientista de Dados

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

Page 60: Python: a arma secreta do Cientista de Dados

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

Page 61: Python: a arma secreta do Cientista de Dados

Truth lies on statistics!

Page 62: Python: a arma secreta do Cientista de Dados
Page 63: Python: a arma secreta do Cientista de Dados

Top 10 - SourceForge

Page 64: Python: a arma secreta do Cientista de Dados

Top 10 - SourceForge

Page 65: Python: a arma secreta do Cientista de Dados

http://githut.info/

Page 66: Python: a arma secreta do Cientista de Dados

Last data update: Fri Jul 24 20:03:26 BRT 2015

http://www.langpop.com

Yahoo Search, Craigslist, Ohloh, Google Code, Freshmeat, Delicious, Powells

Page 67: Python: a arma secreta do Cientista de Dados

http://sogrady-media.redmonk.com/sogrady/files/2015/07/lang-rank-615-wm.png

Page 68: Python: a arma secreta do Cientista de Dados
Page 69: Python: a arma secreta do Cientista de Dados
Page 70: Python: a arma secreta do Cientista de Dados
Page 71: Python: a arma secreta do Cientista de Dados
Page 72: Python: a arma secreta do Cientista de Dados

Segurança Fonte: http://nvd.nist.gov/nvd.cfm

Page 73: Python: a arma secreta do Cientista de Dados

Segurança Fonte: http://nvd.nist.gov/nvd.cfm

Python 91

Ruby 109

JS 209

Java 613

C 1559

PHP 2732

Page 74: Python: a arma secreta do Cientista de Dados

http://benchmarksgame.alioth.debian.org/u64q/which-programs-are-fastest.html

Page 75: Python: a arma secreta do Cientista de Dados

Duelo de linguagens

Page 76: Python: a arma secreta do Cientista de Dados

Duelo de linguagens

Page 77: Python: a arma secreta do Cientista de Dados

Duelo de linguagens

Page 78: Python: a arma secreta do Cientista de Dados

Duelo de linguagens

Page 79: Python: a arma secreta do Cientista de Dados
Page 80: Python: a arma secreta do Cientista de Dados

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

Page 81: Python: a arma secreta do Cientista de Dados

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#

Page 82: Python: a arma secreta do Cientista de Dados

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

Page 83: Python: a arma secreta do Cientista de Dados

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

Page 84: Python: a arma secreta do Cientista de Dados

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)

Page 85: Python: a arma secreta do Cientista de Dados

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

Page 86: Python: a arma secreta do Cientista de Dados

Hora da Demo

Dá tempo de vero Python em ação ?

É possível ?Seria pedir muito ?

Page 87: Python: a arma secreta do Cientista de Dados

Pygame

Page 88: Python: a arma secreta do Cientista de Dados

Pygame

Page 89: Python: a arma secreta do Cientista de Dados

Python no celular S60

Page 90: Python: a arma secreta do Cientista de Dados

Python no celular S60

Page 91: Python: a arma secreta do Cientista de Dados

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()

Page 92: Python: a arma secreta do Cientista de Dados

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()

Page 93: Python: a arma secreta do Cientista de Dados

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()

Page 94: Python: a arma secreta do Cientista de Dados

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)

Page 95: Python: a arma secreta do Cientista de Dados

Referências

! http://python.org ! http://www.pythonbrasil.com.br ! http://associacao.pythonbrasil.org ! http://showmedo.com

Page 96: Python: a arma secreta do Cientista de Dados

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)

Page 97: Python: a arma secreta do Cientista de Dados

Conclusão

• Ágil, madura e moderna

• Fácil aprendizado

• Comunidade Ativa

• Fartura de documentação

• Divertida ;o)

Page 98: Python: a arma secreta do Cientista de Dados
Page 99: Python: a arma secreta do Cientista de Dados
Page 100: Python: a arma secreta do Cientista de Dados
Page 101: Python: a arma secreta do Cientista de Dados
Page 102: Python: a arma secreta do Cientista de Dados

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.