Métodos Matemáticos para Atuária – EP2: Integração entre Excel e Python

Os EPs finais envolvem a utilização do Excel em conjunto com Python. Aqui apresentamos um breve tutorial sobre a como rodar macros de Excel em Python. Vamos exemplificar fazendo uma regressão não-linear. Como EP2 você deverá fazer o tutorial e completar as partes que faltam. O resultado final deve ser um notebook ou um script que leia os dados da planilha fornecida (que deverá estar aberta) e envie para a planilha do Excel  o gráfico com os dados e o ajuste resultante da regressão.  O EP deve trazer comentários que expliquem cada passo em detalhes. A entrega do EP2 deve ser feita pelo email rvuspaulas@gmail.com até dia 09 de julho. Dúvidas devem ser enviadas para o email pessoal.

Siga os seguintes passos:

1. Instale o Anaconda

Toda a infraestrutura  para utilizar Python pode ser instalada no Windows instalando-se o Anaconda.

2. Teste a interface com Excel

O Anaconda contém o xlwings, que dará “asas” pythonicas para seu Excel. Abra o Jupyter notebook disponível em sua lista de programas após a instalação do Anaconda.  Em seguida, tente os seguintes comandos no notebook:


import xlwings as xw
wb = xw.Workbook()
xw.Range('A1').value = [['x1','x2','x3'], [10.0,20.0,30.0]]
xw.Sheet(1).name='Aba1'

Este código  importará o xlwings, abrirá uma planilha do Excel, escreverá uma tabela a partir da célula A1 e renomeará a aba como “Aba1”.

Altere os valores na tabela do Excel e leia os novos valores no Jupyter notebook com:

tabelas=xw.Range('Aba1','A1').table.value

Verifique o conteúdo da tabela com

 tabelas 

3. Dataframes

Uma maneira mais eficiente para lidarmos com conjuntos de dados maiores é utilizarmos a biblioteca pandas, que também já é instalada junto com o Anaconda. Como exemplo vamos usar os dados que estão nesta planilha: Dados_Regressao.xlsx .

Primeiro deixe apenas a planilha Dados_Regressao. Em seguida execute:

#Importe a biblioteca pandas
import pandas as pd
#Conecte-se com a planilha ativa usando:
wb = xw.Workbook.active()
#Leia a planilha em um dataframe
df=xw.Range('A1:C215').options(pd.DataFrame).value
#Veja o conteúdo do dataframe
df

O Dataframe permite várias manipulações interessantes nos dados. Por exemplo, é possível selecionar dados que satisfaçam alguma propriedade. Tente:

df[(df.X<3)&(df.Y>80.)]

Isso irá selecionar apenas as linhas que simultaneamente tenham X<3 e Y>80. Em seguida construa um gráfico com estes dados usando:


import matplotlib.pyplot as plt
% matplotlib inline

fig = plt.figure()

plt.plot(df['X'], df['Y'], 'bo');
plt.grid();
plt.xlabel('X');
plt.ylabel('Y');

4. Envie o gráfico para a planilha do Excel

Para enviar a o gráfico para a planilha execute:


plot = xw.Plot(fig);
plot.show('Grafico1',sheet='Aba1', left=200, top=20);

 

5. EP

Faça uma regressão usando como modelo  Y = exp(-B1 X)/(B2+B3X).  Algumas dicas importantes:

  1.  Use  numpy e scipy com
    
    from numpy import *
    from scipy.optimize import curve_fit
    
    
  2.  Defina o modelo como uma função e use curve_fit
  3.  Use
    x=arange(0.,6.,0.01)
    b1,b2,b3=popt
    y=func(x,b1,b2,b3)
    
  4.  Para construir o gráfico use algo como
    fig = plt.figure()
    plt.plot(df['X'], df['Y'], 'bo',label='dados');
    plt.plot(x,y,'r-',label='modelo')
    plt.grid();
    plt.xlabel('X');
    plt.ylabel('Y');
    plt.legend();
    
Etiquetado ,

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: