Python - Jupyter Notebook
__________________________________________________________________________________
Acesso ao Arquivo .jpynb, Daniel Sanches
Demonstrações Aleatórias, Script de Desenvolvimento
Jupyter Notebook
# Importando o NumPy
import numpy as np
# Array criado a partir de uma lista:
vetor1 = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8])
print(vetor1)
[0 1 2 3 4 5 6 7 8]
# Um objeto do tipo ndarray é um recipiente multidimensional de itens do mesmo tipo e tamanho.
type(vetor1)
numpy.ndarray
Funções Numpy
# A função arange cria um vetor contendo uma progressão aritmética a partir de um intervalo - start, stop, step
vetor2 = np.arange(0., 4.5, .5)
# Criando uma matriz
matriz = np.array([[1,2,3],[4,5,6]])
print(matriz)
[[1 2 3] [4 5 6]]
# Criando uma matriz 2x3 apenas com números "1"
matriz1 = np.ones((2,3))
print(matriz1)
[[1. 1. 1.] [1. 1. 1.]]
Usando o Método random() do NumPy
print(np.random.rand(10))
[0.33343694 0.8025882 0.72009478 0.71708817 0.20946904 0.3924447 0.26182856 0.51730561 0.08323254 0.56996417]
import matplotlib.pyplot as plt
%matplotlib inline
import matplotlib as mat
mat.__version__
'3.3.2'
print(np.random.rand(10))
[0.18102849 0.220193 0.36923892 0.48334574 0.88164796 0.44180216 0.54066159 0.44702753 0.91225142 0.1939032 ]
plt.show((plt.hist(np.random.rand(1000))))
print(np.random.randn(5,5))
[[-0.26965292 -0.37395686 -0.75447786 0.18395111 -1.28375713] [ 0.37320563 0.7423058 0.3071222 -0.16834836 0.62502735] [ 0.65567066 -0.17075222 -0.72618454 -0.66456124 0.60301493] [-1.86257421 -0.70000878 -0.72579588 1.5935375 -0.79205651] [-0.12408953 0.00512973 1.43887053 -0.20314882 1.19549727]]
plt.show(plt.hist(np.random.randn(1000)))
Operações com Datasets
import os
filename = os.path.join('iris.csv')
# Carregando um dataset para dentro de um array
arquivo = np.loadtxt(filename, delimiter=',', usecols=(0,1,2,3), skiprows=1)
print (arquivo)
[[5.1 3.5 1.4 0.2] [4.9 3. 1.4 0.2] [4.7 3.2 1.3 0.2] [4.6 3.1 1.5 0.2] [5. 3.6 1.4 0.2] [5.4 3.9 1.7 0.4] [4.6 3.4 1.4 0.3] [5. 3.4 1.5 0.2] [4.4 2.9 1.4 0.2] [4.9 3.1 1.5 0.1] [5.4 3.7 1.5 0.2] [4.8 3.4 1.6 0.2] [4.8 3. 1.4 0.1] [4.3 3. 1.1 0.1] [5.8 4. 1.2 0.2] [5.7 4.4 1.5 0.4] [5.4 3.9 1.3 0.4] [5.1 3.5 1.4 0.3] [5.7 3.8 1.7 0.3] [5.1 3.8 1.5 0.3] [5.4 3.4 1.7 0.2] [5.1 3.7 1.5 0.4] [4.6 3.6 1. 0.2] [5.1 3.3 1.7 0.5] [4.8 3.4 1.9 0.2] [5. 3. 1.6 0.2] [5. 3.4 1.6 0.4] [5.2 3.5 1.5 0.2] [5.2 3.4 1.4 0.2] [4.7 3.2 1.6 0.2] [4.8 3.1 1.6 0.2] [5.4 3.4 1.5 0.4] [5.2 4.1 1.5 0.1] [5.5 4.2 1.4 0.2] [4.9 3.1 1.5 0.2] [5. 3.2 1.2 0.2] [5.5 3.5 1.3 0.2] [4.9 3.6 1.4 0.1] [4.4 3. 1.3 0.2] [5.1 3.4 1.5 0.2] [5. 3.5 1.3 0.3] [4.5 2.3 1.3 0.3] [4.4 3.2 1.3 0.2] [5. 3.5 1.6 0.6] [5.1 3.8 1.9 0.4] [4.8 3. 1.4 0.3] [5.1 3.8 1.6 0.2] [4.6 3.2 1.4 0.2] [5.3 3.7 1.5 0.2] [5. 3.3 1.4 0.2] [7. 3.2 4.7 1.4] [6.4 3.2 4.5 1.5] [6.9 3.1 4.9 1.5] [5.5 2.3 4. 1.3] [6.5 2.8 4.6 1.5] [5.7 2.8 4.5 1.3] [6.3 3.3 4.7 1.6] [4.9 2.4 3.3 1. ] [6.6 2.9 4.6 1.3] [5.2 2.7 3.9 1.4] [5. 2. 3.5 1. ] [5.9 3. 4.2 1.5] [6. 2.2 4. 1. ] [6.1 2.9 4.7 1.4] [5.6 2.9 3.6 1.3] [6.7 3.1 4.4 1.4] [5.6 3. 4.5 1.5] [5.8 2.7 4.1 1. ] [6.2 2.2 4.5 1.5] [5.6 2.5 3.9 1.1] [5.9 3.2 4.8 1.8] [6.1 2.8 4. 1.3] [6.3 2.5 4.9 1.5] [6.1 2.8 4.7 1.2] [6.4 2.9 4.3 1.3] [6.6 3. 4.4 1.4] [6.8 2.8 4.8 1.4] [6.7 3. 5. 1.7] [6. 2.9 4.5 1.5] [5.7 2.6 3.5 1. ] [5.5 2.4 3.8 1.1] [5.5 2.4 3.7 1. ] [5.8 2.7 3.9 1.2] [6. 2.7 5.1 1.6] [5.4 3. 4.5 1.5] [6. 3.4 4.5 1.6] [6.7 3.1 4.7 1.5] [6.3 2.3 4.4 1.3] [5.6 3. 4.1 1.3] [5.5 2.5 4. 1.3] [5.5 2.6 4.4 1.2] [6.1 3. 4.6 1.4] [5.8 2.6 4. 1.2] [5. 2.3 3.3 1. ] [5.6 2.7 4.2 1.3] [5.7 3. 4.2 1.2] [5.7 2.9 4.2 1.3] [6.2 2.9 4.3 1.3] [5.1 2.5 3. 1.1] [5.7 2.8 4.1 1.3] [6.3 3.3 6. 2.5] [5.8 2.7 5.1 1.9] [7.1 3. 5.9 2.1] [6.3 2.9 5.6 1.8] [6.5 3. 5.8 2.2] [7.6 3. 6.6 2.1] [4.9 2.5 4.5 1.7] [7.3 2.9 6.3 1.8] [6.7 2.5 5.8 1.8] [7.2 3.6 6.1 2.5] [6.5 3.2 5.1 2. ] [6.4 2.7 5.3 1.9] [6.8 3. 5.5 2.1] [5.7 2.5 5. 2. ] [5.8 2.8 5.1 2.4] [6.4 3.2 5.3 2.3] [6.5 3. 5.5 1.8] [7.7 3.8 6.7 2.2] [7.7 2.6 6.9 2.3] [6. 2.2 5. 1.5] [6.9 3.2 5.7 2.3] [5.6 2.8 4.9 2. ] [7.7 2.8 6.7 2. ] [6.3 2.7 4.9 1.8] [6.7 3.3 5.7 2.1] [7.2 3.2 6. 1.8] [6.2 2.8 4.8 1.8] [6.1 3. 4.9 1.8] [6.4 2.8 5.6 2.1] [7.2 3. 5.8 1.6] [7.4 2.8 6.1 1.9] [7.9 3.8 6.4 2. ] [6.4 2.8 5.6 2.2] [6.3 2.8 5.1 1.5] [6.1 2.6 5.6 1.4] [7.7 3. 6.1 2.3] [6.3 3.4 5.6 2.4] [6.4 3.1 5.5 1.8] [6. 3. 4.8 1.8] [6.9 3.1 5.4 2.1] [6.7 3.1 5.6 2.4] [6.9 3.1 5.1 2.3] [5.8 2.7 5.1 1.9] [6.8 3.2 5.9 2.3] [6.7 3.3 5.7 2.5] [6.7 3. 5.2 2.3] [6.3 2.5 5. 1.9] [6.5 3. 5.2 2. ] [6.2 3.4 5.4 2.3] [5.9 3. 5.1 1.8]]
Estatística
# Criando um array
A = np.array([15, 23, 63, 94, 75])
# Em estatística a média é o valor que aponta para onde mais se concentram os dados de uma distribuição.
np.mean(A)
54.0
Pandas
# Versão da Linguagem Python
from platform import python_version
print('Versão da Linguagem Python Usada Neste Jupyter Notebook:', python_version())
Versão da Linguagem Python Usada Neste Jupyter Notebook: 3.8.5
Pandas Para poder trabalhar com Pandas, você deve conhecer bem estas duas estruturas: Series e DataFrame. Para importar o pandas, utilize: import pandas as pd Você também pode utilizar: from pandas import Series, DataFrame Para atualizar o Pandas, abra o prompt de comando ou terminal e digite: pip install pandas -U Series Series é um array unidimensional que contém um array de dados e um array de labels, chamado índice.
from pandas import Series
import pandas as pd
pd.__version__
'1.1.3'
# Criando uma série sem especificar os índices
Obj = Series([67, 78, -56, 13])
Obj
0 67 1 78 2 -56 3 13 dtype: int64
# Criando uma série e especificando os índices
Obj2 = Series([67, 78, -56, 13], index = ['a', 'b', 'c', 'd'])
Obj2
a 67 b 78 c -56 d 13 dtype: int64
Obj2['b']
78
'd' in Obj2
True
# Criando uma série de dados passando um dicionário como parâmetro
dict = {'Futebol':5200, 'Tenis': 120, 'Natação':698, 'Volleyball':1550}
# Criando uma série a partir de um dicionário
Obj3 = Series(dict)
Obj3
Futebol 5200 Tenis 120 Natação 698 Volleyball 1550 dtype: int64
type(Obj3)
pandas.core.series.Series
Dataframes
from pandas import DataFrame
data = {'Estado': ['Santa Catarina', 'Paraná', 'Goiás', 'Bahia', 'Minas Gerais'],
'Ano': [2002, 2003, 2004, 2005, 2006],
'População': [1.5, 1.7, 3.6, 2.4, 2.9]}
frame = DataFrame(data)
frame
EstadoAnoPopulação0Santa Catarina20021.51Paraná20031.72Goiás20043.63Bahia20052.44Minas Gerais20062.9
type(frame)
pandas.core.frame.DataFrame
DataFrame(data, columns = ['Ano', 'Estado', 'População'])
AnoEstadoPopulação02002Santa Catarina1.512003Paraná1.722004Goiás3.632005Bahia2.442006Minas Gerais2.9
# Criando outro dataframe com os mesmo dados anteriores mas adicionando uma coluna
frame2 = DataFrame(data, columns = ['Ano', 'Estado', 'População', 'Débito'],
index = ['um', 'dois', 'três', 'quatro', 'cinco'])
# Imprimindo o Dataframe
frame2
AnoEstadoPopulaçãoDébitoum2002Santa Catarina1.5NaNdois2003Paraná1.7NaNtrês2004Goiás3.6NaNquatro2005Bahia2.4NaNcinco2006Minas Gerais2.9NaN
# Imprimindo apenas uma coluna do Dataframe
frame2['Estado']
um Santa Catarina dois Paraná três Goiás quatro Bahia cinco Minas Gerais Name: Estado, dtype: object
Usando NumPy e Pandas
# Importando o NumPy
import numpy as np
# Usando o NumPy para alimentar uma das colunas do dataframe
frame2['Débito'] = np.arange(5.)
frame2
AnoEstadoPopulaçãoDébitoum2002Santa Catarina1.50.0dois2003Paraná1.71.0três2004Goiás3.62.0quatro2005Bahia2.43.0cinco2006Minas Gerais2.94.0
Time Series
# Criando um range de datas com frequência de segundos
rng = pd.date_range('1/1/2020', periods = 50, freq = 'S')
ts = pd.Series(np.random.randint(0, 500, len(rng)), index = rng)
ts
2020-01-01 00:00:00 348 2020-01-01 00:00:01 301 2020-01-01 00:00:02 231 2020-01-01 00:00:03 236 2020-01-01 00:00:04 406 2020-01-01 00:00:05 230 2020-01-01 00:00:06 343 2020-01-01 00:00:07 313 2020-01-01 00:00:08 6 2020-01-01 00:00:09 338 2020-01-01 00:00:10 22 2020-01-01 00:00:11 82 2020-01-01 00:00:12 165 2020-01-01 00:00:13 101 2020-01-01 00:00:14 449 2020-01-01 00:00:15 409 2020-01-01 00:00:16 56 2020-01-01 00:00:17 89 2020-01-01 00:00:18 6 2020-01-01 00:00:19 330 2020-01-01 00:00:20 127 2020-01-01 00:00:21 212 2020-01-01 00:00:22 245 2020-01-01 00:00:23 116 2020-01-01 00:00:24 7 2020-01-01 00:00:25 216 2020-01-01 00:00:26 410 2020-01-01 00:00:27 267 2020-01-01 00:00:28 200 2020-01-01 00:00:29 369 2020-01-01 00:00:30 245 2020-01-01 00:00:31 275 2020-01-01 00:00:32 27 2020-01-01 00:00:33 232 2020-01-01 00:00:34 438 2020-01-01 00:00:35 190 2020-01-01 00:00:36 42 2020-01-01 00:00:37 129 2020-01-01 00:00:38 198 2020-01-01 00:00:39 434 2020-01-01 00:00:40 258 2020-01-01 00:00:41 142 2020-01-01 00:00:42 66 2020-01-01 00:00:43 272 2020-01-01 00:00:44 364 2020-01-01 00:00:45 181 2020-01-01 00:00:46 4 2020-01-01 00:00:47 108 2020-01-01 00:00:48 370 2020-01-01 00:00:49 445 Freq: S, dtype: int32
Plotting
import matplotlib.pyplot as plt
from matplotlib import style
%matplotlib inline
import matplotlib as mat
mat.__version__
'3.3.2'
# Time Series Plot
ts = pd.Series(np.random.randn(500), index=pd.date_range('1/1/2020', periods = 500))
ts = ts.cumsum()
ts.plot()
<AxesSubplot:>
# DataFrame Plot
df = pd.DataFrame(np.random.randn(500, 4), index = ts.index, columns = ['A', 'B', 'C', 'D'])
df = df.cumsum()
plt.figure(); df.plot(); plt.legend(loc = 'best')
<matplotlib.legend.Legend at 0x2407527e850>
<Figure size 432x288 with 0 Axes>
Prevendo a Ocorrência de Diabetes
from IPython.display import Image
Image('Workflow.png')
Conjunto de Dados do Repositório de Machine Learning da UCI / Kaggle https://www.kaggle.com/uciml/pima-indians-diabetes-database/data
# Importando os módulos
import pandas as pd
import matplotlib as mat
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
pd.__version__
'1.1.3'
mat.__version__
'3.3.2' # Carregando o dataset
df = pd.read_csv("pima-data.csv")
# Verificando o formato dos dados
df.shape
(767, 9) # Verificando as primeiras linhas do dataset
df.head(5)
61487235033.60.62750101856629026.60.35131018183640023.30.672321218966239428.10.16721030137403516843.12.28833145116740025.60.201300
# Verificando as últimas linhas do dataset
df.tail(5)
61487235033.60.62750176210101764818032.90.17163076321227027036.80.3402707645121722311226.20.2453007651126600030.10.3494717661937031030.40.315230
# Verificando se existem valores nulos
df.isnull().values.any()
False # Identificando a correlação entre as variáveis
# Correlação não implica causalidade
def plot_corr(df, size=10):
corr = df.corr()
fig, ax = plt.subplots(figsize = (size, size))
ax.matshow(corr)
plt.xticks(range(len(corr.columns)), corr.columns)
plt.yticks(range(len(corr.columns)), corr.columns)
# Criando o gráfico
plot_corr(df)
# Visualizando a correlação em tabela
# Coeficiente de correlação:
# +1 = forte correlação positiva
# 0 = não há correlação
# -1 = forte correlação negativa
df.corr()
61487235033.60.62750161.0000000.1288460.141197-0.082495-0.0729990.017518-0.0339270.5440180.2210871480.1288461.0000000.1524980.0563810.3323830.2209550.1369030.2624080.465856720.1411970.1524981.0000000.2073080.0890980.2817770.0411800.2395710.06488235-0.0824950.0563810.2073081.0000000.4379740.3925530.183498-0.1158730.0732650-0.0729990.3323830.0890980.4379741.0000000.1981110.185579-0.0409420.13198433.60.0175180.2209550.2817770.3925530.1981111.0000000.1405460.0359110.2926950.627-0.0339270.1369030.0411800.1834980.1855790.1405461.0000000.0327380.173245500.5440180.2624080.239571-0.115873-0.0409420.0359110.0327381.0000000.23641710.2210870.4658560.0648820.0732650.1319840.2926950.1732450.2364171.000000
# Definindo as classes
diabetes_map = {True : 1, False : 0}
Final.
Notas e Relacionados
> Inicialmente o nosso propósito com o Blog é efetuar postagens diversas, porém teremos a área separada para as postagens relacionadas ao Constructor SO, que é o nosso Portfólio de Projetos, Agiles e Scrum, em que cada membro do Constructor SO possui a sua área para os seus desenvolvimentos. Dessa forma, cada atualização da área do Constructor SO é seguida de uma postagem no blog do profissional, informando os nossos leitores e criando assim um panorama extensivo de tal trabalho lançado ou versionado;
> A priori em relação aos desenvolvimentos da Space_One Labs, a nossa ideia é lançar e trabalhar de forma aleatória vários projetos da área específica relacionada, não nos tornando assim limitados por apps ou softwares específicos;
> Todos os casos aqui descritos e desenvolvidos, para este blog, no qual me pertence, que seja da categoria "BI Case", são casos de empresas fictícias, criadas e inventadas, para contextualizar e deixar o trabalho mais vivo e realista possível.
#BlogdeMembros #BlogSOLabs / #Marketing #MarketingDigital #AnalyticseMarketingDigital #Tecnologia #BI #BusinessIntelligence #ConstructorSO #PowerBI #Microsoft #Excel
__________________________________________________________________________________
Daniel Sanches
Engenheiro de Produção, Universo - Universidade Salgado de Oliveira, especializado em Analytics e Data, Business e Tecnologia
SO Labs Developer Member of Research, Business Intelligence Analyst, Data
Analyst and Business Analyst, Blogger DS Space_One Labs | Space
Members
Membro SO Labs Desenvolvedor de Pesquisas, Business Intelligence, Data
Analyst e Negócios
Comments