top of page
Blog SO Labs na Íntegra
Writer's pictureDaniel Sanches

Demo (Demonstração) Python - Numpy, Matplotlib e Pandas, Python Demo | Constructor SO DS

Updated: Feb 24, 2022


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.



__________________________________________________________________________________


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

311 views0 comments

Comments


bottom of page