Data Science and Machine Learning - #22 Paginação
25/09/2021Na 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!
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.
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.