Example #1
0
 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
Example #2
0
 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
Example #3
0
 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
Example #4
0
 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
Example #5
0
 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
Example #6
0
 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