<jupyter_start><jupyter_text><jupyter_code>!mkdir -p "/content/drive/MyDrive/MinasProgramam/CursoAnalisedeDados/Datasets/"<jupyter_output><empty_output><jupyter_text>Tópico 2 Conteúdo Programático do curso de Introdução a Análise de Dados Minas Programam Introdução a Comandos da Biblioteca Pandas e Início da AnáliseLink documentação: https://pandas.pydata.org/docs/reference/frame.html Pandas é uma biblioteca do Python ( pacote de código aberto que contém inúmeras ferramentas dentro) muito utilizada para manipular e analizar dados. Para que possamos utilizar o pacote Pandas basta que façamos a importação do mesmo com o comando import e 'renomeamos' esse pacote para pd por fins de conveção<jupyter_code>import pandas as pd<jupyter_output><empty_output><jupyter_text>Talvez seja necessária uma instalaçãozinha antes ...  se o caomando acima não funcionar  ...Instalando o pacote Pandas:<jupyter_code>!pip install pandas # somente execute caso a importação acima der algum erro<jupyter_output><empty_output><jupyter_text>Importação dos Dados a serem Analisados e Cração de Dataframes Pandas Manipula dois tipos de estruturas de Dados:* a estrutura unidimensional que so admite uma coluna e n linhas a qual chamamos de Series. Uma lista se assemelha a essa estrutura;* a estrutura Bidimensional (mais utilizada) que admite n numero de linhas e n numero de colunas a qual chamamos de DatraFrames. planilhas de excel ou tabelas SQl são estruturas semelhantes.Em um Dataframe as colunas podem assumir vários formatatos de dados diferentes e entre si inclusive.A criação de um Dataframe pode ser realizada a partir de vários tipos de outras estruturas de dados como json, dicionário, planilha excel, arquivo csv, txt etc.Vejamos a seguir como criar um Datafram a partir de um arquivo com a extensão .csv<jupyter_code>df_areaDesmatada = pd.read_csv('/content/drive/MyDrive/MinasProgramam/CursoAnalisedeDados/Datasets/def_area_2004_2019.csv', encoding='LATIN1')<jupyter_output><empty_output><jupyter_text>Alguns dos Comandos de Visualização de um Dataframe: * print() -> comando mais básico de visualização em qualquer linguagem de programação * display() - > Cumpre a mesma função do print, porém apresenta os dados de forma mais estruturada parecida com uma tabela  * head() -> com ele é possível limitar o número de linhas a serem visualizadas por padrão ele exibirá as primeiras 5 linhas<jupyter_code>df_areaDesmatada.head(2)
df_areaDesmatada.head()<jupyter_output><empty_output><jupyter_text>Renomeando Campos de um DataFrameSintaxe: df.rename(columns={"A": "a"}) Passamos na forma de um dicionário, sendo o primeiro parâmetro ou a chave (aquele que queremos renomear) o que está antes do ':' e o valor ou segundo parâmetro o novo nome do campo.<jupyter_code>display(df_areaDesmatada)
# print(df_areaDesmatada)


df_areaDesmatada.rename({'ï»¿Ano/Estados' : 'Anos', "AMZ LEGAL" : "Area Total"})
df_areaDesmatada.head()<jupyter_output><empty_output><jupyter_text>Pergunta 1: Por que Vocês Acham que o método rename utilizado na célula acima não funcionou??<jupyter_code>df_areaDesmatada.rename({'ï»¿Ano/Estados':'Anos','AMZ LEGAL':'Area Total'}, 
    axis=1, 
    inplace=True)
df_areaDesmatada.head(2)<jupyter_output><empty_output><jupyter_text>Nós precisamos fazer com que as alterações fiquem salvas, em um outro paradigma de programação nós precisaríamos fazer uma atribuição a uma variável, e aqui nós utilizamos o parâmetro Booleano **inplace=True** e assim garantimos que a alteração feita no conjunto de dados tornece definitiva .. isso se aplica em outros médodos como drop duplicates etc Para que a alteração se dê de forma mais efetiva nós também especificamos o eixo o qual queremos modificar , esse é o trabalho que o parâmetro setado como axis = 1 está fazendo. Nesse caso **axis = 1** indica alteração na coluna de um df e axis = 0 nas linhas do mesmo. **Entendimento Geral da Base de Dados**Qual a àrea total desmatada desde 2004?Qual foi o ano em que se observou a maior área total deamatada da Floresta Amazônica?Quanto houve de desmatamento entre os anos 2009 e 2019 no Estado que compreende a maior área devastada? O metodo sum() quando utilzado sem passar nenhum parâmetro retornará o valor somado de todas as colunas numéricas do DatraframeCaso queiramos somar uma coluna ou um conjunto específico de colunas devemos passá- las como parâmetro da seguinte forma:df['coluna1', 'coluna2'].sum()Lembrando que é importante setar o eixo, sendo axis=0 se quiser somar linhas e axis=1 para soma de colunas<jupyter_code># àrea total desmatada desde 2004
areaDesmatadaTotal =  df_areaDesmatada['Area Total'].sum()
print(areaDesmatadaTotal)<jupyter_output>160335<jupyter_text>Utilizamos o **Método Drop** quando queremos excluir linhas ou colunas do nosso conjunto de dados.sintaxe:    df.drop(['coluna1', 'coluna2'])  É bem importante ressaltar que o que dirá se uma linha ou uma coluna será excluída é o eixo que foi passado como parâmetro. Por padrão o drop exclui linhas, ou seja, o esixo setado como padrão é axis=0 caso nenhum parâmetro de eixo seja passado. Em casos onde queiramos uma exclusão definitiva, não podemos esquecer de passar o inplace=TRUE<jupyter_code># Descobrindo o Estado que compreende a maior área devastada
df_estados = df_areaDesmatada.drop(['Anos', 'Area Total'], axis=1)

df_estados.sum().sort_values(axis=0, ascending=False)<jupyter_output><empty_output><jupyter_text>Utilizamos o Metodo **sort_values** quando queremos ordenar uma coluna de um dataframeSintaxe: df.sort_values(by=['col1', 'col2'])Por padrão ele Ordena linhas e em ordem crescente. Caso queiramos alterar a ordem basta passar false no parâmetro ascending.<jupyter_code># vimos que o estado onde há mais desmatamento é o PA , agora vamos atribuír -lo a uma variável:

df_estadosOrdenados = df_estados.sum().sort_values(axis=0, ascending=False)

# type(df_estadosOrdenados) # com esse comando podemos descobrir o tipo de variável com a qual estamos trabalhando

# df_estadosOrdenados.head(1)
EstadoMaisDesmatado = df_estadosOrdenados[0]

# as duas útimas linhas acima servem para atribuir a primeira linha do dataframe df_estadosOrdenados à variável EstadoMaisDesmatado
print(EstadoMaisDesmatado)
# Antes de Filtrar os anos analiso pra entender com que tipo de dados estou trabalhando
df_areaDesmatada.info()<jupyter_output><empty_output><jupyter_text>Loc é o metodo de busca mais utilizado da Biblioteca Pandas. Com ele podemos obter linhas e colunas que correspondam a alguma condição que passarmos como parâmetro na busca em um conjunto de dados. Há pelo menos 3 jeitos de obter dados entre os anos de 2009 e 2019, vejamos a seguir:<jupyter_code># df_areaDesmatada.loc[df_areaDesmatada['Anos'] >= 2009]
# df_areaDesmatada.loc[5:]
df_areaDesmatada.loc[((df_areaDesmatada['Anos'] >= 2009) & (df_areaDesmatada['Anos'] <= 2019))]<jupyter_output><empty_output><jupyter_text>Agora que sabemos como pegar o Estado com Maior àrea desmatada e como filtrar o período entre 2009 e 2019, vamos responder a pergunta:Quanto houve de desmatamento entre os anos 2009 e 2019 no Estado que compreende a maior área devastada?<jupyter_code>df_areaDesmatada.loc[df_areaDesmatada['Anos'] >= 2009].sum().sort_values()
DesmatamentoPaentre2009e2019 = df_areaDesmatada.loc[df_areaDesmatada['Anos'] >= 2009].sum().sort_values(axis=0, ascending=False)[1]
print("o Estado com maior área devastada é o PA e {} Km2 foram desmatados entre o período de 2009 e 2019 ".format(DesmatamentoPaentre2009e2019))<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.06682641107561235, 'fraction_numerical': 0.016906283280085196, 'mean_word_length': 6.196360153256705, 'pattern_counts': {'":': 1, '<': 49, '<?xml version=': 0, '>': 55, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '12', 'dir': 'jupyter-structured-clean-dedup', 'id': '180583', 'license': 'MIT', 'n_tokens_mistral': 2694, 'n_tokens_neox': 2566, 'n_words': 895, 'path': 'Topico2_Analisando_Dados_FlorestaAmazonica_Com_Pandas.ipynb', 'repo_name': 'Denise-Pro/Curso-Analise-de-Dados-Minas-Programam', 'size': '7512'}