Plotly 与Pandas和Cufflinks
Pandas 是 Python 中非常流行的数据分析库。它也有自己的绘图功能支持。但是,Pandas图不提供可视化的交互性。值得庆幸的是,plotly 的交互式和动态绘图可以使用 Pandas数据框 objects.
我们首先从简单的列表对象构建一个 Dataframe。
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)
数据框列用作数据值 x and y 图对象跟踪的属性。在这里,我们将使用 name and marks columns.
trace = go.Bar(x = df.name, y = df.marks) fig = go.Figure(data = [trace]) iplot(fig)
Jupyter notebook 中会显示一个简单的条形图,如下所示:
Plotly 建立在 d3.js 特别是一个图表库,可以直接与 Pandas数据框 使用另一个名为 Cufflinks .
如果尚不可用,请使用你喜欢的包管理器安装Cufflinks包,例如 pip 如下所示:
pip install cufflinks or conda install -c conda-forge cufflinks-py
首先,将Cufflinks与其他库一起导入,例如 Pandas and numpy 可以将其配置为离线使用。
import cufflinks as cf cf.go_offline()
现在,你可以直接使用 Pandas数据框 无需使用 trace 和 figure 对象即可显示各种绘图 graph_objs 模块 正如我们之前所做的那样。
df.iplot(kind = 'bar', x = 'name', y = 'marks')
条形图,与之前的非常相似,如下图所示:
来自数据库的 Pandas 数据框
它可以由不同类型数据库中的数据填充,而不是使用 Python 列表来构建数据框。例如,可以将来自 CSV 文件、SQLite 数据库表或 mysql 数据库表的数据提取到 Pandas 数据框中,最终使用 图对象 or Cufflinks接口 .
从中获取数据 CSV file , 我们可以用 read_csv() Pandas 库中的函数。
import pandas as pd df = pd.read_csv('sample-data.csv')
如果数据在 SQLite 数据库表 , 可以使用 SQLAlchemy 库 如下:
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)
另一方面,数据来自 MySQL数据库 在 Pandas 数据框中检索如下:
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)