class: center, middle, inverse, title-slide .title[ # Python para Ciência de Dados ] .subtitle[ ## Fundamentos ] .author[ ###
] .date[ ### 11 de 2022 ] --- class: middle, center # Fundamentos --- ## Por quê Python? - Python é inequivocamente uma das três linguagems de programação mais usadas no mundo. - Motivos principais: - É uma linguagem de **propósito geral** e **multi-paradigma** - Comunidade grande e engajada em projetos Open Source - Apoio institucional do Google, que fomenta vários projetos importantes - A segunda melhor linguagem para qualquer coisa. --- ## Python e você Algumas características importantes pra se ter em mente enquanto estudamos: Python é uma linguagem que foi criada para ser utilizada em **qualquer contexto**, de computação científica a desenvolvimento web. Por isso, muitas vezes as opções disponíveis para resolver um problema são do jeito que são pois representam as necessidades de várias pessoas. Embora seja uma linguagem que comporte muitos paradigmas diferentes de programação, o paradigma predominante é a Programação Orientada a Objetos ou _Object Oriented Programming_ (OOB). --- ## O que é um paradigma de programação? Um programa (ou _algoritmo_) é uma sequência de passos lógicos executáveis por um computador que transformam um input em um output. Programação é o ato de escrever (ou desenvolver) programas. Um paradigma de programação é um **jeito de pensar** que orienta o desenvolvimento de um programa. Boas ideias que orientam o desenvolvimento de vários programas: - Se fosse possível um programa não deveria ter partes repetidas - O código deveria ser fácil de ler. Ele não deveria estar inteiro na mesma linha por exemplo **Algumas ideias são bem específicas!** --- ## Exemplo: Manipulando strings (ideia 1) ```r library(stringr) minha_string = "hello world" str_to_upper(minha_string) ``` ``` ## [1] "HELLO WORLD" ``` ```r str_replace(minha_string, "hello", "olá") ``` ``` ## [1] "olá world" ``` Essa é uma interface que combina com o paradigma da programação funcional. Alguma funções transformam os dados de entrada para o formato que precisamos. --- ## Exemplo: Manipulando strings (ideia 2) ```python minha_string = "hello world" print(minha_string.upper()) ``` ``` ## HELLO WORLD ``` ```python print(minha_string.replace("hello", "olá")) ``` ``` ## olá world ``` --- ## Exemplo: Manipulando strings (ideia 2) Aqui usamos OOB: tudo que escrevemos fez menção a um **objeto** real, a string que queremos manipular e que foi incializada no início do código. Em OOB nós sempre fazemos menção às coisas que um objeto pode fazer, que são chamadas de **métodos**. Nesse paradigma nós interpretamos o nosso código como instruções para um **objeto**, como se o computador fosse ou controlasse uma entidade com certas funcionalidades específicas. Pode parece uma loucura às vezes, mas para programar coisas dinâmicas como jogos, comunicação entre usuários etc a orientação a objetos é uma ferramenta interessante para expressar comandos para um computador. --- ## Programação Orientada a Objetos Nesse segundo exemplo surgiram algumas ideias abstratas, mas que serão importantes para darmos nossos passos no aprendizado de Python - Em Python praticamente tudo que manipulamos são **objetos** que tem certos poderes específicos, que chamamos de **métodos**. Os **métodos** de um objeto são acessados usando o `.` - Também existem **funções**, que são parecidos com objetos, mas normalmente não podem ser interpretados como "poderes" de um objeto específico, são mais parecidas com "ordens que damos ao computador". - Além de **métodos**, os objetos também carregam valores próprios, que são chamados de **atributos** --- ## Mais justificativas: porque pensar em OOB ajuda? - Aderindo ao paradigma **OOB** com bastante fidelidade, podemos pensar no geral que: - Várias coisas que vamos querer fazer com um objeto está nos seus métodos, isso é, como um "poder" que pode ser usado, dentre uma lista de possibilidades. - Alterações em um objeto podem ser feitas com relação a várias coisas, os seus atributos. Quão mais complexo for um objeto mais informações (ou atributos) ele carrega em si. - Vamos ao Python!