手把手教你搭建一個學習Python好看的 Jupyter 環境

d3hfZm10PWdpZg==

又到擺脫重複工作,換個心情,然而並沒有軟用的時間了。這次,教大家如何搭建一個好看的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


你應該看到下面這樣的表格:


d3hfZm10PXBuZw==


然後找到支持中文的字體名,然後設置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主頁裏找到下面的標籤頁管理插件了:


aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w


jupyter Dashboard


如果你的jupyter服務是搭建在主機上,並且平時和業務人員想用notebook地址的方式交付,jupyter dashboard插件是一個不錯的選擇。


安裝方法和github地址在這裏(https://github.com/jupyter/dashboards)。


原本效果如下:


d3hfZm10PXBuZw==


點擊如下紅色設置,並點擊黃色按鈕後


aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w


就可得到如下的報告形式(刪去了業務人員不想查看的代碼),然後就可以粘貼連接交付報告了:


d3hfZm10PXBuZw==


切換成dashboard模式可以拖拽相關方格來設置位置。


大功告成,現在開工!


來源作者:三次方根

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章