2018/19 - 1Carlos J. Costa (ISEG)
CARLOS J. COSTA
Carlos J. Costa (2018/2019)
2018/19 - 2Carlos J. Costa (ISEG)
Pandas
• https://pandas.pydata.org/
• Biblioteca open source,
• Licenciado sobre BSD
• Alto desempenho
• Fácil de utilizar
• Inclui ferramentas de estruturas de dados
e análise de dados
2018/19 - 3Carlos J. Costa (ISEG)
Pandas
• DataFrame
– É uma estrutura etiquetada
– Tem colunas com tipos de dados
potencialmente diferentes
– Parecido com folha de cálculo ou tabela SQL
– É o objeto mais utilizado pelo Pandas
– Para além dos dados pode identificar ainda
as colunas (etiquetas das colunas) e índices
(etiquetas das linhas)
2018/19 - 4Carlos J. Costa (ISEG)
Pandas
• Criar dataframe a partir de dicionário
import pandas as pd
d = {'col1': [1,2,1,3,1,2], 'col2': [1,2,3,4,5,6]}
df = pd.DataFrame(data=d)
df.count()
df['col1'].value_counts()
df['col1'][1]=5
2018/19 - 5Carlos J. Costa (ISEG)
Pandas
• Copiar coluna
coluna1=df['col1’]
coluna1[2]=99
• Qual o resultado em coluna1 e df?
nova_coluna1 = coluna1.copy()
nova_coluna1[2]=9999
• E agora?
2018/19 - 6Carlos J. Costa (ISEG)
Pandas
• No collaboratoy:
from google.colab import files
files.upload()
• Depois no final
files.download(‘nome do ficheiro')
2018/19 - 7Carlos J. Costa (ISEG)
Pandas
• No computador, colocar o ficheiro de
dados na mesma pasta onde está gravado
o notebook
2018/19 - 8Carlos J. Costa (ISEG)
Pandas
• Importar pandas
import pandas as pd
df = pd.read_csv(‘factbook.csv')
2018/19 - 9Carlos J. Costa (ISEG)
Pandas
• Analisar informação
df.head() #cinco linhas
df.info()
df.describe()
df.columns
2018/19 - 10Carlos J. Costa (ISEG)
Pandas
• DataFrame.loc
• Acede a um grupo de linhas e colunas por
etiqueta (s) ou uma matriz booleana.
• loc [] é principalmente baseado em
etiquetas, mas também pode ser usado
com uma matriz booleana.
2018/19 - 11Carlos J. Costa (ISEG)
Pandas
• DataFrame.at
– Acede a um único valor para um par de etiquetas de
linha/coluna.
• DataFrame. iloc
– acede a um grupo de linhas e colunas por posição
inteira (s).
• DataFrame. Xs
– Retorna uma seção transversal (linha (s) ou coluna
(s)) da série/DataFrame.
• Série. Loc
– Acede a um grupo de valores utilizando etiquetas.
2018/19 - 12Carlos J. Costa (ISEG)
Pandas
• Celulas:
df.iloc[195][0]
• Linhas:
df.iloc[[195][0]]
• Colunas:
df.loc[:,'GDPpercapita']
2018/19 - 13Carlos J. Costa (ISEG)
Pandas
• Tipos de dados
df.dtypes
• Se o resultado for object há a necessidade de converter
uma coluna complete com etiqueta espefica para
numérico
df.loc[:,'GDPpercapita']=pd.to_numeric(df['GDPpercapita'],
errors='coerce’)
pd.to_numeric(argmento, errors) Errors pode ser
ignore, raise ou
coerce. Este último
converte em NAN
Pode ser lista,
tuplo, array,
série 1D
2018/19 - 14Carlos J. Costa (ISEG)
Pandas
• Obviamente, se for necessário também
nas outras variáveis:
• Pode-se entretanto
df.loc[:,'GDPpercapita']=pd.to_numeric(df['GDPpercapita'],
errors='coerce')
df.loc[:,'Military_percent_GDP']=pd.to_numeric(df['Military_percent_GDP
'], errors='coerce')
df.loc[:,'Unemployment rate(%)']=pd.to_numeric(df['Unemployment
rate(%)'], errors='coerce’)
• Pode-se ver o resultado:
df.dtypes
2018/19 - 15Carlos J. Costa (ISEG)
Pandas
• Criar uma nova dataframe
YX = df[['GDPpercapita','Military_percent_GDP','Unemployment
rate(%)’]]
• e
YX.dtypes
• Tudo numéricos claro…
2018/19 - 16Carlos J. Costa (ISEG)
Pandas
• Eliminar missing values de toda a matriz
YX=YX.dropna()
• Criar o X e Y:
Y = YX[['GDPpercapita']]
X = YX[['Military_percent_GDP','Unemployment
rate(%)']]
2018/19 - 17Carlos J. Costa (ISEG)
Pandas
• Para criar uma coluna correspondente a
internet per capita é necessário fazer
simplesmente:
df['internetpercapita']=df['Internet
users']/df['Population’]
2018/19 - 18Carlos J. Costa (ISEG)
Bibliografia
• https://pandas.pydata.org/
• https://pandas.pydata.org/pandas-
docs/stable/getting_started/10min.html
• https://scikit-learn.org/
• https://scikit-learn.org/stable/index.html
• https://www.statsmodels.org/stable/index.h
tml

Python Pandas

  • 1.
    2018/19 - 1CarlosJ. Costa (ISEG) CARLOS J. COSTA Carlos J. Costa (2018/2019)
  • 2.
    2018/19 - 2CarlosJ. Costa (ISEG) Pandas • https://pandas.pydata.org/ • Biblioteca open source, • Licenciado sobre BSD • Alto desempenho • Fácil de utilizar • Inclui ferramentas de estruturas de dados e análise de dados
  • 3.
    2018/19 - 3CarlosJ. Costa (ISEG) Pandas • DataFrame – É uma estrutura etiquetada – Tem colunas com tipos de dados potencialmente diferentes – Parecido com folha de cálculo ou tabela SQL – É o objeto mais utilizado pelo Pandas – Para além dos dados pode identificar ainda as colunas (etiquetas das colunas) e índices (etiquetas das linhas)
  • 4.
    2018/19 - 4CarlosJ. Costa (ISEG) Pandas • Criar dataframe a partir de dicionário import pandas as pd d = {'col1': [1,2,1,3,1,2], 'col2': [1,2,3,4,5,6]} df = pd.DataFrame(data=d) df.count() df['col1'].value_counts() df['col1'][1]=5
  • 5.
    2018/19 - 5CarlosJ. Costa (ISEG) Pandas • Copiar coluna coluna1=df['col1’] coluna1[2]=99 • Qual o resultado em coluna1 e df? nova_coluna1 = coluna1.copy() nova_coluna1[2]=9999 • E agora?
  • 6.
    2018/19 - 6CarlosJ. Costa (ISEG) Pandas • No collaboratoy: from google.colab import files files.upload() • Depois no final files.download(‘nome do ficheiro')
  • 7.
    2018/19 - 7CarlosJ. Costa (ISEG) Pandas • No computador, colocar o ficheiro de dados na mesma pasta onde está gravado o notebook
  • 8.
    2018/19 - 8CarlosJ. Costa (ISEG) Pandas • Importar pandas import pandas as pd df = pd.read_csv(‘factbook.csv')
  • 9.
    2018/19 - 9CarlosJ. Costa (ISEG) Pandas • Analisar informação df.head() #cinco linhas df.info() df.describe() df.columns
  • 10.
    2018/19 - 10CarlosJ. Costa (ISEG) Pandas • DataFrame.loc • Acede a um grupo de linhas e colunas por etiqueta (s) ou uma matriz booleana. • loc [] é principalmente baseado em etiquetas, mas também pode ser usado com uma matriz booleana.
  • 11.
    2018/19 - 11CarlosJ. Costa (ISEG) Pandas • DataFrame.at – Acede a um único valor para um par de etiquetas de linha/coluna. • DataFrame. iloc – acede a um grupo de linhas e colunas por posição inteira (s). • DataFrame. Xs – Retorna uma seção transversal (linha (s) ou coluna (s)) da série/DataFrame. • Série. Loc – Acede a um grupo de valores utilizando etiquetas.
  • 12.
    2018/19 - 12CarlosJ. Costa (ISEG) Pandas • Celulas: df.iloc[195][0] • Linhas: df.iloc[[195][0]] • Colunas: df.loc[:,'GDPpercapita']
  • 13.
    2018/19 - 13CarlosJ. Costa (ISEG) Pandas • Tipos de dados df.dtypes • Se o resultado for object há a necessidade de converter uma coluna complete com etiqueta espefica para numérico df.loc[:,'GDPpercapita']=pd.to_numeric(df['GDPpercapita'], errors='coerce’) pd.to_numeric(argmento, errors) Errors pode ser ignore, raise ou coerce. Este último converte em NAN Pode ser lista, tuplo, array, série 1D
  • 14.
    2018/19 - 14CarlosJ. Costa (ISEG) Pandas • Obviamente, se for necessário também nas outras variáveis: • Pode-se entretanto df.loc[:,'GDPpercapita']=pd.to_numeric(df['GDPpercapita'], errors='coerce') df.loc[:,'Military_percent_GDP']=pd.to_numeric(df['Military_percent_GDP '], errors='coerce') df.loc[:,'Unemployment rate(%)']=pd.to_numeric(df['Unemployment rate(%)'], errors='coerce’) • Pode-se ver o resultado: df.dtypes
  • 15.
    2018/19 - 15CarlosJ. Costa (ISEG) Pandas • Criar uma nova dataframe YX = df[['GDPpercapita','Military_percent_GDP','Unemployment rate(%)’]] • e YX.dtypes • Tudo numéricos claro…
  • 16.
    2018/19 - 16CarlosJ. Costa (ISEG) Pandas • Eliminar missing values de toda a matriz YX=YX.dropna() • Criar o X e Y: Y = YX[['GDPpercapita']] X = YX[['Military_percent_GDP','Unemployment rate(%)']]
  • 17.
    2018/19 - 17CarlosJ. Costa (ISEG) Pandas • Para criar uma coluna correspondente a internet per capita é necessário fazer simplesmente: df['internetpercapita']=df['Internet users']/df['Population’]
  • 18.
    2018/19 - 18CarlosJ. Costa (ISEG) Bibliografia • https://pandas.pydata.org/ • https://pandas.pydata.org/pandas- docs/stable/getting_started/10min.html • https://scikit-learn.org/ • https://scikit-learn.org/stable/index.html • https://www.statsmodels.org/stable/index.h tml