Plotly 简明教程

Pandas 是 Python 中一个非常流行的数据分析库。它也有自己的绘图函数支持。但是,Pandas 绘图没有提供可视化交互性。值得庆幸的是,使用 Pandas dataframe 对象可以构建 plotly 的交互式动态绘图。

我们从简单列表对象构建一个数据框开始。

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)

数据框列用作图形对象追踪的 xy 属性的数据值。这里,我们将使用 namemarks 列生成一个条形追踪。

trace = go.Bar(x = df.name, y = df.marks)
fig = go.Figure(data = [trace])
iplot(fig)

将在 Jupyter 笔记本中显示一个简单的条形图,如下所示 −

pandas dataframes

Plotly 的构建基于 d3.js ,它是一个专门的图表库,可以使用另一个名为 Cufflinks 的库直接与 Pandas dataframes 一起使用。

如果尚未安装,可以使用你喜欢的包管理器(如 pip )按照如下方式安装 cufflinks 包:

pip install cufflinks
or
conda install -c conda-forge cufflinks-py

首先,导入 cufflinks 以及其他库,如 Pandasnumpy ,这些库可以将其配置为离线使用。

import cufflinks as cf
cf.go_offline()

现在,你可以直接使用 Pandas dataframe 显示各种类型的图表,而无需使用 graph_objs module 的 trace 和 figure 对象,后者是我们之前一直在使用的。

df.iplot(kind = 'bar', x = 'name', y = 'marks')

下文将显示与之前非常相似的条形图:

pandas dataframe cufflinks

Pandas dataframes from databases

除了使用 Python 列表构造 DataFrame 外,还可以用不同类型的数据库中的数据填充它。例如,可以将 CSV 文件、SQLite 数据库表或 mysql 数据库表中的数据获取到 Pandas DataFrame 中,进而使用 Figure objectCufflinks interface 导出为 plotly 图表。

要从 CSV file 获取数据,我们可以使用 Pandas 库的 read_csv() 函数。

import pandas as pd
df = pd.read_csv('sample-data.csv')

如果数据在 SQLite database table 中可用,则可以使用 SQLAlchemy library 如下方式获取:

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 database 中获取的数据在 Pandas DataFrame 中如下所示:

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)