社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

马哥Linux运维 • 7 年前 • 1058 次点击  

又到摆脱重复工作,换个心情,然而并没有软用的时间了。这次,教大家如何搭建一个好看的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




————广告时间————


马哥教育2017年Python自动化运维开发实战网络班,马哥联合BAT、豆瓣等一线互联网Python开发达人,根据目前企业需求的Python开发人才进行了深度定制,加入了大量一线互联网公司:大众点评、饿了么、腾讯等生产环境真是项目,课程由浅入深,从Python基础到Python高级,让你融汇贯通Python基础理论,手把手教学让你具备Python自动化开发需要的前端界面开发、Web框架、大监控系统、CMDB系统、认证堡垒机、自动化流程平台六大实战能力,让你从0开始蜕变成Hold住年薪20万的Python自动化开发人才

扫描二维码领取学习资料

更多Python好文请点击【阅读原文】哦

↓↓↓


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/cBTpWUtCu3
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/3988
 
1058 次点击