Universidade do Estado do Rio de Janeiro
Instituto de Química
Prof André Luís Alberton
Índice

Importação de dados¶

Dados podem ser importados usando-se o pacote pandas, geralmente designado por pd. Para tanto, é necessário importar o pacote (se o pacote não estiver instalado, é necessário instalar). Você pode encontrar informações sobre como instalar o pandas aqui.

Diversos métodos estão disponíveis para o pacote pandas (veja este site, ou este site). Dentre as funcionalidades do pandas, pode-se citar (ActiveState):

  • Limpeza de dados
  • Preenchimento de dados
  • Mesclagem
  • Visualização
  • Análises estatísticas
  • Inspeção de dados
  • etc

Vamos nos ater ao básico, a importação de dados do Excel para posterior uso.

Dados do Excel¶

O código abaixo ilustra como se pode importar dados de um arquivo de Excel usando o pandas. Os valores podem ser acessados como listas com o método list( .values); os nomes das columas podem ser tomados a partir do método .columns. Uma lista com as primeiras linhas da tabela pode ser vista com o método .head().

import pandas as pd
Dd = pd.read_excel(r'NomedoArquivo', sheet_name='NomedaPlanilha')
Dd.head() # para visualizar o cabeçalho
print(Dd.values) # para acessar os valores
print(Dd.columns) # para ter o nome das colunas

Exemplo

Suponnha então que se tenha um arquivo de Excel, com nome DadosTermodinamicos.xls (baixe a planilha clicando aqui) contendo dados termodinâmicos de coeficiente de capacidade calorífica das fases líquidas e gás, como segue:

Composto Fase A B*1e3 C*1e6 D*1e-5 Fase.1 A.1 B*1e3.1 C*1e6.1 D*1e-5.1
Metano (G) 1.702 9.081 -2.164 0 (L)
Etano (G) (L)
Propano (G) 1.213 28.785 -8.824 0 (L) 8.399 -8.9243 98.4277 0
Eteno (G) 1.424 14.394 -4.392 0 (L)
Propeno (G) 1.637 22.706 -6.915 0 (L)
Água (G) 3.47 1.45 0 0.121 (L) 8.712 1.25 -0.18 0
Etanol (G) 3.518 20.001 -6.002 0 (L) 33.866 -172.6 349.17 0
Benzeno (G) -0.206 39.064 -13.301 0 (L) -0.747 67.96 37.78 0
Tolueno (G) 0.29 47.052 -15.716 0 (L) 15.133 137.08 -84.73 0
Hidrogênio (G) 3.249 0.422 0 0.083 (L)
CO (G) 3.376 0.557 0 -0.031 (L)
N2 (G) 3.28 0.593 0 0.04 (L)
CO2 (G) 5.457 1.045 0 -1.157 (L)
Ciclo-Hexano (G) -3.876 63.2491 -20.928 0 (L) -9.048 141.38 -161.62 0
Metanol (G) 2.211 12.216 -3.45 0 (L) 13.431 -51.28 131.13 0
n-Hexano (G) (L)

Fonte: Smith et al. (2007)

Em cada caso, a capacidade calorífica pode ser escrita como ($ T $ em Kelvin):

$$ Cp/R = A + B \cdot T + C \cdot T^2 + \frac{D}{T^2} $$

O seguinte código permite a captura de dados.

import pandas as pd

Dd= pd.read_excel(r'DadosTermodinamicos.xlsx', sheet_name='Planilha1')
Dd.head() # imprime o cabeçalho
valores = list(Dd.values) # captura os valores
nomecol = Dd.columns # captura o nome das colunas

Suponha agora que se queira capturar os coeficientes disponíveis na tabela para o cálculo de Cp das fase gás e líquida. Se houver dados faltantes, criaremos um indicador que informa que não é possível o cálculo do Cp da fase. Vamos designar a variável ehcalcG e ehcalcL para gás e líquido, respectivamente, como um booleano (True indica que é possível o cálculo e False indica que os dados estão faltantes). A variável ehcalcG será uma lista com a mesma dimensão do número de compostos.

Dd= pd.read_excel(r'DadosTermodinamicos.xlsx', sheet_name='Planilha1')
valores = Dd.values
nomecol = Dd.columns
#print(Dd.values)
#print(Dd.columns)
#Dd.head()

n = len(valores) # número de compostos
ehcalcG = [] # inicializa a análise se é calculável para o G
ehcalcL = [] # inicializa a análise se é calculável para o L
coefG = [] # coeficientes do Gás
coefL = []
for i in range(n):
    # extrai a lista de coeficientes do gás
    aux = list(valores[i][2:6])
    # verifica se são NaN ou não
    if any(type(i) == float and pd.isna(i) for i in aux):
         # se são Nan, indica que não é calculável
        ehcalcG.append(False)
        coefG.append([])
    else:
        # se forem numéricos, adicione é calculável
        ehcalcG.append(True)
        coefG.append(aux)
    # repete o procedimento para o líquido
    # extrai a lista de coeficientes do líquido
    aux = list(valores[i][7:11])
    # verifica se são NaN ou não
    if all(type(i) == float and pd.isna(i) for i in aux):
        # se são Nan, indica que não é calculável
        ehcalcL.append(False)
        coefL.append([])
    else:
        # se forem numéricos, adicione é calculável
        ehcalcL.append(True)
        coefL.append(aux)

Suponha agora que para todos os compostos se queira calcular a capacidade calorífica a 310K. Isto pode ser feito com o código a seguir:

R = 8.314 # J/mol/K
T = 310 #K
CpG = [] #inicializa a lista de Cp do gás
CpL = [] #inicializa a lista de Cp do líquido
for i in range(n):
    if ehcalcG[i]:
        # se o gás for calculável, o calcula
        CpG.append(R*(coefG[i][0] + 1e-3*coefG[i][1]*T + 1e-6*coefG[i][2]*T**2 + 1e5*coefG[i][3]/T**2))
    else:
        # se o gás não for calculável, acrescenta apenas um termo nulo
        CpG.append([])


    if ehcalcL[i]:
        # se o líquido for calculável, o calcula
        CpL.append(R*(coefL[i][0] + 1e-3*coefL[i][1]*T + 1e-6*coefL[i][2]*T**2 + 1e5*coefL[i][3]/T**2))
    else:
        # se o líquido não for calculável, acrescenta apenas um termo nulo
        CpL.append([])

Que retorna os valores para o gás e líquido

a=[list(val[0] for val in valores),CpG,CpL]
print(a)
pd.DataFrame(a).transpose()

O resultado, para as capacidades caloríficas a 310K estão apresentados a seguir

Composto Cp Gás (J/mol/K) Cp Líq (J/mol/K)
0 Metano 35,826269774400004 []
1 Etano [] []
2 Propano 77,2234549704 125,46964161657998
3 Eteno 45,42826800319999 []
4 Propeno 66,606185149 []
5 Água 33,63354297918835 75,509427428
6 Etanol 76,0025789892 115,69128041799998
7 Benzeno 88,3413539646 199,130759012
8 Tolueno 111,12336429359999 411,42034355800007
9 Hidrogênio 28,817890077294486 []
10 CO 29,235448831612903 []
11 N2 29,14433881146722 []
12 CO2 38,053142961810615 []
13 Ciclo-Hexano 114,0684142228 160,02885305200004
14 Metanol 47,11057430999999 84,268983002
15 n-Hexano [] []

Bibliografia¶

  • Smith, J.M., Ness, H.C.V., Abbott, M.M., 2007. Introdução a termodinamica da engenharia quimica. LTC.