更多腾讯海量技术文章,请关注腾讯云技术社区:https://cloud.tencent/community
作者:张耀琦
简单介绍
jupyter 是一个笔记本,这个笔记本可以编写和执行代码,分析数据,嵌入内容,以及共享可重复性的工作。jupyter notebook (以前成为ipython notebook)可以在一个简单的笔记本中轻松分享代码,数据,图标以及说明。发布格式也比较灵活:pdf, html,ipynb,dsahboards,slides,等等。代码单元是基于输入和输出格式。例如:
安装
有多种方式可以安装 jupyter notebook:
使用 pip 安装。在终端中输入 $ pip install jupyter
windows用户可以使用 setuptools 安装。
* anaconda 和 enthought 可以下载 jupyter notebook的桌面版。
nteract 可以通过一个桌面应用在 notebook 环境中工作。
microsoft azure 提供对 jupyter notebook 的托管访问。
domino data lab 提供基于web的notebook。
tmpnb 为个人用户启动一个临时在线的notebook。
主观观点:windows 下常用anaconda ,但并不是说 mac 和 linux用户就不需要了,个人觉得 anaconda 都应该尝试一下,启动和管理库都很方便。
入门指南
安装 notebook 之后,在终端中输入 $ jupyter notebook 来启动。此时将在 localhost 打开浏览器到notebook的url,默认是 http://127.0.0.1:8888。windows 用户打开command prompt. 可以在一个dashboard 中看到所有的notebook,打开很方便。当编码和发布的时候,notebook具有相同的优势。有所有的选项,移动代码,运行cell,更改 kernel,并且运行 nb的时候使用 markdown
有用的命令
tab completion: jupyter 支持tab 自动补全!可以键入object_name.来查看对象的属性。有关cell magics,运行 notebook,探索对象的提示,可以查看 jupyter docs。
help: 提供介绍和功能概述。
quick reference:运行后打开快速参考。
keyboard shortcuts:shift-enter将运行一个cell, ctrl-enter将在空间内运行cell, alt-enter 将运行cell,并在下面插入一个cell. 更多的快捷键请看 here。
语言
本教程的主要内容是讨论在 jupyter notebooks 中执行python 代码。也可以使用 jupyter notebooks 来执行 r 语言的代码。
package 管理
在jupyter安装 package时,需要在shell中安装,或者运行感叹号前缀,例如:
!pip install packagename
如果已经编辑了代码,可能需要 reload submodules。ipython 自带重载机制。可以在执行新行之前重新加载所有更改的模块。
%load_ext autoreload%autoreload 2
本教程使用到的一些package:
pandas:通过网址导入数据,创建数据框架,可以很简单的处理数据,进行分析和绘图。请参阅使用 panda的例子:https://plot.ly/pandas/。
numpy:用于科学计算的package,用于代数,随机数生成,与数据库集成和管理数据的工具。请参阅使用 numpy 的例子:https://plot.ly/numpy/。
scipy:一个基于python的数学、科学和工程库。
plotly:用于制作交互式,达到出版品质图表的图形库。更多统计,科学,3d图表等,请参阅:https://plot.ly/python
如果使用的是anaconda 在environments中可以发现,前三个库都已经默认帮你下载安装好了。然后把过滤条件改为all,搜plotly,安装即可。非常方便
import 数据
可以使用 pandas 的 read_csv() 函数来导入数据。下面的示例中,导入了一个 hosted on github 的csv,并使用plotly将数据展示在一个table中。(table using plotly)
plotly.plotly.iplot() 函数是在线的,需要先设置账号和key,具体请参阅:https://plot.ly/python/getting-started/
使用dataframe.column_title 来索引 dataframe:
pandas大多数的函数也适用于整个 dataframe。例如,调用 std() 计算每列的标准差
内联绘图
可以使用 plotly’s python api ,通过调用 plotly.plotly.iplot() 或者离线工作的时候使用 plotly.offline.iplot() 。在notebook中绘制,可以将数据分析和绘图保存在一个位置。下面是一个可以交互的绘图。转到 plotly getting started 页面,了解如何设置凭据。通过调用 iplot 自动生成内嵌 iframe 的交互式版本:
绘制多个轨道,并使用 plotly语法,自定义颜色和标题,来对图标进行样式化。还可以进行控制,将 sharing 设置为 public , private, 或者 secret。
现在notebook中显示了交互式图标。将鼠标悬停在图标上来查看每一栏的值,单击并拖动来放大到特定部分,或单击图例以隐藏/显示轨道。
绘制交互式地图
plotly 现在集成了 mapbox。下面的例子,将绘制世界分级统计图。
import plotly.plotly as pyimport pandas as pddf = pd.read_csv('https://raw.githubusercontent/plotly/datasets/master/2014_world_gdp_with_codes.csv')data = [ dict( type = 'choropleth', locations = df['code'], z = df['gdp (billions)'], text = df['country'], colorscale = [[0,rgb(5, 10, 172)],[0.35,rgb(40, 60, 190)],[0.5,rgb(70, 100, 245)], [0.6,rgb(90, 120, 245)],[0.7,rgb(106, 137, 247)],[1,rgb(220, 220, 220)]], autocolorscale = false, reversescale = true, marker = dict( line = dict ( color = 'rgb(180,180,180)', width = 0.5 ) ), colorbar = dict( autotick = false, tickprefix = '$', title = 'gdpbillions us$'), ) ]layout = dict( title = '2014 global gdpsource: cia world factbook', geo = dict( showframe = false, showcoastlines = false, projection = dict( type = 'mercator' ) ))fig = dict( data=data,layout=layout )py.iplot( fig, validate=false,filename='d3-world-map' )
3d绘图
使用numpy和plotly,可以在notebook中绘制交互式3d图。
import plotly.plotly as pyfrom plotly.graph_objs import *import numpy as nps = np.linspace(0, 2 * np.pi, 240)t = np.linspace(0, np.pi, 240)tgrid, sgrid = np.meshgrid(s, t)r = 2 + np.sin(7 * sgrid + 5 * tgrid) # r = 2 + sin(7s + 5t)x = r * np.cos(sgrid) * np.sin(tgrid) # x = r * con(s) * sin(t)y = r * np.sin(sgrid) * np.sin(tgrid) # y = r * sin(s) * sin(t)z = r * np.cos(tgrid) # z = r * cos(t)surface = surface(x = x, y = y, z = z)data = data([surface])layout = layout( title = 'parametricplot', scene = scene( xaxis = xaxis( gridcolor = 'rgb(255, 255, 255)', zerolinecolor = 'rgb(255, 255, 255)', showbackground = true, backgroundcolor = 'rgb(230, 230, 230)' ), yaxis = yaxis( gridcolor = 'rgb(255, 255, 255)', zerolinecolor = 'rgb(255, 255, 255)', showbackground = true, backgroundcolor = 'rgb(230, 230, 230)' ), zaxis = zaxis( gridcolor = 'rgb(255, 255, 255)', zerolinecolor = 'rgb(255, 255, 255)', showbackground = true, backgroundcolor = 'rgb(230, 230, 230)' ) ))fig = figure(data = data, layout = layout)py.iplot(fig, filename = 'parametric_plot')
绘制动画
查看plotly的 animation documentation ,来了解如果在jupyter notebook中创建内联动画,比如:
plot 控件和ipython 小部件
给内联图表添加 silder, button, 和 dropdown:
import plotly.plotly as pyimport numpy as npdata = [dict( visible = false, line = dict(color = '00ced1', width = 6), name = 'v = ' + str(step), x = np.arange(0, 10, 0.01), y = np.sin(step * np.arange(0, 10, 0.01))) for step in np.arange(0, 5, 0.1)]data[10]['visible'] = truesteps = []for i in range(len(data)): step = dict( method = 'restyle', args = ['visible', [false] * len(data)], ) step['args'][1][i] = true # toggle i'th trace to visible steps.append(step)sliders = [dict( active = 10, currentvalue = {prefix: frequency: }, pad = {t: 50}, steps = steps)]layout = dict(sliders = sliders)fig = dict(data = data, layout = layout)py.iplot(fig, filename = 'sina wave slider')
此外,ipython widgets 可以给notebook添加 silder, widget, 搜索框等。更多信息请参阅 widget docs 。为了让其他人能够访问你的工作,他们需要ipython,或者你可以使用基于云的nb选项。
运行r代码
irkernel是jupyter的r内核,允许在jupyter笔记本中编写和执行r代码。 检查 irkernel文档 以获取一些简单的安装说明。 安装irkernel后,通过调用 $ jupyter notebook 打开jupyter notebook,并使用“新建”下拉列表选择一个r笔记本。
完整实例地址:https://plot.ly/~chelsea_lyn/14069
附加嵌入功能
ipython.display可以嵌入其他功能,如视频。 例如,从youtube:
latex
可以通过将数学内容用$$包住,来将latex嵌入notebook中,然后将该单元格作为markdown cell 运行。 例如,下面的 cell 是 $ c = sqrt {a ^ 2 + b ^ 2} $,(左右应该是双dollar符号,但这里打双dollar,km就出错无法保存文章了==)但notebook会呈现表达式。
或者可以在python的输出中展示,请参阅:here
导出和发布 notebook
可以将notebook导出为html,pdf,.py,.ipynb,markdown和rest文件。 也可以将nb 转换成幻灯片。 可以在plotly上发布jupyter notebook。 只需访问 plot.ly并选择右上角的 + create 按钮。 选择 notebook 并上传jupyter notebook(.ipynb)文件! 上传的笔记本将存储在你的 plotly organize folder 中,并托管在一个唯一的链接,能快速和简单分享。下面是一些例子:
https://plot.ly/~chelsea_lyn/14066
https://plot.ly/~notebook_demo/35
https://plot.ly/~notebook_demo/85
https://plot.ly/~notebook_demo/128
publishing dashboards
发布交互式图形的用户也可以使用 plotly’s dashboarding tool 工具来绘制和拖放界面。 这些 dashboards 可以发布,嵌入和共享。
publishing dash apps
对于希望传播和生产python应用程序的用户,dash 是flask,socketio,jinja,plotly和 boiler plate css and js的集合,用于通过python数据分析后端轻松创建数据可视化web应用程序。
jupyter gallery
对于更多jupyter教程,请查看 plotly’s python documentation:所有文档都是用jupyter notebook 编写的,可以自行下载并运行,或者查看 user submitted examples!