import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from unidecode import unidecode
pesquisa = pd.read_csv('resultados-pesquisa-anonimizado.csv')
pesquisa.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 25 entries, 0 to 24 Data columns (total 7 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Carimbo de data/hora 25 non-null object 1 Qual sua atual ocupação (profissão ou estudante)? 23 non-null object 2 Com qual frequência você busca por informações fornecidas pela prefeitura de Feira de Santana? 25 non-null object 3 Que tipo de informação você ESPERA encontrar no Dados abertos de Feira? (Coisas que você acredita que é certeza ter) 25 non-null object 4 Que tipo de informação você GOSTARIA que tivesse em um portal de transparência de dados da cidade? (Coisas que vão além do obrigado a ter) 24 non-null object 5 O que lhe faria voltar a consultar o portal Dados abertos de Feira com frequência? 25 non-null object 6 Quais sites você usa ou já usou para pesquisar esses dados? 9 non-null object dtypes: object(7) memory usage: 1.5+ KB
pesquisa.describe()[:2]
Carimbo de data/hora | Qual sua atual ocupação (profissão ou estudante)? | Com qual frequência você busca por informações fornecidas pela prefeitura de Feira de Santana? | Que tipo de informação você ESPERA encontrar no Dados abertos de Feira? (Coisas que você acredita que é certeza ter) | Que tipo de informação você GOSTARIA que tivesse em um portal de transparência de dados da cidade? (Coisas que vão além do obrigado a ter) | O que lhe faria voltar a consultar o portal Dados abertos de Feira com frequência? | Quais sites você usa ou já usou para pesquisar esses dados? | |
---|---|---|---|---|---|---|---|
count | 25 | 23 | 25 | 25 | 24 | 25 | 9 |
unique | 25 | 20 | 6 | 25 | 24 | 25 | 8 |
Inicialmente, podemos ver que todos os campos do resultado da pesquisa consistem de objetos, provavelmente representando informações textuais. Isso também é resultado da forma como os dados foram armazenados na planilha no Google Sheets.
Analisando as colunas, podemos considerar que a informação de data/hora da resposta da pesquisa pode ser descartada, já que não traz um dado que possa ser analisado em conjunto com os demais, representando apenas o momento em que aquela resposta foi preenchida.
A maioria das demais colunas possuem quase que todos os registros com valores únicos. Supondo que isso seja resultado da inserção da informação por um campo de texto, podemos tentar analisar respostas que sejam semelhantes e agrupá-las, criando categorias que possam ser mais úteis para a análise.
A coluna que menos apresenta valores únicos para os seus registros é a pergunta "Com qual frequência você busca por informações fornecidas pela prefeitura de Feira de Santana?". Supondo que a pergunta tenha disponibilizado opções para resposta, isso faz sentido. Ainda assim, a pergunta supõe uma ordenação entre as respostas, que buscaremos evidenciar.
pesquisa.drop(['Carimbo de data/hora'], axis=1, inplace=True)
pesquisa['Qual sua atual ocupação (profissão ou estudante)? '].unique()
array([nan, 'Representante', 'Recepcionista', 'Professora', 'Publicitário e locutor ', 'Promotor de Vendas', 'Polícial Militar', 'Community Manager', 'Publicitária', 'Estudante', 'Policial militar ', 'Professora ', 'Estudante ', 'Bombeiro militar ', 'Professor', 'Desenvolvedor', 'Jornalista', 'Jornalista ', 'Servidor Público', 'Desenvolvedor ', 'Empresário '], dtype=object)
Vendo os resultados únicos e o texto da coluna para a pergunta sobre ocupação, podemos fazer uma breve limpeza nos dados e classificação, criando uma nova coluna.
pesquisa['OCUPACAO'] = pesquisa['Qual sua atual ocupação (profissão ou estudante)? '].fillna('Não informado').apply(str.strip).apply(str.title)
pesquisa['OCUPACAO'].sort_values().unique()
array(['Bombeiro Militar', 'Community Manager', 'Desenvolvedor', 'Empresário', 'Estudante', 'Jornalista', 'Não Informado', 'Policial Militar', 'Polícial Militar', 'Professor', 'Professora', 'Promotor De Vendas', 'Publicitária', 'Publicitário E Locutor', 'Recepcionista', 'Representante', 'Servidor Público'], dtype=object)
Analisando novamente as profissões, podemos considerar algumas categorias.
"Bombeiro Militar", "Policial Militar" e "Polícial Militar" podem ser agrupados em uma categoria "Militar".
"Professor" e "Professora" podem ser agrupados em "Professor/Professora".
"Promotor De Vendas" e "Representante" podem ser agrupados em "Vendas".
"Publicitária" e "Publicitário E Locutor" podem ser agrupados em "Publicitário/Publicitária".
As demais ocupações não parecem se agrupar naturalmente.
def categorize_profession(profession):
if 'militar' in profession.lower():
return 'Militar'
if 'professor' in profession.lower():
return 'Professor/Professora'
if profession in ('Promotor De Vendas', 'Representante'):
return 'Vendedor/Representante'
if 'publicit' in profession.lower():
return 'Publicitário/Publicitária'
if 'community manager' in profession.lower():
return 'Organizador de Comunidade'
else:
return profession
pesquisa['OCUPACAO_CATEGORY'] = pesquisa['OCUPACAO'].apply(categorize_profession)
pesquisa.groupby('OCUPACAO_CATEGORY').size().sort_values().plot(kind='barh', title='Ocupação Profissional')
<matplotlib.axes._subplots.AxesSubplot at 0x7f0d068ed700>
# Reescrevendo a resposta em uma escrita mais concisa
pesquisa.loc[pesquisa['Com qual frequência você busca por informações fornecidas pela prefeitura de Feira de Santana?'] == 'Depende da semana, mas geralmente mais de uma vez por semana. ', 'Com qual frequência você busca por informações fornecidas pela prefeitura de Feira de Santana?'] = 'Mais de 1 vez por semana'
pesquisa['Com qual frequência você busca por informações fornecidas pela prefeitura de Feira de Santana?'].value_counts()
Todos os dias 9 1 vez por semana 7 1 vez por mês 3 Quase nunca 3 Nunca busquei 2 Mais de 1 vez por semana 1 Name: Com qual frequência você busca por informações fornecidas pela prefeitura de Feira de Santana?, dtype: int64
As informações já estão bem descritas, e podemos exibir os dados de forma ordenada.
order = ['Todos os dias', 'Mais de 1 vez por semana', '1 vez por semana', '1 vez por mês', 'Quase nunca', 'Nunca busquei']
pesquisa['Com qual frequência você busca por informações fornecidas pela prefeitura de Feira de Santana?'].value_counts().reindex(order).plot(kind='barh', title='Frequência de busca de informações')
<matplotlib.axes._subplots.AxesSubplot at 0x7f0d06877fd0>
pesquisa['Que tipo de informação você ESPERA encontrar no Dados abertos de Feira? (Coisas que você acredita que é certeza ter)'].value_counts()
Informações fieis e precisas 1 Destinação da verbas da saúde e educação 1 Urbanizaçao da cidade 1 Valores gastos 1 Noticias em geral 1 Verbas federais 1 Dados sobre obras, e investimentos da prefeitura em saúde, segurança e educação. 1 Código de obras 1 Verbas, investimentos, receitas, despesas... 1 Informações de diferentes áreas (saúde, educação, obras) com análises e filtros 1 Datas, Valores, Dados da Empresa (e se possível outros contratos que ela está envolvida) 1 Gastos da prefeitura e da Câmara com compras e salário. 1 Relato populacional 1 Saúde 1 Informação de verdade, sem sensacionalismo 1 Dados detalhados 1 Quantitativos de ruas pavimentadas / Quantitativos de unidades de saúde (PSF/UPA/ UNIDADES BÁSICAS DE SAÚDE) construídas ou reformadas / Quantitativos de escolas (constuidas ou reformadas) e o gasto de cada ação dessas. 1 Gastos públicos 1 Gastos públicos 1 Informações atualizadas de como está sendo empregado o dinheiro público e também do dinheiro que não está sendo utilizado. 1 Transparência despesas. Gestão dos recursos do município “Ex: Tributos Municipais” 1 Despesas com o município 1 Despesas com saude e educação 1 Informações referente a saúde e segurança do município de Feira de Santana. 1 Sobre melhorias nas ruas e bairros 1 Name: Que tipo de informação você ESPERA encontrar no Dados abertos de Feira? (Coisas que você acredita que é certeza ter), dtype: int64
Podemos notar que todas as respostas são distintas entre si, provavelmente resultado da coleta através de uma caixa de texto.
Assim como fizemos em outras perguntas, podemos estabelecer categorias através de palavras-chave. Como a quantidade de respostas não é muito extensa, é possível fazer uma análise em cada uma das respostas.
Em uma observação das respostas, podemos estabelecer as seguintes categorias:
Uma resposta pode estar representada em mais de uma categoria. Assim, a soma das categorias pode ser maior que a quantidade de respostas obtidas.
def categorize_expectation_public_investments(answer):
if any(x in unidecode(answer.lower()) for x in [
'servidor', 'investimento', 'obra', 'urbanizacao',
'salario', 'compra', 'dinheiro', 'bairro', 'recurso',
'gasto', 'licitacao', 'licitacoes']
):
return 1
return 0
def categorize_expectation_public_health(answer):
if any(x in unidecode(answer.lower()) for x in ['saude']):
return 1
return 0
def categorize_expectation_public_education(answer):
if any(x in unidecode(answer.lower()) for x in ['educacao', 'escola', 'colegio']):
return 1
return 0
def categorize_expectation_public_safety(answer):
if any(x in unidecode(answer.lower()) for x in ['seguranca']):
return 1
return 0
def categorize_expectation_public_budget(answer):
if any(x in unidecode(answer.lower()) for x in ['verba', 'dinheiro', 'receita']):
return 1
return 0
def categorize_expectation_public_transparency(answer):
if any(x in unidecode(answer.lower()) for x in [
'informacoes', 'informacao', 'transparencia',
'gasto', 'dados', 'verdade', 'clareza']
):
return 1
return 0
def categorize_expectation_others(answer):
if any(x in unidecode(answer.lower()) for x in ['geral', 'relato', 'proposta', 'grafico']):
return 1
return 0
def categorize_information(answer):
if any(x in unidecode(answer.lower()) for x in [
'retorno', 'gastos', 'questionamento', 'atende',
'conteudo', 'informacao', 'informacoes', 'dados',
'confiabilidade', 'resumo', 'divulgacao']
):
return 1
return 0
def categorize_frequency(answer):
if any(x in unidecode(answer.lower()) for x in [
'frequente', 'atualizacao', 'tempo real', 'atualizados', 'atualizadas']
):
return 1
return 0
def categorize_usability(answer):
if any(x in unidecode(answer.lower()) for x in ['facilidade', 'intuitiva', 'intuitivo',]):
return 1
return 0
pesquisa['ANSWER_INVESTMENT'] = pesquisa['Que tipo de informação você ESPERA encontrar no Dados abertos de Feira? (Coisas que você acredita que é certeza ter)'].apply(categorize_expectation_public_investments)
pesquisa['ANSWER_HEALTH'] = pesquisa['Que tipo de informação você ESPERA encontrar no Dados abertos de Feira? (Coisas que você acredita que é certeza ter)'].apply(categorize_expectation_public_health)
pesquisa['ANSWER_EDUCATION'] = pesquisa['Que tipo de informação você ESPERA encontrar no Dados abertos de Feira? (Coisas que você acredita que é certeza ter)'].apply(categorize_expectation_public_education)
pesquisa['ANSWER_SAFETY'] = pesquisa['Que tipo de informação você ESPERA encontrar no Dados abertos de Feira? (Coisas que você acredita que é certeza ter)'].apply(categorize_expectation_public_safety)
pesquisa['ANSWER_BUDGET'] = pesquisa['Que tipo de informação você ESPERA encontrar no Dados abertos de Feira? (Coisas que você acredita que é certeza ter)'].apply(categorize_expectation_public_budget)
pesquisa['ANSWER_TRANSPARENCY'] = pesquisa['Que tipo de informação você ESPERA encontrar no Dados abertos de Feira? (Coisas que você acredita que é certeza ter)'].apply(categorize_expectation_public_transparency)
pesquisa['ANSWER_OTHERS'] = pesquisa['Que tipo de informação você ESPERA encontrar no Dados abertos de Feira? (Coisas que você acredita que é certeza ter)'].apply(categorize_expectation_others)
labels = {'ANSWER_INVESTMENT': 'INVESTIMENTO', 'ANSWER_HEALTH': 'SAÚDE', 'ANSWER_EDUCATION': 'EDUCAÇÃO', 'ANSWER_SAFETY': 'SEGURANÇA', 'ANSWER_BUDGET': 'ORÇAMENTO', 'ANSWER_TRANSPARENCY': 'TRANSPARÊNCIA', 'ANSWER_OTHERS': 'OUTROS'}
pesquisa[['ANSWER_INVESTMENT', 'ANSWER_HEALTH', 'ANSWER_EDUCATION', 'ANSWER_SAFETY', 'ANSWER_BUDGET', 'ANSWER_TRANSPARENCY', 'ANSWER_OTHERS']].apply(np.sum).rename(index=labels).sort_values().plot(kind='barh', title='Expectativa do tipo de informação')
<matplotlib.axes._subplots.AxesSubplot at 0x7f0d0723cfa0>
pesquisa['Que tipo de informação você GOSTARIA que tivesse em um portal de transparência de dados da cidade? (Coisas que vão além do obrigado a ter)'].value_counts()
Gastos com obras, saúde, segurança, educação e propaganda. 1 Quadro de servidores/setor, efetivos x prestadores... 1 Salários , despesas extras , licitações ,e principalmente gastos com a Câmara de veriadores . 1 Gestão dos recursos oriundos do município 1 Transparência 1 Verbas que são direcionadas a cidade e não são bem utilizadas, demoram de serem utilizadas ou até que poderiam ser empregadas para outras áreas. 1 Dados econômicos de forma geral. 1 Despesas e licitaçao das obras 1 incentivar o mercado de bairros 1 Gostaria de saber principalmente como o governo do estado, juntamente com a prefeitura gerencia a verba. 1 Informações detalhadas e acessíveis sobre o andamento da atuação dos representantes municipais. Como: assiduidade e projetos propostos 1 Gastos detalhado de cada vereador e do prefeito e secretários, com passagens, alimentação, etc 1 Os gastos com pagamentos dos cargos de confiança, e serviços principalmente sem licitação. 1 Obras e para onde vai nosso dinheiro 1 Gráficos relacionados por área. 1 O que é gasto por cada secretaria e onde é aplicado 1 Projetos de infraestrutura e desenvolvimento em execução e os que serão realizados pela prefeitura por região da cidade 1 Dados sobre investimentos por bairro 1 Obras inacabadas 1 O valor real de mercado do que entra em processo de licitação uma vez que os valores expostos e das empresas que ganham são exorbitantes 1 Noticias sobre potiticas 1 Recursos publicos 1 Dados detalhados 1 Propostas e exitos positivos dos governantes 1 Name: Que tipo de informação você GOSTARIA que tivesse em um portal de transparência de dados da cidade? (Coisas que vão além do obrigado a ter), dtype: int64
Em relação à pergunta de quais informações seria interessante existirem no portal (indo além do obrigatório), novamente temos respostas únicas para cada respondente. Isso é esperado, decorrente da forma discursiva da coleta dos dados. Faremos a categorização de forma semelhante à pergunta anterior.
pesquisa['Que tipo de informação você GOSTARIA que tivesse em um portal de transparência de dados da cidade? (Coisas que vão além do obrigado a ter)'] = pesquisa['Que tipo de informação você GOSTARIA que tivesse em um portal de transparência de dados da cidade? (Coisas que vão além do obrigado a ter)'].fillna('')
pesquisa['SECOND_ANSWER_INVESTMENT'] = pesquisa['Que tipo de informação você GOSTARIA que tivesse em um portal de transparência de dados da cidade? (Coisas que vão além do obrigado a ter)'].apply(categorize_expectation_public_investments)
pesquisa['SECOND_ANSWER_HEALTH'] = pesquisa['Que tipo de informação você GOSTARIA que tivesse em um portal de transparência de dados da cidade? (Coisas que vão além do obrigado a ter)'].apply(categorize_expectation_public_health)
pesquisa['SECOND_ANSWER_EDUCATION'] = pesquisa['Que tipo de informação você GOSTARIA que tivesse em um portal de transparência de dados da cidade? (Coisas que vão além do obrigado a ter)'].apply(categorize_expectation_public_education)
pesquisa['SECOND_ANSWER_SAFETY'] = pesquisa['Que tipo de informação você GOSTARIA que tivesse em um portal de transparência de dados da cidade? (Coisas que vão além do obrigado a ter)'].apply(categorize_expectation_public_safety)
pesquisa['SECOND_ANSWER_BUDGET'] = pesquisa['Que tipo de informação você GOSTARIA que tivesse em um portal de transparência de dados da cidade? (Coisas que vão além do obrigado a ter)'].apply(categorize_expectation_public_budget)
pesquisa['SECOND_ANSWER_TRANSPARENCY'] = pesquisa['Que tipo de informação você GOSTARIA que tivesse em um portal de transparência de dados da cidade? (Coisas que vão além do obrigado a ter)'].apply(categorize_expectation_public_transparency)
pesquisa['SECOND_ANSWER_OTHERS'] = pesquisa['Que tipo de informação você GOSTARIA que tivesse em um portal de transparência de dados da cidade? (Coisas que vão além do obrigado a ter)'].apply(categorize_expectation_others)
labels = {'SECOND_ANSWER_INVESTMENT': 'INVESTIMENTO', 'SECOND_ANSWER_HEALTH': 'SAÚDE', 'SECOND_ANSWER_EDUCATION': 'EDUCAÇÃO', 'SECOND_ANSWER_SAFETY': 'SEGURANÇA', 'SECOND_ANSWER_BUDGET': 'ORÇAMENTO', 'SECOND_ANSWER_TRANSPARENCY': 'TRANSPARÊNCIA', 'SECOND_ANSWER_OTHERS': 'OUTROS'}
pesquisa[['SECOND_ANSWER_INVESTMENT', 'SECOND_ANSWER_HEALTH', 'SECOND_ANSWER_EDUCATION', 'SECOND_ANSWER_SAFETY', 'SECOND_ANSWER_BUDGET', 'SECOND_ANSWER_TRANSPARENCY', 'SECOND_ANSWER_OTHERS']].apply(np.sum).rename(index=labels).sort_values().plot(kind='barh', title='Informações além do obrigatório')
<matplotlib.axes._subplots.AxesSubplot at 0x7f0d06966430>
pesquisa['O que lhe faria voltar a consultar o portal Dados abertos de Feira com frequência?'].value_counts()
Informações detalhadas e atualizadas 1 Transparência e lisura das informações disponibilizadas 1 A transparência. 1 Constante atualização, assuntos relevantes para o bairro e cidade. 1 Saber se meus questionamentos foram aceitos 1 Necessidade de ter atualização dos dados 1 A manutenção de informações em tempo real 1 Clareza. 1 Dados atualizados e diversos. 1 Conteúdos com fontes e pequenos vídeos de resumo 1 Clareza de dados 1 Notícias verdadeiras 1 Informações atualizadas frequentemente 1 Facilidade na navegação 1 Os gastos 1 Bom conteúdo 1 Uma divulgação e acesso mais ambro. 1 Informações sobre a cidade 1 Retorno 1 informações Claras e seguras 1 Interface intuitiva e quantidade de informações. 1 A seriedade e confiabilidade. 1 Se atendesse as nossas necessidades esperadas 1 Clareza e facilidade 1 Informação de verdade 1 Name: O que lhe faria voltar a consultar o portal Dados abertos de Feira com frequência?, dtype: int64
Para a questão "O que lhe faria voltar a consultar o portal Dados abertos de Feira com frequência?", temos novamente respostas diferentes entre os respondentes. Faremos uma categorização assim como nas perguntas anteriores.
pesquisa['THIRD_ANSWER_INFO'] = pesquisa['O que lhe faria voltar a consultar o portal Dados abertos de Feira com frequência?'].apply(categorize_information)
pesquisa['THIRD_ANSWER_FREQ'] = pesquisa['O que lhe faria voltar a consultar o portal Dados abertos de Feira com frequência?'].apply(categorize_frequency)
pesquisa['THIRD_ANSWER_USABILITY'] = pesquisa['O que lhe faria voltar a consultar o portal Dados abertos de Feira com frequência?'].apply(categorize_usability)
labels = {'THIRD_ANSWER_INFO': 'QUALIDADE DA INFORMAÇÃO', 'THIRD_ANSWER_FREQ': 'FREQUÊNCIA DA INFORMAÇÃO', 'THIRD_ANSWER_USABILITY': 'SISTEMA INTUITIVO'}
pesquisa[['THIRD_ANSWER_INFO', 'THIRD_ANSWER_FREQ', 'THIRD_ANSWER_USABILITY']].apply(np.sum).rename(index=labels).sort_values().plot(kind='barh', title='O que me faria voltar a utilizar o portal?', xticks=np.arange(2, 22, 2))
<matplotlib.axes._subplots.AxesSubplot at 0x7f0d06783970>
pesquisa['Quais sites você usa ou já usou para pesquisar esses dados?'] = pesquisa['Quais sites você usa ou já usou para pesquisar esses dados?'].fillna('Nenhum')
pesquisa['Quais sites você usa ou já usou para pesquisar esses dados?'].value_counts()
Nenhum 17 Acorda cidade 2 Site do Acorda cidade 1 Acorda Cidade 1 Prefeitura, jornais, DO... 1 Acorda cidade 1 Sites informativos e midiáticos da cidade de Feira de Santana. 1 Só o da prefeitura 1 Name: Quais sites você usa ou já usou para pesquisar esses dados?, dtype: int64
Podemos ver que existem algumas respostas semelhantes, embora a maior parte dos respondentes não tenha informado outra fonte de informação dos dados municipais. De qualquer forma, precisamos categorizar algumas das informações. Apesar do Acorda Cidade ser um website, pela quantidade expressiva de respostas, vamos separá-lo em uma categoria própria.
def categorize_acorda_cidade(answer):
if any(x in unidecode(answer.lower()).strip() for x in ['acorda cidade']):
return 1
return 0
def categorize_prefeitura(answer):
if any(x in unidecode(answer.lower()).strip() for x in ['prefeitura']):
return 1
return 0
def categorize_diario_oficial(answer):
if any(x in unidecode(answer) for x in ['DO', 'oficial']):
return 1
return 0
def categorize_sites(answer):
if any(x in unidecode(answer.lower()).strip() for x in ['sites', 'jornal', 'jornais']):
return 1
return 0
def categorize_none(answer):
if any(x in unidecode(answer.lower()).strip() for x in ['nenhum']):
return 1
return 0
pesquisa['FOURTH_ANSWER_ACORDA_CIDADE'] = pesquisa['Quais sites você usa ou já usou para pesquisar esses dados?'].apply(categorize_acorda_cidade)
pesquisa['FOURTH_ANSWER_CITY_HALL'] = pesquisa['Quais sites você usa ou já usou para pesquisar esses dados?'].apply(categorize_prefeitura)
pesquisa['FOURTH_ANSWER_OFFICIAL'] = pesquisa['Quais sites você usa ou já usou para pesquisar esses dados?'].apply(categorize_diario_oficial)
pesquisa['FOURTH_ANSWER_WEBSITES'] = pesquisa['Quais sites você usa ou já usou para pesquisar esses dados?'].apply(categorize_sites)
pesquisa['FOURTH_ANSWER_NONE'] = pesquisa['Quais sites você usa ou já usou para pesquisar esses dados?'].apply(categorize_none)
labels = {'FOURTH_ANSWER_ACORDA_CIDADE': 'ACORDA CIDADE', 'FOURTH_ANSWER_CITY_HALL': 'PREFEITURA', 'FOURTH_ANSWER_OFFICIAL': 'DIÁRIO OFICIAL', 'FOURTH_ANSWER_WEBSITES': 'OUTROS SITES', 'FOURTH_ANSWER_NONE': 'NENHUM'}
pesquisa[['FOURTH_ANSWER_ACORDA_CIDADE', 'FOURTH_ANSWER_CITY_HALL', 'FOURTH_ANSWER_OFFICIAL', 'FOURTH_ANSWER_WEBSITES', 'FOURTH_ANSWER_NONE']].apply(np.sum).rename(index=labels).sort_values().plot(kind='barh', title='Outros sites utilizados')
<matplotlib.axes._subplots.AxesSubplot at 0x7f0d06a8aee0>
labels = {'FOURTH_ANSWER_ACORDA_CIDADE': 'ACORDA CIDADE', 'FOURTH_ANSWER_CITY_HALL': 'PREFEITURA', 'FOURTH_ANSWER_OFFICIAL': 'DIÁRIO OFICIAL', 'FOURTH_ANSWER_WEBSITES': 'OUTROS SITES'}
pesquisa[['FOURTH_ANSWER_ACORDA_CIDADE', 'FOURTH_ANSWER_CITY_HALL', 'FOURTH_ANSWER_OFFICIAL', 'FOURTH_ANSWER_WEBSITES']].apply(np.sum).rename(index=labels).sort_values().plot(kind='barh', title='Outros sites utilizados (para aqueles que usam)')
<matplotlib.axes._subplots.AxesSubplot at 0x7f0d066bdb50>