Estatística Aplicada a GRH
com Python: Noções
Fundamentais e Implementação
Carlos Pedro GonçalvesSumário Alargado
• Noções fundamentais em Python.• Bases de dados tradicionais vs objectos.
• Programação Orientada a Objectos (POO) e análise inteligente dos dados (intelligent data analysis):
• Programação das ferramentas estatísticas adaptadas às necessidades de GRH;
• Diferente do SPSS e Excel: permite o desenvolvimento de “fatos à medida”.
Python
• A linguagem Python foi desenvolvida na década de 1980 pelo programador holandês Guido van Rossum, fã dos Monty Python (de onde resulta o nome da linguagem).
• A linguagem Python constitui um exemplo da tendência transformadora ao nível das competências a saber:
Tendência
• A tendência de dispersão de competências em programação integra um dos pontos centrais das transformações tecnológicas em curso, pessoas com diferentes formações de base poderão aprender a programar, o que implica que, crescentemente, os próprios utilizadores tenderão a ter acesso à capacidade de um
design de software orientado para as suas necessidades, trata-se de Do-it-Yourself
(DIY) Computer Programming que se insere no movimento mais geral de open source e DIY conducente a uma transformação antecipável no poder tecnológico.
• Ex: Europa – lacuna nas competências de programação
• Iniciativas de introdução curricular da programação no ensino pré-universitário, aprendizagem de competências de programação a adultos (em particular visando a p0pulação desempregada).
• Caso da Academia de Código em conjunto com a StartUp Lisboa e a Câmara Municipal de Lisboa: projecto-piloto envolvendo alunos do terceiro e quarto anos (Academia de Código Júnior). Ensinar adultos desempregados a programar (http://startuplisboa.com/portfolio_page/academia-de-codigo/).
Tendência
• A prazo, saber programar fará parte do leque de competências da população e uma parte integrande dos curricula, iniciando-se no ensino primário (ver Scratch (https://scratch.mit.edu/)).
• Desenvolvimento de linguagens de programação passíveis de aprendizagem rápida e com elevada capacidade de resposta em termos de programação.
Python
• No contexto da gestão, a DIY Computer Programming permite identificar a expansão próxima das competências de programação do gestor confluentes com a transformação na gestão decorrentes da integração crescente da tecnologia na actividade do gestor.
• O Python insere-se nesta linha transformadora no sentido em que o seu autor visou o desenvolvimento de:
• Uma linguagem fácil e intuitiva tão poderosa quanto as alternativas (nomeadamente o C++ e Java);
• De fonte aberta, tal que qualquer um possa contribuir para o seu desenvolvimento;
• Mais próximo do discurso natural;
• Passível de suportar um tempo de desenvolvimento de programas mais curtos, favorecendo a componente criativa e aplicada da programação.
Python
• A linguagem Python foi adoptada pelo MIT no curso de Engenharia Eléctrica e Ciência da Computação ( http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/), no ensino da programação e da Inteligência Artificial (embora as linguagens C++ e Java também sejam ensinadas).
• A linguagem tem também sido utilizado pela Google e pela NASA, assim como por um conjunto de empresas, conforme ilustrado no website:
• https://www.python.org/about/success/#business
• Outras linguagem recente com dispersão ao nível de PMEs: Ruby (https://www.ruby-lang.org/pt/)
• A linguagem Ruby tem a vantagem de ser fácil de aprender, e tem recursos online em português: https://www.ruby-lang.org/pt/documentation/quickstart/
Tipos e Estruturas de Dados em Python
• Tipos numéricos: int, float• Tipo booleano: True, False
• Tipo None • Tipos de colecções: • Strings • Lists • Tuples • Sets • Bytes e ByteArrays • Dicionários
Estruturas de Controlo em Python
• Sequências (leitura sequencial do código)• Selecção (se-então)
Objectos: Atributos e Métodos
• Um objecto corresponde a uma entidade de software, algo semelhante a um agente artificial que possui atributos e procedimentos que podem (ou não) envolver os valores dos atributos e que realizam determinadas tarefas computacionais.
• Dependendo do tipo de objecto, estamos perante agentes inteligentes de diferentes níveis cognitivos. Assim, em termos computacionais existem elementos de IA incorporada na programação orientada a objectos.
Objectos: Atributos e Métodos
• Um objecto corresponde a uma instância de uma classe, quando definimos uma classe, definimos os atributos de instância e os procedimentos computacionais definidos em termos daquilo que se designa por método de instância.
• Um método de instância descreve uma unidade coerente de computação que define o
comportamento das instâncias de uma dada classe, correspondendo a um algoritmo: sempre que o método é invocado, o algoritmo é executado pelo computador para a instância correspondente.
• No contexto da ciência da computação um objecto é uma estrutura algoritmicamente complexa, pois pode correr diferentes algoritmos (diferentes métodos) e possui atributos que o caracterizam, constituindo uma entidade artificial capaz de níveis de cognição adaptativa, logo, estamos perante entidades computacionais que residem na “matriz” simulada do computador
Python e Objectos
• “Tudo em Python é um objecto!”• O utilizador pode definir classes de objectos com respectivos atributos e métodos.
Caso de Avaliação de Desempenho
• Uma empresa que se encontra a avaliar a performance dos Recursos Humanos em dez unidades fabris, situadas em Portugal e Espanha, tendo obtido a seguinte informação sobre cada uma das unidades:
• Número total de trabalhadores;
• Peças produzidas/hora;
• Número de horas de formação;
• Número de acidentes de trabalho;
• Número de operários;
Tabela
Local Nº de
Trabalhadores
Peça /
hora Formação Acidentes
Nº de Operários Antiguidade Unidade 1 Portugal 200 20 2000 20 150 20 Unidade 2 Portugal 250 10 1200 10 120 15 Unidade 3 Portugal 300 25 2000 20 250 30 Unidade 4 Portugal 210 15 1500 30 110 20 Unidade 5 Portugal 220 16 1600 25 110 20 Unidade 6 Portugal 230 16 2000 15 150 25 Unidade 7 Espanha 250 25 2000 20 160 15 Unidade 8 Espanha 250 26 1100 14 160 16 Unidade 9 Espanha 210 17 1200 10 150 17 Unidade 10 Espanha 210 14 1200 20 150 20
Convenção
• Embora não seja uma condição imposta pela linguagem, adoptaremos a convenção da Oracle, tal que:
• Nomes das Classes: a primeira letra de cada palavra que compõe o nome de uma classe
é definida como maiúscula sendo as restantes letras definidas como minúsculas, assim, para o problema em causa temos a classe designada por UnidadeFabril;
• Nomes dos Métodos: a primeira letra é definida como minúscula sendo primeira letra,
para cada uma das restantes palavras que compõem o nome de um método, definida como maiúscula.
Métodos
• avaliaProdutividade
• avaliaFormacao
• avaliaAcidentes
avaliaFormacao
avaliaAcidentes
Exercícios
• Exercício 1. Simplificar o código avaliaUnidade utilizando a estrutura das listas.
• Exercício 2. Simplificar o código da execução do método com um ciclo “for”.
• Exercício 3. Adaptação do código para a definição de um sistema de diagnóstico estratégico que seja capaz de fornecer recomendações para o gestor de recursos humanos.
Sistema de Diagnóstico Estratégico
• Avaliação das Dimensões:• Questão: Se a empresa cumprisse com todos os objectivos qual seria a sua avaliação?
• Trabalhar com desvios em relação à avaliação em que cumpre com os objectivos, para cada uma das
dimensões.
• Tarefa: definir limiares e construir as árvores com avaliação estratégica e