Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

Data Science and Machine Learning - #22 Paginação

25/09/2021

Na aula de hoje vou explicar como inserir paginação dos dados utilizando Pandas dentro do Python através de uma aplicação web.

Paginação com Pandas e Python

project/urls.py

Primeiramente vamos criar uma rota de páginas que receba um parâmetro dinâmico que será o número da página, por exemplo /page/1, /page/2 e assim por diante.

path('page/<int:page>/', home),

app/views.py

Dentro da views vamos verificar na função home se existe o parâmetro page e caso ele exista vamos filtrar os dados por páginas:


from django.core.paginator import Paginator

def home(request,page=None):
    #data['dados']=df[(df['release_year']>2009) & (df['country']=='Brazil')]\
    counter = 0
    list = []
    rows = len(df.index)
    print(page)

    #Botão de detalhes
    while(counter < rows):
        list.append("<a href='/detalhes/"+str(counter)+"'>Detalhes</a>")
        counter+=1
    df['links']=list

    #Paginação
    registers = 10
    if((page is None) | (page == 1)):
        page_number = 1
        start = 0
        end = registers
    else:
        page_number = int(page)
        start = registers * page_number - registers
        end = start + registers
    paginator = Paginator(df.dropna(),registers)
    data['paginator']=paginator.get_page(page_number)

    #Plotagem de gráficos
    trace = go.Bar(
        x=df.sort_values(by='release_year')['release_year'].unique(),
        y=df.groupby('release_year')['title'].count()
    )
    datas=[trace]
    data['grafico']=py.plot(datas,output_type='div')
    """trace = go.Pie(
        labels=df['type'].unique(),
        values=df.groupby('type')['title'].count()
    )"""
    datas = [trace]
    data['grafico'] = py.plot(datas, output_type='div')

    #Exibição dos dados
    data['dados']=df[['title','country','links']]\
        .dropna()\
        .iloc[start:end]\
        .to_html(render_links=True, escape=False,classes=['table','table-striped','mt-5'])
    data['countryFilter']=df['country'].sort_values().unique()
    return render(request,'index.html',data)

app/templates/index.html

Vamos agora exibir a paginação no nosso template final:

<nav aria-label="Page navigation example">
  <ul class="pagination justify-content-center">
      {% if paginator.has_previous %}
        <li class="page-item"><a class="page-link" href="/page/{{paginator.previous_page_number}}">Anterior</a></li>
      {% endif %}

    <li class="page-item"><a class="page-link" href="#">{{paginator.number}}</a></li>

      {% if paginator.has_next %}
        <li class="page-item"><a class="page-link" href="/page/{{paginator.next_page_number}}">Próxima</a></li>
      {% endif %}
  </ul>
</nav>

Por hoje é só! Sucesso nos códigos e na vida!

Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

Posts Relacionados

Data Science and Machine Learning - #21 Aplicação Real VI (Gráficos)
Nesse tutorial aprenderemos como plotar gráficos utilizando a lib Plotly através de uma aplicação real no Python.
Saiba mais!
Data Science and Machine Learning - #23 Introdução ao Machine Learning
Nesse tutorial iniciaremos o aprendizado de Machine Learning, vendo os conceitos principais, as referências e um pouco sobre essa área de estudo.
Saiba mais!
Python
Nesta seção aprofundaremos os conhecimentos sobre uma das linguagens em maior ascenção no mercado, o Python.
Saiba mais!