暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Python交互可视化之pandas_bokeh

DataGirl 2021-05-17
3605

Bokeh是一个面向web浏览器的python交互可视化库,利用Bokeh可以快速创建交互式图表、仪表板以及数据应用程序。

从Bokeh的Gallery可以看出其绘制的图表非常美观,其交互式图表更是炫酷。

然而我们平时更多的是使用Pandas来进行数据分析和处理,Pandas自身也提供了简单的图形绘制API,不过其功能比较简单。

所以为了将Pandas和Bokeh结合,就有了pandas_bokeh

pandas_bokeh为 Pandas、GeoPandas 和 Pyspark 的 DataFrames 提供了 Bokeh 绘图支持,其调用语法和 pandas 自身的df.plot
十分类似,导入 pandas_bokeh 库会在 pandas 的 DataFrames 和 Series  上添加一个补充的绘图方法 plot_bokeh()

使用pandas_bokeh绘制令人惊叹的交互式可视化图表只需简单地调用df.plot_bokeh()
即可。

安装

pip install pandas-bokeh
# or
conda install -c patrikhlobil pandas-bokeh

使用

  • pandas_bokeh应该在Pandas、GeoPandas 或者 Pyspark之后导入(import)
  • 生成的图表有两种输出格式:
    • pandas_bokeh.output_notebook()
      :直接在jupyter notebook中显示结果
      import pandas as pd
      import pandas_bokeh
      pandas_bokeh.output_notebook()

    • pandas_bokeh.output_file(filename)
      :将图表导出到指定的HTML文件里
       import pandas as pd
      import pandas_bokeh
      pandas_bokeh.output_file("Interactive Plot.html")

示例

  • 线图
import numpy as np
import pandas as pd
import pandas_bokeh
pandas_bokeh.output_notebook()

df = pd.DataFrame({
'Year': np.arange(2010, 2020),
'Users': np.random.randint(100, 250, 10)
})

df.plot_bokeh.line(
x='Year',
y='Users',
figsize=(800, 600),
ylim=(100, 250),
zooming=True,
panning=True,
show_figure = True,
plot_data_points=True,
plot_data_points_size=8,
marker="circle"
)

可以看到生成的图表交互效果特别好,且支持缩放、平移、悬浮提示等。 实际上里面的各个参数都支持自定义。

  • 多线图:
df = pd.DataFrame({
'Year': np.arange(2010, 2020),
'A': np.random.randint(200, 300, 10),
'B' : np.random.randint(200, 300, 10),
'C' : np.random.randint(200, 300, 10)
})

df.plot_bokeh.line(
x='Year',
figsize=(1000, 600),
ylim=(200, 300),
zooming=True,
panning=True,
show_figure = True,
plot_data_points=True,
plot_data_points_size=8,
marker="circle"
)

  • 柱形图
data = {
'fruits':
['Apples', 'Pears', 'Nectarines', 'Plums', 'Grapes', 'Strawberries'],
'2015': [2, 1, 4, 3, 2, 4],
'2016': [5, 3, 3, 2, 4, 6],
'2017': [3, 2, 4, 4, 5, 3]
}
df = pd.DataFrame(data).set_index("fruits")

p_bar = df.plot_bokeh(
kind = 'bar',
ylabel="Price per Unit [€]",
title="Fruit prices per Year",
alpha=0.6)m/PatrikHlobil/Pandas-Bokeh#mapplot)

是不是非常方便!

最后

pandas_bokeh支持的图表类型及具体参数可以查看其文档:  https://github.com/PatrikHlobil/Pandas-Bokeh#mapplot

另外 pands_bokeh 也可以结合 bokeh 来使用,比如用pandas_bokeh画图想要改变图表主题色,可直接用 bokeh 的 theme color 来实现。


文章转载自DataGirl,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论