专栏首页北京马哥教育手把手教你搭建一个学习Python好看的 Jupyter 环境

手把手教你搭建一个学习Python好看的 Jupyter 环境

又到摆脱重复工作,换个心情,然而并没有软用的时间了。这次,教大家如何搭建一个好看的jupyter环境。

安装Jupyter

先来展示一下我的环境

  • python: 3.5.*
  • macos: 10.12.4

安装Jupyter的过程只需安装Anaconda即可。

测试一下初始设置:

jupyter notebook

配置ipython

首先,如果每次你打开一个nb(notebook)时,如果都需要载入一些模块,一个很好地方法就是配置ipython的配置文件,可以直接使用以下命令创建配置文件:

ipython profile create

此时你会在~/.ipython/profile_default/目录中获得下面两个文件:

  • ipython_config.py:打开任意ipython kernel时都会运行
  • ipython_notebook_config.py:打开notebook时会运行

配置方式是在所需要的配置文件中先键入:

c = get_config()

然后就可以通过修改c的属性来控制所有的配置。

显然,对大多数分析场景,numpy, scipy, pandas是肯定要载入的,因此,写到配置中即可:

c.InteractiveShellApp.exec_lines = [ "import pandas as pd", "import numpy as np", "import scipy.stats as spstats", "import scipy as sp", ]

配置matplotlib

还有一个常用功能就是matplotlib。matplotlib在notebook中需要使用

%matplotlib inline

才可默认在notebook中显示图像,一个简单地方法就是在配置文件中加入,

c.IPKernelApp.matplotlib = 'inline'

当然,默认也需要载入matplotlib

c.InteractiveShellApp.exec_lines = [ "import pandas as pd", "import numpy as np", "import scipy.stats as spstats", "import scipy as sp", "import matplotlib.pyplot as plt" ]

当然,也可以更多。但这样可能会影响初始化notebook和ipython shell的速度,这个请大家自己权衡。

matplotlib显示中文

此外,单独拎matplotlib出来的另一个原因是,matplotlib还有一个中文显示的问题。

首先,解决编码问题

python 2.7.*的解决方案是,在配置中加入:

import seaborn as sns import sys# print sys.getdefaultencoding()# ipython notebook中默认是ascii编码 reload(sys) sys.setdefaultencoding('utf8')

python 3.*出于某些原因,不建议通过sys模块修改编码,原因参见这里(http://stackoverflow.com/questions/3828723/why-should-we-not-use-sys-setdefaultencodingutf-8-in-a-py-script)。

解决方案是,在shell的配置中重新设置配置变量(bash的话设置文件.bashrc,zsh则设置文件.zshrc)。方法是末尾添加:

export PYTHONIOENCODING="utf8"

当然另一个方法是在启动notebook时使用

PYTHONIOENCODING="utf8" & jupyter notebook

第二个是修改matplotlib的默认字体。

首先我们来看可以使用的字体

import matplotlib.font_manager fonts = matplotlib.font_manager.findSystemFonts() l = [] for f in fonts: try: font =matplotlib.font_manager.FontProperties(fname=f) #print(font.get_family()) l.append((f, font.get_name(), font.get_family(), font.get_weight())) except: pass df = pd.DataFrame(l, columns=['path', 'name', 'family', 'weight']) df

你应该看到下面这样的表格:

然后找到支持中文的字体名,然后设置matplotlib的默认字体:

import matplotlib as mpl mpl.rc('font', family='Noto Sans CJK SC')

当然,你可以添加到刚才的配置中,或者采用这个博客的方法。

此外,如果你使用seaborn的话,seaborn在设置配置时可能会覆盖掉matplotlib,此时采用以下代码即可:

import seaborn as sns sns.set_style('ticks', { 'font.family': ['Noto Sans CJK SC'], })

但是,该语句不建议写在配置中,因为经常需要修改,可能会覆盖之前的配置。

matplotlib在Retina屏幕中显示模糊问题

直接使用下面语句即可,

%config InlineBackend.figure_format = 'retina'

当然也可在配置中直接加入

c.InlineBackend.figure_format = 'retina'

修改notebook样式

默认的notebook可以逼你心中大喊WTF,这时候你需要一点CSS技能,修改~/.jupyter/custom/custom.css的内容。

个人认为最需要修改的内容包括

  1. notebook的默认宽度:notebook默认比较宽,markdown文字会显得比较少,如果需要对外展示,文字部分会过少。
  2. notebook的代码字体

我的修改规则是:

pre.CodeMirror-line { font-family: 'BlinkMacSystemFont', 'Lucida Grande', 'Segoe UI', Ubuntu, Cantarell, sans-serif } .output_subarea.output_text.output_result>pre { font-family: 'BlinkMacSystemFont', 'Lucida Grande', 'Segoe UI', Ubuntu, Cantarell, sans-serif } .output_subarea.output_text.output_stream.output_stdout>pre { font-family: 'BlinkMacSystemFont', 'Lucida Grande', 'Segoe UI', Ubuntu, Cantarell, sans-serif } #notebook-container { max-width: 830px; padding: 40px; }

安装Jupyter常用插件

这里推荐两个jupyter插件:

插件管理器jupyter notebook extensions

github地址在这里(https://github.com/ipython-contrib/jupyter_contrib_nbextensions)。安装和介绍也可以参考。

然后你就可以在jupyter主页里找到下面的标签页管理插件了:

jupyter Dashboard

如果你的jupyter服务是搭建在主机上,并且平时和业务人员想用notebook地址的方式交付,jupyter dashboard插件是一个不错的选择。

安装方法和github地址在这里(https://github.com/jupyter/dashboards)。

原本效果如下:

点击如下红色设置,并点击黄色按钮后

就可得到如下的报告形式(删去了业务人员不想查看的代码),然后就可以粘贴连接交付报告了:

切换成dashboard模式可以拖拽相关方格来设置位置。

大功告成,现在开工!

来源作者:三次方根

来源地址:segmentfault.com/a/1190000009305646


本文分享自微信公众号 - 马哥Linux运维(magedu-Linux),作者:莎莎

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-11-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python thrift 服务端与客户端使用

    本文生动简洁介绍了如何通过python搭建一个服务端和客户端的简单测试程序。 一、简介 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了...

    小小科
  • 【深度解析】Linux系统启动流程

    Linux系统启动流程大概总结下来是这么一个过程: POST-->BootLoader(MBR)-->Kernel(硬件探测、加载驱动、挂载根文件系统、/sbi...

    小小科
  • Python 运行时遇到的这些错误

    对于刚入门的Python新手,在学习过程中运行代码是或多或少会遇到一些错误,刚开始可能看起来比较费劲。随着代码量的积累,熟能生巧当遇到一些运行时错误时能够很快的...

    小小科
  • 面试SLAM算法实习岗,我是怎么做的?

    本人普通211研一在读(9月份开学研二),2019年1月开始接触SLAM,到昨天拿到某公司实习offer。闲话不说,大家更关心的是:

    AI研习社
  • 产品岗面试经验谈[话术篇]

    牛客网
  • 第一次使用jupyter创建python时错误:Creating Notebook Failed An error occurred while creating a new notebook.

    当我们用命令行在浏览器中启动jupyter notebook后需要点击右上角的New创建新的python文件,此时会报错。在Linux下可以用命令行解决这个问题...

    于小勇
  • Python多种方法实现句子中单词倒置(好未来2017笔试题)

    问题描述:将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I 代码: def rev1(s...

    Python小屋屋主
  • 交通预测-如何在深度学习框架下考虑动态时空相似性—案例研究(附数据集下载方式)

    本篇文章是上一篇文章的案例研究部分。公众号内回复“纽约”获取文章使用的相关数据下载地址,包括美国纽约10年的出租车轨迹数据以及7年的共享单车轨迹数据。

    深度学习与交通大数据
  • 好用到飞起的12个jupyter lab插件

    jupyter lab作为jupyter notebook的升级改造版,除了更加人性化的交互界面以及更多的用户自主定制功能之外,最吸引人的就是其丰富多样的拓展...

    Feffery
  • 【钱塘号专栏】“能源互联网、工业互联网、工业4.0”之间的区别与联系

    其实工业4.0、工业互联网、能源互联网这几个概念,本质都是互联网深度参与到工业生产、能源领域中,从而将生产力提升到一个全新的高度。过去10年是消费者互联网的10...

    钱塘数据

扫码关注云+社区

领取腾讯云代金券