In [1]:
import pandas as pd
import numpy as np
Uma Series é um objeto semelhante a uma vetor que possui um vetor de dados e um vetor de labels associadas chamado index. Sua documentação completa se encontra em: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.html#pandas.Series
In [2]:
""" Apenas a partir dos valores """
obj = pd.Series([4, 7, -5, 3])
obj
Out[2]:
In [3]:
obj.values
Out[3]:
In [4]:
obj.index
Out[4]:
In [5]:
""" A partir dos valores e dos índices """
obj2 = pd.Series([4, 7, -5, 3], index=['d','b','a','c'])
obj2
Out[5]:
In [6]:
obj2.index
Out[6]:
In [7]:
""" A partir de um dictionary """
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
obj3 = pd.Series(sdata)
obj3
Out[7]:
In [8]:
""" A partir de um dictionary e dos índices """
states = ['California', 'Ohio', 'Oregon', 'Texas']
obj4 = pd.Series(sdata, index=states)
obj4
Out[8]:
In [9]:
obj2['a']
Out[9]:
In [10]:
obj2['d'] = 6
obj2['d']
Out[10]:
In [11]:
obj2[['c','a','d']]
Out[11]:
In [12]:
obj2[obj2 > 0]
Out[12]:
In [13]:
""" Multiplicação por um escalar """
obj2 * 2
Out[13]:
In [14]:
""" Operações de vetor do numpy """
import numpy as np
np.exp(obj2)
Out[14]:
In [15]:
""" Funções que funcionam com dictionaries """
'b' in obj2
Out[15]:
In [16]:
'e' in obj2
Out[16]:
In [17]:
""" Funções para identificar dados faltando """
obj4.isnull()
Out[17]:
In [18]:
obj4.notnull()
Out[18]:
In [19]:
""" Operações aritméticas com alinhamento automático dos índices """
obj3 + obj4
Out[19]:
Um DataFrame representa uma estrutura de dados tabular, semelhante a uma planilha de excel, contendo um conjunto ordenado de colunas, podendo ser cada uma de tipos de valores diferente. Um DataFrame possui um índice de linhas e um de colunas e pode ser encarado como um dict de Series. Sua documentação completa se encontra em: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html
In [20]:
""" A partir de um dictionary de vetores """
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'], \
'year': [2000, 2001, 2002, 2001, 2002], \
'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
frame = pd.DataFrame(data)
frame
Out[20]:
In [21]:
""" A partir de um dictionary em uma ordem específica das colunas """
pd.DataFrame(data, columns=['year', 'state', 'pop'])
Out[21]:
In [22]:
""" A partir de um dictionary e dos índices das colunas e/ou dos índices das linhas """
frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'], index=['one', 'two', 'three', 'four', 'five'])
frame2
Out[22]:
In [23]:
""" A partir de um dictionary de dictionaries aninhados """
pop = {'Nevada': {2001: 2.4, 2002: 2.9}, 'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame3 = pd.DataFrame(pop)
frame3
Out[23]:
Note que estas não são todas as formas possíveis de se fazê-lo. Para uma visão mais completa veja a seguinte tabela com as possíveis entradas para o construtor do DataFrame:
| Type | Notes |
|---|---|
| 2D ndarray | A matrix of data, passing optional row and column labels |
| dict of arrays, lists, or tuples | Each sequence becomes a column in the DataFrame. All sequences must be the same length. |
| NumPy structured/record array | Treated as the “dict of arrays” case |
| dict of Series | Each value becomes a column. Indexes from each Series are unioned together to form the result’s row index if no explicit index is passed. |
| dict of dicts | Each inner dict becomes a column. Keys are unioned to form the row index as in the “dict of Series” case. |
| list of dicts or Series | Each item becomes a row in the DataFrame. Union of dict keys or Series indexes become the DataFrame’s column labels |
| List of lists or tuples | Treated as the “2D ndarray” case |
| Another DataFrame | The DataFrame’s indexes are used unless different ones are passed |
| NumPy MaskedArray | Like the “2D ndarray” case except masked values become NA/missing in the DataFrame result |
In [24]:
""" Acessando colunas como em uma Series ou dictionary """
frame2['state']
Out[24]:
In [25]:
""" Como colunas como um atributo """
frame2.year
Out[25]:
In [26]:
""" Acessando linhas com o nome da linha """
frame2.ix['three']
Out[26]:
In [27]:
""" Acessando linhas com o índice da linha """
frame2.ix[3]
Out[27]:
In [28]:
""" Modificando uma coluna com um valor """
frame2['debt'] = 16.5
frame2
Out[28]:
In [29]:
""" Modificando uma coluna com um vetor """
frame2['debt'] = np.arange(5.)
frame2
Out[29]:
In [30]:
""" Modificando uma coluna com uma Series """
val = pd.Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five'])
frame2['debt'] = val
frame2
Out[30]:
In [31]:
""" Adicionando uma coluna que não existe """
frame2['eastern'] = frame2.state == 'Ohio'
frame2
Out[31]:
In [32]:
""" Deletando uma coluna """
del frame2['eastern']
frame2.columns
Out[32]: