def get_TPMETODO_treated(self): # Conversão da TCC TPMETODO para um objeto pandas DataFrame file_name = 'TPMETODO' df = download_table_cnv(file_name) # Renomeia a coluna SIGNIFICACAO df.rename(index=str, columns={'SIGNIFICACAO': 'METODO'}, inplace=True) # Inserção da primary key "NA" na tabela de que trata esta função para retratar "missing value" df.loc[df.shape[0]] = ['NA', 'NOT AVAILABLE'] return df
def get_LOCOCOR_treated(self): # Conversão da TCC LOCOCOR para um objeto pandas DataFrame file_name = 'LOCOCOR' df = download_table_cnv(file_name) # Renomeia a coluna SIGNIFICACAO df.rename(index=str, columns={'SIGNIFICACAO': 'LOCAL'}, inplace=True) # Coloca todas as string da coluna especificada como UPPER CASE df['LOCAL'] = df['LOCAL'].apply(lambda x: x.upper()) # Inserção da primary key "NA" na tabela de que trata esta função para retratar "missing value" df.loc[df.shape[0]] = ['NA', 'NOT AVAILABLE'] return df
def get_NAT1212_treated(self): # Conversão da TCC NAT1212 para um objeto pandas DataFrame file_name = 'NAT1212' df = download_table_cnv(file_name) # Renomeia a coluna SIGNIFICACAO df.rename(index=str, columns={'SIGNIFICACAO': 'LOCAL'}, inplace=True) # Elimina linhas duplicadas tendo por base a coluna ID e mantém a primeira ocorrência df.drop_duplicates(subset='ID', keep='first', inplace=True) # Adiciona zeros à esquerda nos valores (tipo string) da coluna "ID" do objeto "df" até... # formar uma "string" de tamanho = 3 df['ID'] = df['ID'].apply(lambda x: x.zfill(3)) # Inserção da primary key "NA" na tabela de que trata esta função para retratar "missing value" df.loc[df.shape[0]] = ['NA', 'NOT AVAILABLE'] return df
def get_CID10_treated(self): # Conversão da Tabela CID10 para um objeto pandas DataFrame file_name = 'CID10' df1 = download_table_dbf(file_name) # Remove colunas indesejáveis do objeto pandas DataFrame df1 = df1.drop(['OPC', 'CAT', 'SUBCAT', 'RESTRSEXO'], axis=1) # Renomeia as colunas especificadas df1.rename(index=str, columns={ 'CID10': 'ID', 'DESCR': 'ANOMALIA' }, inplace=True) # Coloca todas as string da coluna especificada como UPPER CASE df1['ANOMALIA'] = df1['ANOMALIA'].apply(lambda x: x.upper()) # Ordena as linhas de "df1" por ordem crescente dos valores da coluna ID df1.sort_values(by=['ID'], inplace=True) # Reset o index devido ao sorting prévio df1.reset_index(drop=True, inplace=True) # Conversão das 21 TCC CID10_XX para um objeto pandas DataFrame frames = [] for i in range(1, 22): i = str(i).zfill(2) file_name = 'CID10_' + i dfi = download_table_cnv(file_name) frames.append(dfi) df2 = pd.concat(frames, ignore_index=True) df2.drop_duplicates(subset='ID', keep='first', inplace=True) df2.sort_values(by=['ID'], inplace=True) df2.reset_index(drop=True, inplace=True) # Renomeia a coluna SIGNIFICACAO df2.rename(index=str, columns={'SIGNIFICACAO': 'ANOMALIA'}, inplace=True) # Concatena os dois objetos pandas DataFrame frames = [] frames.append(df1) frames.append(df2) df = pd.concat(frames, ignore_index=True) # Elimina linhas duplicadas tendo por base a coluna ID e mantém a primeira ocorrência df.drop_duplicates(subset='ID', keep='first', inplace=True) # Ordena as linhas de "df" por ordem crescente dos valores da coluna ID df.sort_values(by=['ID'], inplace=True) # Reset o index devido ao sorting prévio e à eventual eliminação de duplicates df.reset_index(drop=True, inplace=True) # Inserção da primary key "NA" na tabela de que trata esta função para retratar "missing value" df.loc[df.shape[0]] = ['NA', 'NOT AVAILABLE'] return df
def get_TABOCUP_2TCC_treated(self): # Conversão da Tabela TABOCUP para um objeto pandas DataFrame file_name = 'TABOCUP' df1 = download_table_dbf(file_name) # Renomeia as colunas especificadas df1.rename(index=str, columns={ 'CODIGO': 'ID', 'DESCRICAO': 'OCUPACAO' }, inplace=True) # Ordena as linhas de "df1" por ordem crescente dos valores da coluna ID df1.sort_values(by=['ID'], inplace=True) # Elimina eventuais linhas duplicadas tendo por base a coluna ID e mantém a primeira ocorrência df1.drop_duplicates(subset='ID', keep='first', inplace=True) # Reset o index devido ao sorting prévio df1.reset_index(drop=True, inplace=True) # Adiciona zeros à esquerda nos valores (tipo string) da coluna "ID" do objeto "df1" até... # formar uma "string" de tamanho = 6 df1['ID'] = df1['ID'].apply(lambda x: x.zfill(6)) # Conversão da TCC CBO2002 para um objeto pandas DataFrame file_name = 'CBO2002' df2 = download_table_cnv(file_name) # Renomeia a coluna SIGNIFICACAO df2.rename(index=str, columns={'SIGNIFICACAO': 'OCUPACAO'}, inplace=True) # Adiciona zeros à esquerda nos valores (tipo string) da coluna "ID" do objeto "df2" até... # formar uma "string" de tamanho = 6 df2['ID'] = df2['ID'].apply(lambda x: x.zfill(6)) # Conversão da TCC OCUPA para um objeto pandas DataFrame file_name = 'OCUPA' df3 = download_table_cnv(file_name) # Renomeia a coluna SIGNIFICACAO df3.rename(index=str, columns={'SIGNIFICACAO': 'OCUPACAO'}, inplace=True) # Adiciona zeros à esquerda nos valores (tipo string) da coluna "ID" do objeto "df3" até... # formar uma "string" de tamanho = 6 df3['ID'] = df3['ID'].apply(lambda x: x.zfill(6)) # Concatena os dois objetos pandas DataFrame frames = [] frames.append(df1) frames.append(df2) frames.append(df3) df = pd.concat(frames, ignore_index=True) # Elimina linhas duplicadas tendo por base a coluna ID e mantém a primeira ocorrência df.drop_duplicates(subset='ID', keep='first', inplace=True) # Ordena as linhas por ordem crescente dos valores da coluna "ID" df.sort_values(by=['ID'], inplace=True) # Reset o index devido ao sorting prévio e à eventual eliminação de duplicates df.reset_index(drop=True, inplace=True) # Upload do arquivo "xlsx" que contém os OCUP presentes nos arquivos DOXXaaaa (dos anos de... # 1997 a 2017) e não presentes na Tabela TABOCUP e nas TCC CBO2002 e OCUPA. Ou seja,... # isso parece ser uma falha dos dados do Datasus dataframe = pd.read_excel( self.path + 'CODOCUPMAE_OUT_TABOCUP_E_2TCC_ANOS_1997_2017' + '.xlsx') # Converte a coluna "ID" do objeto "dataframe" de "int" para "string" dataframe['ID'] = dataframe['ID'].astype('str') # Adiciona zeros à esquerda nos valores (tipo string) da coluna "ID" do objeto "dataframe" até... # formar uma "string" de tamanho = 6 dataframe['ID'] = dataframe['ID'].apply(lambda x: x.zfill(6)) # Adiciona a coluna "OCUPACAO" e respectivos valores ao objeto "dataframe" dataframe['OCUPACAO'] = [ 'NAO PROVIDO EM TABOCUP.DBF E NAS TCC CBO2002/OCUPA' ] * (dataframe.shape[0]) # Concatenação do objeto "dataframe" ao objeto "df" frames = [] frames.append(df) frames.append(dataframe) dfinal = pd.concat(frames, ignore_index=True) # Elimina eventuais linhas duplicadas tendo por base a coluna ID e mantém a primeira ocorrência dfinal.drop_duplicates(subset='ID', keep='first', inplace=True) # Ordena eventualmente as linhas por ordem crescente dos valores da coluna ID dfinal.sort_values(by=['ID'], inplace=True) # Reset eventualmente o index devido ao sorting prévio e à eventual eliminação de duplicates dfinal.reset_index(drop=True, inplace=True) # Inserção da primary key "NA" na tabela de que trata esta função para retratar "missing value" dfinal.loc[dfinal.shape[0]] = ['NA', 'NOT AVAILABLE'] return dfinal
def get_CNESDN_treated(self): # Conversão da Tabela CNESDN18 para um objeto pandas DataFrame file_name = 'CNESDN18' df1 = download_table_dbf(file_name) # Ordena as linhas de "df1" por ordem crescente dos valores da coluna CODESTAB df1.sort_values(by=['CODESTAB'], inplace=True) # Elimina eventuais linhas duplicadas tendo por base a coluna CODESTAB e mantém a primeira ocorrência df1.drop_duplicates(subset='CODESTAB', keep='first', inplace=True) # Reset o index devido ao sorting prévio df1.reset_index(drop=True, inplace=True) # Adiciona zeros à esquerda nos valores (tipo string) da coluna "CODESTAB" do objeto "df1" até... # formar uma "string" de tamanho = 7 df1['CODESTAB'] = df1['CODESTAB'].apply(lambda x: x.zfill(7)) # Conversão da TCC CNESDN07 para um objeto pandas DataFrame file_name = 'CNESDN07' df2 = download_table_cnv(file_name) # Renomeia as colunas especificadas df2.rename(index=str, columns={ 'ID': 'CODESTAB', 'SIGNIFICACAO': 'DESCESTAB' }, inplace=True) # Adiciona zeros à esquerda nos valores (tipo string) da coluna "CODESTAB" do objeto "df2" até... # formar uma "string" de tamanho = 7 df2['CODESTAB'] = df2['CODESTAB'].apply(lambda x: x.zfill(7)) # Concatena os dois objetos pandas DataFrame frames = [] frames.append(df1) frames.append(df2) df = pd.concat(frames, ignore_index=True) # Elimina linhas duplicadas tendo por base a coluna CODESTAB e mantém a primeira ocorrência df.drop_duplicates(subset='CODESTAB', keep='first', inplace=True) # Ordena as linhas de "df" por ordem crescente dos valores da coluna CODESTAB df.sort_values(by=['CODESTAB'], inplace=True) # Reset o index devido ao sorting prévio e à eventual eliminação de duplicates df.reset_index(drop=True, inplace=True) # Conversão da TCC ESFEDN07 para um objeto pandas DataFrame file_name = 'ESFEDN07' df3 = download_table_cnv(file_name) # Adequa e formata a TCC ESFEDN07 df3.rename(index=str, columns={ 'ID': 'CODESTAB', 'SIGNIFICACAO': 'ESFERA' }, inplace=True) # Adiciona zeros à esquerda nos valores (tipo string) da coluna "CODESTAB" do objeto "df3" até... # formar uma "string" de tamanho = 7 df3['CODESTAB'] = df3['CODESTAB'].apply(lambda x: x.zfill(7)) # Conversão da TCC NATDN07 para um objeto pandas DataFrame file_name = 'NATDN07' df4 = download_table_cnv(file_name) # Adequa e formata a TCC NATDN07 df4.rename(index=str, columns={ 'ID': 'CODESTAB', 'SIGNIFICACAO': 'REGIME' }, inplace=True) # Adiciona zeros à esquerda nos valores (tipo string) da coluna "CODESTAB" do objeto "df4" até... # formar uma "string" de tamanho = 7 df4['CODESTAB'] = df4['CODESTAB'].apply(lambda x: x.zfill(7)) # Realiza o "merge" da TCC NATDN07 à TCC ESFEDN07 df3['REGIME'] = df4['REGIME'].tolist( ) # Isso só é possível corretamente com essa rotina pois o... # número de linhas e a ordem dos valores das colunas... # "CODESTAB" dos objetos pandas DataFrame "df3" e "df4" são os mesmos # Elimina linhas duplicadas tendo por base a coluna CODESTAB e mantém a primeira ocorrência df3.drop_duplicates(subset='CODESTAB', keep='first', inplace=True) # Realiza o "merge" da TCC ESFEDN07 (+ TCC NATDN07) à (Tabela CNESDN18 + TCC CNESDN07) df5 = df.append(df3, sort=False) df6 = df5.replace(np.nan, '').groupby('CODESTAB', as_index=False).agg(''.join) # Ordena as linhas de "df6" por ordem crescente dos valores da coluna CODESTAB df6.sort_values(by=['CODESTAB'], inplace=True) # Reset o index devido ao sorting prévio df6.reset_index(drop=True, inplace=True) # Substitui os valores de string vazia das colunas especificadas pela string "?" df6['ESFERA'].replace('', '?', inplace=True) df6['REGIME'].replace('', '?', inplace=True) # Upload do arquivo "xlsx" que contém os CODESTAB presentes nos arquivos DNXXaaaa (dos anos de... # 1997 a 2017) e não presentes na tabela CNESDN18 e na TCC CNESDN07. Ou seja,... # isso parece ser uma falha dos dados do Datasus dataframe = pd.read_excel( self.path + 'CODESTAB_OUT_CNESDN_07_E_18_ANOS_1997_2017' + '.xlsx') # Converte a coluna "CODESTAB" do objeto "dataframe" de "int" para "string" dataframe['CODESTAB'] = dataframe['CODESTAB'].astype('str') # Adiciona zeros à esquerda nos valores (tipo string) da coluna CODESTAB do objeto "dataframe" até... # formar uma "string" de tamanho = 7 dataframe['CODESTAB'] = dataframe['CODESTAB'].apply( lambda x: x.zfill(7)) # Adiciona as colunas DESCESTAB, ESFERA e REGIME e respectivos valores ao objeto "dataframe"... # para torná-lo com as mesmas colunas do "df6" dataframe['DESCESTAB'] = [ 'NAO PROVIDO EM CNESDN18.DBF E NA TCC CNESDN07' ] * (dataframe.shape[0]) dataframe['ESFERA'] = ['?'] * (dataframe.shape[0]) dataframe['REGIME'] = ['?'] * (dataframe.shape[0]) # Concatenação do objeto "dataframe" ao objeto "df6" frames = [] frames.append(df6) frames.append(dataframe) dfinal = pd.concat(frames, ignore_index=True) # Renomeia a coluna CODESTAB dfinal.rename(index=str, columns={'CODESTAB': 'ID'}, inplace=True) # Elimina eventuais linhas duplicadas tendo por base a coluna ID e mantém a primeira ocorrência dfinal.drop_duplicates(subset='ID', keep='first', inplace=True) # Ordena eventualmente as linhas por ordem crescente dos valores da coluna ID dfinal.sort_values(by=['ID'], inplace=True) # Reset eventualmente o index devido ao sorting prévio e à eventual eliminação de duplicates dfinal.reset_index(drop=True, inplace=True) # Inserção da primary key "NA" na tabela de que trata esta função para retratar "missing value" dfinal.loc[dfinal.shape[0]] = ['NA', 'NOT AVAILABLE', '?', '?'] return dfinal