Plotly 与 Pandas 和 Cufflinks
Pandas 是 Python 中非常流行的数据分析库。它还支持自己的绘图函数。但是,Pandas 绘图在可视化方面不提供交互性。值得庆幸的是,可以使用 Pandas dataframe 对象构建 plotly 的交互式动态图。
我们首先从简单的列表对象构建一个 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 和 y 属性的数据值。在这里,我们将使用 name 和 marks 列生成一个条形图。
trace = go.Bar(x = df.name, y = df.marks) fig = go.Figure(data = [trace]) iplot(fig)
一个简单的条形图将显示在 Jupyter 笔记本中,如下所示 −
Plotly 建立在 d3.js 之上,是一个图表库,可以使用另一个名为 Cufflinks 的库直接与 Pandas dataframes 一起使用。
如果尚未安装,请使用您最喜欢的包管理器安装 cufflinks 包,例如pip 如下所示 −
pip install cufflinks 或 conda install -c conda-forge cufflinks-py
首先,导入 cufflinks 以及其他库,例如 Pandas 和 numpy,这些库可以将其配置为离线使用。
import cufflinks as cf cf.go_offline()
现在,您可以直接使用 Pandas dataframe 显示各种图表,而不必像我们之前所做的那样使用 graph_objs module 中的跟踪和图形对象。
df.iplot(kind = 'bar', x = 'name', y = 'marks')
条形图,与之前非常相似的显示如下 −
来自数据库的 Pandas 数据框
不用 Python 列表来构建数据框,而是可以用不同类型数据库中的数据来填充。例如,可以将 CSV 文件、SQLite 数据库表或 mysql 数据库表中的数据提取到 Pandas 数据框中,最终使用 Figure 对象 或 Cufflinks 接口 将其绘制成 plotly 图形。
要从 CSV 文件 中获取数据,我们可以使用 Pandas 库中的 read_csv() 函数。
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)