<jupyter_start><jupyter_text>Introdução a biblioteca pandas<jupyter_code># importar bibliotecas
import pandas as pd
# lendo os arquivos
data = pd.read_csv('/content/drive/My Drive/Colab Notebooks/pandas_dio/datasets/Gapminder.csv', 
                   error_bad_lines=False, sep=';')
# vendo as primeiras 5 linhas do df
data.head()
# renomeando colunas
data.rename({'country': 'pais',
             'continent': 'continente',
             'year': 'ano',
             'lifeExp': 'espectativa_de_vida',
             'pop': 'populacao_total',
             'gdpPercap': 'PIB'}, axis=1, inplace=True)
data.head()
# verificando o total de linhas e colunas
data.shape
# verificar os nomes das colunas
data.columns
# tipo dos dados
data.dtypes
# ultimas linhas do df
data.tail()
# descrever as informações estatisticas 
data.describe()
# retornar valores unicos da coluna continente
data['continente'].unique()
# localizar só as informações da oceania
oceania = data.loc[data['continente'] == 'Oceania']
oceania.head()
# verificar os valores unicos do continente no df oceania
oceania['continente'].unique()
# contar os paises por continente
data.groupby('continente')['pais'].nunique()
# expectativa de vida média para cada ano
data.groupby('ano')['espectativa_de_vida'].mean()
# media geral do PIB
data['PIB'].mean()
# soma do PIB
data['PIB'].sum()<jupyter_output><empty_output><jupyter_text>Trabalhando com planilhas do excel<jupyter_code># importando a biblioteca
import pandas as pd
# leitura dos arquivos
df1 = pd.read_excel('/content/drive/My Drive/Colab Notebooks/pandas_dio/datasets/Aracaju.xlsx')
df2 = pd.read_excel('/content/drive/My Drive/Colab Notebooks/pandas_dio/datasets/Fortaleza.xlsx')
df3 = pd.read_excel('/content/drive/My Drive/Colab Notebooks/pandas_dio/datasets/Natal.xlsx')
df4 = pd.read_excel('/content/drive/My Drive/Colab Notebooks/pandas_dio/datasets/Recife.xlsx')
df5 = pd.read_excel('/content/drive/My Drive/Colab Notebooks/pandas_dio/datasets/Salvador.xlsx')
# concatenando os dados
dados = pd.concat([df1, df2, df3, df4, df5])
# exibindo as primeiras linhas
dados.head()
# exibindo as ultimas linhas
dados.tail()
# verificando o tipo de dado de cada coluna
dados.dtypes
# alterando o tipo de dados da coluna
dados['LojaID'] = dados['LojaID'].astype('object')
dados.dtypes<jupyter_output><empty_output><jupyter_text>**Tratando valores faltantes**<jupyter_code># consultando linhas com valores faltantes
dados.isnull().sum()
dados['Vendas'].mean()
# substituindo os valores nulos pela media
dados['Vendas'].fillna(dados['Vendas'].mean(), inplace=True)
# substituindo os valores nulos por zero
dados['Vendas'].fillna(0, inplace=True)
# apagando as linhas com valores nulos
dados.dropna(inplace=True)
# apagando as linhas com valores nulos com base em 1 coluna
dados.dropna(subset=['Vendas'], inplace=True)
# removendo lunhas que estejam com valores faltantes em todas as colunas
dados.dropna(how='all', inplace=True)<jupyter_output><empty_output><jupyter_text>**Criando novas colunas**<jupyter_code># criando a colina de receita
dados['Receita'] = dados['Vendas'] * dados['Qtde']
# dados['Vendas'].mul(dados['Qtde'])
dados.head()
dados['Receita/Vendas'] = dados['Receita'].div(dados['Vendas'])
dados.head()
# retornando a maxima receita
dados['Receita'].max()
# menor receita
dados['Receita'].min()
# nlargest
dados.nlargest(3, 'Receita')
# nsmalest
dados.nsmallest(3, 'Receita')
# agrupando por cidade
dados.groupby('Cidade')['Receita'].sum()
# ordenando o conjunto de dados
dados.sort_values('Receita', ascending=False).head()<jupyter_output><empty_output><jupyter_text>Trabalhando com datas<jupyter_code># transformando a coluna de data em tipo inteiro
dados['Data'] = dados['Data'].astype('int64')
# verificando o tipo de dados de cada coluna
dados.dtypes
# trasformando a coluna de data em data
dados['Data'] = pd.to_datetime(dados['Data'])
# verificando o tipo de dados de cada coluna
dados.dtypes
# agrupando total de receita por ano
dados.groupby(dados['Data'].dt.year)['Receita'].sum()
# criando uma nova coluna com o ano
dados['Ano'] = dados['Data'].dt.year
dados.head()
# extraindo o mês e o dia
dados['Mes'], dados['Dia'] = dados['Data'].dt.month, dados['Data'].dt.day
dados.head()
# excluindo uma coluna 
del dados['Dias']
dados.head()
# retornando a data mais antiga
dados['Data'].min()
# calculando a diferença de dias
dados['Diferenca_de_dias'] = dados['Data'] - dados['Data'].min()
dados.head()
# criando a coluna de trimestre
dados['Trimestre_vendas'] = dados['Data'].dt.quarter
# verificando uma amostra
dados.sample(5)
# filtrando as vendas de 2019 do mês de março
vendas_marco_2019 = dados.loc[(dados['Ano'] == 2019) & (dados['Mes'] == 3)]
vendas_marco_2019
# vendas marco de 2019 com query
dados.query('Ano == 2019 & Mes == 3')
dados.loc[(dados['Data'].dt.year == 2019) & (dados['Data'].dt.month == 3)]<jupyter_output><empty_output><jupyter_text>Visualização de dados<jupyter_code>dados['LojaID'].value_counts(ascending=False)
# grafico de barras
dados['LojaID'].value_counts(ascending=False).plot(kind='bar')
# grafico de barras horizontais
dados['LojaID'].value_counts(ascending=True).plot.barh();
# grafico de pizza
dados.groupby(dados['Data'].dt.year)['Receita'].sum().plot.pie();
# total vendas por cidade
dados['Cidade'].value_counts()
# adicionando um titulo e alterando o nome dos eixos
import matplotlib.pyplot as plt
dados['Cidade'].value_counts().plot(kind='bar', title='Total de Vendas por Cidade')
plt.xlabel('Cidades')
plt.ylabel('Total de Vendas')

plt.show()
# alterando a cor
dados['Cidade'].value_counts().plot(kind = 'bar', title = 'Total de Vendas por Cidade', 
                                    color = 'red')
plt.xlabel('Cidades')
plt.ylabel('Total de Vendas')

plt.show()
# alterando o estilo
plt.style.use('ggplot')
dados.groupby(dados['Mes'])['Qtde'].sum().plot()
plt.title('Total de Produtos Vendidos Por Mês')
plt.xlabel('Mês')
plt.ylabel('Total Produtos Vendidos')
plt.legend()
plt.show()
dados.groupby(dados['Mes'])['Qtde'].sum()
# selecionando apenas as vendas de 2019
dados_2019 = dados[dados['Ano'] == 2019]
# total de produtos vendidos por mês
dados_2019.groupby(dados_2019['Mes'])['Qtde'].sum().plot(marker = 'v', title = 'Total de Produtos Vendidos x Mês')
plt.xlabel('Mês')
plt.ylabel('Total de Produtos Vendidos')
plt.legend()
plt.show()
dados_2019.groupby(dados_2019['Mes'])['Qtde'].sum()
# histograma
plt.hist(dados['Qtde'], color='magenta');
plt.scatter(x = dados_2019['Dia'], y = dados_2019['Receita']);
# salvando grafico em png
dados_2019.groupby(dados_2019['Mes'])['Qtde'].sum().plot(marker = 'v', title = 'Total de Produtos Vendidos x Mês')
plt.xlabel('Mês')
plt.ylabel('Total de Produtos Vendidos')
plt.legend()
plt.show()
plt.savefig('grafico_qtd_mes.png')<jupyter_output><empty_output><jupyter_text>Analise Exploratória<jupyter_code># importando libs
import pandas as pd
import matplotlib.pyplot as plt
plt.style.use('seaborn')
# upload do arquivo
from google.colab import files
arq = files.upload()
# criando o df
df = pd.read_excel('AdventureWorks.xlsx')
# visualizando as 5 primeiras linhas
df.head()
# total de linhas e colunas
df.shape
# verificando o tipo de dados
df.dtypes
# verificando a receita total
df['Valor Venda'].sum()
# qual o custo total?
df['Custo'] = df['Custo Unitário'].mul(df['Quantidade'])
df.head(2)
round(df['Custo'].sum(), 2)
df['Custo'].sum().round(2)
# lucro total
df['Lucro Total'] = df['Valor Venda'] - df['Custo']
df.head(2)
# total do lucro
df['Lucro Total'].sum().round(2)
# criando uma coluna com total de dias para enviar o produto
df['Tempo de Envio'] = df['Data Envio'] - df['Data Venda']
df.head(2)<jupyter_output><empty_output><jupyter_text>Média de tempo de envio para cada marca<jupyter_code>df['Tempo de Envio'].dtype
# extraindo apenas os dias (por causa do days, virou object)
df['Tempo de Envio'] = (df['Data Envio'] - df['Data Venda']).dt.days
df.head(2)
df['Tempo de Envio'].dtype
df.groupby('Marca')['Tempo de Envio'].mean()<jupyter_output><empty_output><jupyter_text>missing values<jupyter_code># verificando dados faltantes
df.isnull().sum()<jupyter_output><empty_output><jupyter_text>Saber lucro por ano e marca<jupyter_code># agrupar por ano e marca
df.groupby([df['Data Venda'].dt.year, 'Marca'])['Lucro Total'].sum()
pd.options.display.float_format = '{:20,.2f}'.format
df.groupby([df['Data Venda'].dt.year, 'Marca'])['Lucro Total'].sum()
# resetando o index
lucro_ano = df.groupby([df['Data Venda'].dt.year, 'Marca'])['Lucro Total'].sum().reset_index()
lucro_ano
# total de produtos vendidos
df.groupby('Produto')['Quantidade'].sum().sort_values(ascending=False)
# grafico total de produtos vendidos
df.groupby('Produto')['Quantidade'].sum().sort_values(ascending=True).plot.barh(title='Total de Produtos Vendidos')
plt.xlabel('Total')
plt.ylabel('Produto')
plt.show()
df.groupby(df['Data Venda'].dt.year)['Lucro Total'].sum().plot(kind='bar')
plt.title('Lucro x Ano')
plt.xlabel('Ano')
plt.ylabel('Receita')
plt.show()
df.groupby(df['Data Venda'].dt.year)['Lucro Total'].sum()
df_2009 = df[df['Data Venda'].dt.year == 2009]
df_2009.head()
df_2009.groupby(df_2009['Data Venda'].dt.month)['Lucro Total'].sum().plot()
plt.title('Lucro x Mês')
plt.xlabel('Mês')
plt.ylabel('Lucro');
df_2009.groupby('Marca')['Lucro Total'].sum().plot(kind='bar')
plt.title('Lucro x Marca')
plt.xlabel('Marca')
plt.ylabel('Lucro')
plt.xticks(rotation='horizontal');
df_2009.groupby('Classe')['Lucro Total'].sum().plot(kind='bar')
plt.title('Lucro x Classe')
plt.xlabel('Classe')
plt.ylabel('Lucro')
plt.xticks(rotation='horizontal');
df['Tempo de Envio'].describe()
# grafico de boxplot
plt.boxplot(df['Tempo de Envio']);
# histograma
plt.hist(df['Tempo de Envio']);
# tempo mínimo de envio
df['Tempo de Envio'].min()
# tempo maximo de envio
df['Tempo de Envio'].max()
# identificando o outlier
df[df['Tempo de Envio'] == 20]
df.to_csv('df_vendas_novo.csv', index=False)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1635777598710717, 'fraction_numerical': 0.013597904915390814, 'mean_word_length': 6.279325513196481, 'pattern_counts': {'":': 0, '<': 41, '<?xml version=': 0, '>': 41, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '10', 'dir': 'jupyter-structured-clean-dedup', 'id': '17265', 'license': 'MIT', 'n_tokens_mistral': 3999, 'n_tokens_neox': 3803, 'n_words': 814, 'path': 'analise_dados_Dio_labs.ipynb', 'repo_name': 'beatriznaimaite/Labs_DIO', 'size': '9928'}