Completamente com pandas e botões de punho
Pandas é uma biblioteca muito popular em Python para análise de dados. Ele também tem seu próprio suporte de função de plotagem. No entanto, os gráficos do Pandas não fornecem interatividade na visualização. Felizmente, os gráficos interativos e dinâmicos do plotly podem ser construídos usandoPandas dataframe objetos.
Começamos construindo um Dataframe a partir de objetos de lista simples.
data = [['Ravi',21,67],['Kiran',24,61],['Anita',18,46],['Smita',20,78],['Sunil',17,90]]
df = pd.DataFrame(data,columns = ['name','age','marks'],dtype = float)
As colunas do dataframe são usadas como valores de dados para x e ypropriedades dos traços do objeto gráfico. Aqui, vamos gerar um traço de barra usandoname e marks colunas.
trace = go.Bar(x = df.name, y = df.marks)
fig = go.Figure(data = [trace])
iplot(fig)
Um gráfico de barra simples será exibido no caderno Jupyter conforme abaixo -
Plotly é construído em cima de d3.js e é especificamente uma biblioteca de gráficos que pode ser usada diretamente com Pandas dataframes usando outra biblioteca chamada Cufflinks.
Se ainda não estiver disponível, instale o pacote de abotoaduras usando seu gerenciador de pacotes favorito, como pip como dado abaixo -
pip install cufflinks
or
conda install -c conda-forge cufflinks-py
Primeiro, importe os botões de punho junto com outras bibliotecas, como Pandas e numpy que pode configurá-lo para uso offline.
import cufflinks as cf
cf.go_offline()
Agora, você pode usar diretamente Pandas dataframe para exibir vários tipos de gráficos sem ter que usar objetos de traço e figura de graph_objs module como temos feito anteriormente.
df.iplot(kind = 'bar', x = 'name', y = 'marks')
Gráfico de barras, muito semelhante ao anterior, será exibido conforme abaixo -
Dataframes do Pandas de bancos de dados
Em vez de usar listas Python para construir dataframe, ele pode ser preenchido por dados em diferentes tipos de bancos de dados. Por exemplo, dados de um arquivo CSV, tabela de banco de dados SQLite ou tabela de banco de dados mysql podem ser buscados em um dataframe Pandas, que eventualmente é submetido a gráficos usandoFigure object ou Cufflinks interface.
Para buscar dados de CSV file, podemos usar read_csv() função da biblioteca Pandas.
import pandas as pd
df = pd.read_csv('sample-data.csv')
Se os dados estiverem disponíveis em SQLite database table, pode ser recuperado usando SQLAlchemy library como segue -
import pandas as pd
from sqlalchemy import create_engine
disk_engine = create_engine('sqlite:///mydb.db')
df = pd.read_sql_query('SELECT name,age,marks', disk_engine)
Por outro lado, os dados de MySQL database é recuperado em um dataframe Pandas da seguinte forma -
import pymysql
import pandas as pd
conn = pymysql.connect(host = "localhost", user = "root", passwd = "xxxx", db = "mydb")
cursor = conn.cursor()
cursor.execute('select name,age,marks')
rows = cursor.fetchall()
df = pd.DataFrame( [[ij for ij in i] for i in rows] )
df.rename(columns = {0: 'Name', 1: 'age', 2: 'marks'}, inplace = True)