Python Pandas - DataFrame

Um quadro de dados é uma estrutura de dados bidimensional, ou seja, os dados são alinhados de forma tabular em linhas e colunas.

Recursos do DataFrame

  • Potencialmente, as colunas são de tipos diferentes
  • Tamanho - Mutável
  • Eixos rotulados (linhas e colunas)
  • Pode realizar operações aritméticas em linhas e colunas

Estrutura

Vamos supor que estamos criando um quadro de dados com os dados do aluno.

Você pode pensar nisso como uma tabela SQL ou uma representação de dados de planilha.

pandas.DataFrame

Um DataFrame pandas pode ser criado usando o seguinte construtor -

pandas.DataFrame( data, index, columns, dtype, copy)

Os parâmetros do construtor são os seguintes -

Sr. Não Parâmetro e Descrição
1

data

os dados assumem várias formas, como ndarray, série, mapa, listas, dict, constantes e também outro DataFrame.

2

index

Para os rótulos de linha, o Índice a ser usado para o quadro resultante é Padrão Opcional np.arange (n) se nenhum índice for passado.

3

columns

Para rótulos de coluna, a sintaxe padrão opcional é - np.arange (n). Isso só é verdade se nenhum índice for passado.

4

dtype

Tipo de dados de cada coluna.

5

copy

Este comando (ou seja lá o que for) é usado para copiar dados, se o padrão for False.

Criar DataFrame

Um DataFrame do pandas pode ser criado usando várias entradas como -

  • Lists
  • dict
  • Series
  • Numpy ndarrays
  • Outro DataFrame

Nas seções subsequentes deste capítulo, veremos como criar um DataFrame usando essas entradas.

Crie um DataFrame vazio

Um DataFrame básico, que pode ser criado, é um Dataframe Vazio.

Exemplo

#import the pandas library and aliasing as pd
import pandas as pd
df = pd.DataFrame()
print df

Está output é o seguinte -

Empty DataFrame
Columns: []
Index: []

Crie um DataFrame a partir de listas

O DataFrame pode ser criado usando uma única lista ou uma lista de listas.

Exemplo 1

import pandas as pd
data = [1,2,3,4,5]
df = pd.DataFrame(data)
print df

Está output é o seguinte -

0
0    1
1    2
2    3
3    4
4    5

Exemplo 2

import pandas as pd
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'])
print df

Está output é o seguinte -

Name      Age
0     Alex      10
1     Bob       12
2     Clarke    13

Exemplo 3

import pandas as pd
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'],dtype=float)
print df

Está output é o seguinte -

Name     Age
0     Alex     10.0
1     Bob      12.0
2     Clarke   13.0

Note - Observe, o dtype parâmetro muda o tipo de coluna Age para ponto flutuante.

Crie um DataFrame de Dict of ndarrays / Lists

Todos ndarraysdeve ter o mesmo comprimento. Se o índice for passado, o comprimento do índice deve ser igual ao comprimento das matrizes.

Se nenhum índice for passado, então, por padrão, o índice será o intervalo (n), onde n é o comprimento da matriz.

Exemplo 1

import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data)
print df

Está output é o seguinte -

Age      Name
0     28        Tom
1     34       Jack
2     29      Steve
3     42      Ricky

Note- Observe os valores 0,1,2,3. Eles são o índice padrão atribuído a cada um usando o intervalo de funções (n).

Exemplo 2

Vamos agora criar um DataFrame indexado usando arrays.

import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data, index=['rank1','rank2','rank3','rank4'])
print df

Está output é o seguinte -

Age    Name
rank1    28      Tom
rank2    34     Jack
rank3    29    Steve
rank4    42    Ricky

Note - Observe, o index parâmetro atribui um índice para cada linha.

Crie um DataFrame a partir da Lista de Dictos

A lista de dicionários pode ser passada como dados de entrada para criar um DataFrame. As chaves de dicionário são, por padrão, consideradas nomes de coluna.

Exemplo 1

O exemplo a seguir mostra como criar um DataFrame passando uma lista de dicionários.

import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
print df

Está output é o seguinte -

a    b      c
0   1   2     NaN
1   5   10   20.0

Note - Observe, NaN (não é um número) é acrescentado nas áreas ausentes.

Exemplo 2

O exemplo a seguir mostra como criar um DataFrame passando uma lista de dicionários e os índices de linha.

import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data, index=['first', 'second'])
print df

Está output é o seguinte -

a   b       c
first   1   2     NaN
second  5   10   20.0

Exemplo 3

O exemplo a seguir mostra como criar um DataFrame com uma lista de dicionários, índices de linha e índices de coluna.

import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]

#With two column indices, values same as dictionary keys
df1 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b'])

#With two column indices with one index with other name
df2 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b1'])
print df1
print df2

Está output é o seguinte -

#df1 output
         a  b
first    1  2
second   5  10

#df2 output
         a  b1
first    1  NaN
second   5  NaN

Note- Observe, df2 DataFrame é criado com um índice de coluna diferente da chave de dicionário; assim, anexou o NaN no lugar. Enquanto df1 é criado com índices de coluna iguais às chaves de dicionário, então NaN é anexado.

Crie um DataFrame a partir do Dict of Series

O Dicionário de Séries pode ser passado para formar um DataFrame. O índice resultante é a união de todos os índices de série passados.

Exemplo

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df

Está output é o seguinte -

one    two
a     1.0    1
b     2.0    2
c     3.0    3
d     NaN    4

Note - Observe, para a série um, não há rótulo ‘d’ passou, mas no resultado, para o d rótulo, NaN é anexado com NaN.

Vamos agora entender column selection, addition, e deletion por meio de exemplos.

Seleção de coluna

Vamos entender isso selecionando uma coluna do DataFrame.

Exemplo

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df ['one']

Está output é o seguinte -

a     1.0
b     2.0
c     3.0
d     NaN
Name: one, dtype: float64

Adição de coluna

Vamos entender isso adicionando uma nova coluna a um quadro de dados existente.

Exemplo

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)

# Adding a new column to an existing DataFrame object with column label by passing new series

print ("Adding a new column by passing as Series:")
df['three']=pd.Series([10,20,30],index=['a','b','c'])
print df

print ("Adding a new column using the existing columns in DataFrame:")
df['four']=df['one']+df['three']

print df

Está output é o seguinte -

Adding a new column by passing as Series:
     one   two   three
a    1.0    1    10.0
b    2.0    2    20.0
c    3.0    3    30.0
d    NaN    4    NaN

Adding a new column using the existing columns in DataFrame:
      one   two   three    four
a     1.0    1    10.0     11.0
b     2.0    2    20.0     22.0
c     3.0    3    30.0     33.0
d     NaN    4     NaN     NaN

Exclusão de coluna

As colunas podem ser excluídas ou removidas; vamos dar um exemplo para entender como.

Exemplo

# Using the previous DataFrame, we will delete a column
# using del function
import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']), 
   'three' : pd.Series([10,20,30], index=['a','b','c'])}

df = pd.DataFrame(d)
print ("Our dataframe is:")
print df

# using del function
print ("Deleting the first column using DEL function:")
del df['one']
print df

# using pop function
print ("Deleting another column using POP function:")
df.pop('two')
print df

Está output é o seguinte -

Our dataframe is:
      one   three  two
a     1.0    10.0   1
b     2.0    20.0   2
c     3.0    30.0   3
d     NaN     NaN   4

Deleting the first column using DEL function:
      three    two
a     10.0     1
b     20.0     2
c     30.0     3
d     NaN      4

Deleting another column using POP function:
   three
a  10.0
b  20.0
c  30.0
d  NaN

Seleção, adição e exclusão de linhas

Agora entenderemos a seleção, adição e exclusão de linhas por meio de exemplos. Comecemos com o conceito de seleção.

Seleção por rótulo

As linhas podem ser selecionadas passando o rótulo da linha para um loc função.

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df.loc['b']

Está output é o seguinte -

one 2.0
two 2.0
Name: b, dtype: float64

O resultado é uma série com rótulos como nomes de colunas do DataFrame. E o nome da série é o rótulo com o qual ele é recuperado.

Seleção por localização inteira

As linhas podem ser selecionadas passando a localização do inteiro para um iloc função.

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df.iloc[2]

Está output é o seguinte -

one   3.0
two   3.0
Name: c, dtype: float64

Fatiar linhas

Várias linhas podem ser selecionadas usando o operador ':'.

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print df[2:4]

Está output é o seguinte -

one  two
c  3.0    3
d  NaN    4

Adição de linhas

Adicione novas linhas a um DataFrame usando o appendfunção. Esta função irá anexar as linhas no final.

import pandas as pd

df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])

df = df.append(df2)
print df

Está output é o seguinte -

a  b
0  1  2
1  3  4
0  5  6
1  7  8

Exclusão de linhas

Use o rótulo de índice para excluir ou descartar linhas de um DataFrame. Se o rótulo estiver duplicado, várias linhas serão eliminadas.

Se você observar, no exemplo acima, os rótulos estão duplicados. Vamos eliminar um rótulo e ver quantas linhas serão eliminadas.

import pandas as pd

df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])

df = df.append(df2)

# Drop rows with label 0
df = df.drop(0)

print df

Está output é o seguinte -

a b
1 3 4
1 7 8

No exemplo acima, duas linhas foram eliminadas porque essas duas contêm o mesmo rótulo 0.