Covil Do Dev

Criando DataFrames do Pandas

Aprenda a criar DataFrames do Pandas. Realize operações com dados e aprenda a criar DataFrames de diferentes fontes.


Lindomar Rodrigues
Lindomar Rodrigues

Atualizado

O DataFrame do Pandas é uma estrutura de dados bidimensional em forma de tabelas, semelhante a uma tabela em SQL ou até com uma planilha do Excel, ou do Google Sheets.

Um DataFrame é composto por três componentes principais: dados, linhas e colunas.

Abaixo temos um exemplo de uma tabela que poderia ser representada em um DataFrame:

EstadoSiglaPopulaçãoCapital
0AcreAC803,5 milRio Branco
1AmapáAP776,6 milMacapá
2AmazonasAM3,9 milhõesManaus
3ParáPA8,1 milhõesBelém
4RondôniaRO1,7 milhãoPorto Velho
5RoraimaRR505,6 milBoa Vista
6TocantinsTO1,5 milhãoPalmas

Representado em uma DataFrame a saída seria semelhante ao exibido abaixo:

      Estado Sigla    População      Capital
0       Acre    AC    803,5 mil   Rio Branco
1      Amapá    AP    776,6 mil       Macapá
2   Amazonas    AM  3,9 milhões       Manaus
3       Pará    PA  8,1 milhões        Belém
4   Rondônia    RO   1,7 milhão  Porto Velho
5    Roraima    RR    505,6 mil    Boa Vista
6  Tocantins    TO   1,5 milhão       Palmas

Criando um DataFrame do Pandas

Um DataFrame do Pandas pode ser criado carregando um conjunto de dados(chamado dataset) de alguma fonte externa.

Essa fonte pode ser um banco de dados em SQL, uma planilha do Excel, um arquivo CSV ou praticamente qualquer outra forma em que seja possível armazenar algo como uma tabela.

Também podemos criar um DataFrame a partir de uma estrutura de dados nativa do Python, como uma lista ou um dicionário.

Criando um DataFrame utilizando listas

Uma forma simples de se criar um DataFrame, é utilizando listas.

Podemos montar um DataFrame com os estados da região norte do Brasil com uma lista da seguinte forma:

import pandas as pd

estados = ['Acre',
           'Amapá',
           'Amazonas',
           'Pará',
           'Rondônia',
           'Roraima',
           'Tocantins']

df = pd.DataFrame(estados)

print(df)

A saída será:

           0
0       Acre
1      Amapá
2   Amazonas
3       Pará
4   Rondônia
5    Roraima
6  Tocantins

Poderíamos definir o nome da coluna com o argumento columns, da seguinte forma:

import pandas as pd

estados = ['Acre',
           'Amapá',
           'Amazonas',
           'Pará',
           'Rondônia',
           'Roraima',
           'Tocantins']

df = pd.DataFrame(estados, columns=['estados'])

print(df)

A saída será:

     estados
0       Acre
1      Amapá
2   Amazonas
3       Pará
4   Rondônia
5    Roraima
6  Tocantins

Também podemos utilizar uma lista de listas para montar um DataFrame com várias colunas:

import pandas as pd

capitais = [['Acre', 'AC', '803,5 mil', 'Rio Branco'],
            ['Amapá', 'AP', '776,6 mil', 'Macapá'],
            ['Amazonas', 'AM', '3,9 milhões', 'Manaus'],
            ['Pará', 'PA', '8,1 milhões', 'Belém'],
            ['Rondônia', 'RO', '1,7 milhão', 'Porto Velho'],
            ['Roraima', 'RR', '505,6 mil', 'Boa Vista'],
            ['Tocantins', 'TO', '1,5 milhão', 'Palmas']]

df = pd.DataFrame(capitais, columns=['Estado', 'Sigla', 'População', 'Capital'])

print(df)

A saída será:

      Estado Sigla    População      Capital
0       Acre    AC    803,5 mil   Rio Branco
1      Amapá    AP    776,6 mil       Macapá
2   Amazonas    AM  3,9 milhões       Manaus
3       Pará    PA  8,1 milhões        Belém
4   Rondônia    RO   1,7 milhão  Porto Velho
5    Roraima    RR    505,6 mil    Boa Vista
6  Tocantins    TO   1,5 milhão       Palmas

Criando um DataFrame utilizando dicionários

Outra forma de se criar um DataFrame é utilizando dicionários.

Podemos fazer um dicionário, onde cada chave representa uma coluna, com as linhas sendo representadas por outro dicionário onde cada chave representa o indice da linha.

import pandas as pd

capitais = {'Estado': {0: 'Acre',
                       1: 'Amapá',
                       2: 'Amazonas',
                       3: 'Pará',
                       4: 'Rondônia',
                       5: 'Roraima',
                       6: 'Tocantins'},
            'Sigla': {0: 'AC',
                      1: 'AP',
                      2: 'AM',
                      3: 'PA',
                      4: 'RO',
                      5: 'RR',
                      6: 'TO'},
            'População': {0: '803,5 mil',
                          1: '776,6 mil',
                          2: '3,9 milhões',
                          3: '8,1 milhões',
                          4: '1,7 milhão',
                          5: '505,6 mil',
                          6: '1,5 milhão'},
            'Capital': {0: 'Rio Branco',
                        1: 'Macapá',
                        2: 'Manaus',
                        3: 'Belém',
                        4: 'Porto Velho',
                        5: 'Boa Vista',
                        6: 'Palmas'}}

df = pd.DataFrame(capitais)

print(df)

A saída será:

      Estado Sigla    População      Capital
0       Acre    AC    803,5 mil   Rio Branco
1      Amapá    AP    776,6 mil       Macapá
2   Amazonas    AM  3,9 milhões       Manaus
3       Pará    PA  8,1 milhões        Belém
4   Rondônia    RO   1,7 milhão  Porto Velho
5    Roraima    RR    505,6 mil    Boa Vista
6  Tocantins    TO   1,5 milhão       Palmas

Podemos também fazer um dicionário, onde cada chave representa uma coluna, com as linhas sendo representadas por uma lista.

import pandas as pd

capitais = {'Estado': ['Acre',
                       'Amapá',
                       'Amazonas',
                       'Pará',
                       'Rondônia',
                       'Roraima',
                       'Tocantins'],
            'Sigla': ['AC',
                      'AP',
                      'AM',
                      'PA',
                      'RO',
                      'RR',
                      'TO'],
            'População': ['803,5 mil',
                          '776,6 mil',
                          '3,9 milhões',
                          '8,1 milhões',
                          '1,7 milhão',
                          '505,6 mil',
                          '1,5 milhão'],
            'Capital': ['Rio Branco',
                        'Macapá',
                        'Manaus',
                        'Belém',
                        'Porto Velho',
                        'Boa Vista',
                        'Palmas']}

df = pd.DataFrame(capitais)

print(df)

A saída será:

      Estado Sigla    População      Capital
0       Acre    AC    803,5 mil   Rio Branco
1      Amapá    AP    776,6 mil       Macapá
2   Amazonas    AM  3,9 milhões       Manaus
3       Pará    PA  8,1 milhões        Belém
4   Rondônia    RO   1,7 milhão  Porto Velho
5    Roraima    RR    505,6 mil    Boa Vista
6  Tocantins    TO   1,5 milhão       Palmas

Outra forma de fazer, que é a minha favorita, é utilizando uma lista de dicionários.

import pandas as pd

capitais = [
    {'Estado': 'Acre',
     'Sigla': 'AC',
     'População': '803,5 mil',
     'Capital': 'Rio Branco'},

    {'Estado': 'Amapá',
     'Sigla': 'AP',
     'População': '776,6 mil',
     'Capital': 'Macapá'},

    {'Estado': 'Amazonas',
     'Sigla': 'AM',
     'População': '3,9 milhões',
     'Capital': 'Manaus'},

    {'Estado': 'Pará',
     'Sigla': 'PA',
     'População': '8,1 milhões',
     'Capital': 'Belém'},

    {'Estado': 'Rondônia',
     'Sigla': 'RO',
     'População': '1,7 milhão',
     'Capital': 'Porto Velho'},

    {'Estado': 'Roraima',
     'Sigla': 'RR',
     'População': '505,6 mil',
     'Capital': 'Boa Vista'},

    {'Estado': 'Tocantins',
     'Sigla': 'TO',
     'População': '1,5 milhão',
     'Capital': 'Palmas'}
]

df = pd.DataFrame(capitais)

print(df)

A saída será:

      Estado Sigla    População      Capital
0       Acre    AC    803,5 mil   Rio Branco
1      Amapá    AP    776,6 mil       Macapá
2   Amazonas    AM  3,9 milhões       Manaus
3       Pará    PA  8,1 milhões        Belém
4   Rondônia    RO   1,7 milhão  Porto Velho
5    Roraima    RR    505,6 mil    Boa Vista
6  Tocantins    TO   1,5 milhão       Palmas

Selecionando apenas algumas colunas do DataFrame

Caso o objetivo seja selecionar apenas o estado e a capital, poderiamos fazer de forma simples, selecionando pelo nome da coluna.

import pandas as pd

capitais = {'Estado': ['Acre', 'Amapá', 'Amazonas', 'Pará', 'Rondônia', 'Roraima', 'Tocantins'],

            'Sigla': ['AC', 'AP', 'AM', 'PA', 'RO', 'RR', 'TO'],

            'População': ['803,5 mil', '776,6 mil', '3,9 milhões', '8,1 milhões', '1,7 milhão', '505,6 mil',
                          '1,5 milhão'],

            'Capital': ['Rio Branco', 'Macapá', 'Manaus', 'Belém', 'Porto Velho', 'Boa Vista', 'Palmas']}

df = pd.DataFrame(capitais)

print(df[['Estado', 'Capital']])

A saída será:

      Estado      Capital
0       Acre   Rio Branco
1      Amapá       Macapá
2   Amazonas       Manaus
3       Pará        Belém
4   Rondônia  Porto Velho
5    Roraima    Boa Vista
6  Tocantins       Palmas

Selecionando apenas algumas linhas do DataFrame

Para selecionar linhas, podemos utilizar o método loc passando o rótulo da linha, para selecionar a linha 0 poderiamos fazer:

import pandas as pd

capitais = {'Estado': ['Acre', 'Amapá', 'Amazonas', 'Pará', 'Rondônia', 'Roraima', 'Tocantins'],

            'Sigla': ['AC', 'AP', 'AM', 'PA', 'RO', 'RR', 'TO'],

            'População': ['803,5 mil', '776,6 mil', '3,9 milhões', '8,1 milhões', '1,7 milhão', '505,6 mil',
                          '1,5 milhão'],

            'Capital': ['Rio Branco', 'Macapá', 'Manaus', 'Belém', 'Porto Velho', 'Boa Vista', 'Palmas']}

df = pd.DataFrame(capitais)

print(df.loc[0])

A saída será:

Estado             Acre
Sigla                AC
População     803,5 mil
Capital      Rio Branco
Name: 0, dtype: object

Para selecionar a linha pelo índice, podemos utilizar outro método, o iloc que funciona de forma semelhante, porém utilizar o índice e não o rótulo como parâmetro.

import pandas as pd

capitais = {'Estado': ['Acre', 'Amapá', 'Amazonas', 'Pará', 'Rondônia', 'Roraima', 'Tocantins'],

            'Sigla': ['AC', 'AP', 'AM', 'PA', 'RO', 'RR', 'TO'],

            'População': ['803,5 mil', '776,6 mil', '3,9 milhões', '8,1 milhões', '1,7 milhão', '505,6 mil',
                          '1,5 milhão'],

            'Capital': ['Rio Branco', 'Macapá', 'Manaus', 'Belém', 'Porto Velho', 'Boa Vista', 'Palmas']}

df = pd.DataFrame(capitais)

print(df.iloc[0])

A saída será:

Estado             Acre
Sigla                AC
População     803,5 mil
Capital      Rio Branco
Name: 0, dtype: object

Para selecionar multiplas linhas, podemos fazer de forma semelhante a quando queremos extrair uma sublista de uma lista, utilizando o operador :.

No exemplo abaixo é selecionar da linha 1 até a linha 3.

import pandas as pd

capitais = {'Estado': ['Acre', 'Amapá', 'Amazonas', 'Pará', 'Rondônia', 'Roraima', 'Tocantins'],

            'Sigla': ['AC', 'AP', 'AM', 'PA', 'RO', 'RR', 'TO'],

            'População': ['803,5 mil', '776,6 mil', '3,9 milhões', '8,1 milhões', '1,7 milhão', '505,6 mil',
                          '1,5 milhão'],

            'Capital': ['Rio Branco', 'Macapá', 'Manaus', 'Belém', 'Porto Velho', 'Boa Vista', 'Palmas']}

df = pd.DataFrame(capitais)

print(df.iloc[1:3])

A saída será:

     Estado Sigla    População Capital
1     Amapá    AP    776,6 mil  Macapá
2  Amazonas    AM  3,9 milhões  Manaus

Obrigado por visitar o blog e por ler esse artigo, se tive qualquer dúvida, ideia ou sugestão, não hesite em entrar em contato pelo meu e-mail: lindomar@covildodev.com.br