手把手教你搭建一个学习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的内容。
个人认为最需要修改的内容包括
notebook的默认宽度:notebook默认比较宽,markdown文字会显得比较少,如果需要对外展示,文字部分会过少。
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
相关文章:

刻意练习:LeetCode实战 -- Task27.分发饼干
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

祝贺《WCF邮件通信系统》在高阳市场研究汇编第五期发表
上次给公司的市场研究汇编投稿,只写了一个PPT格式的《WCF邮件通信系统》,编辑把它整理成了PDF格式的内容,感觉很好,所以我把PDF原文中的有关内容存储成了图片,发表在这里,庆贺一下。PDF原文地址:…

学软件测试有前途吗
学软件测试有前途吗?很多人都关心这个问题,最近几年,软件测试这个行业在很多企业都是非常刚需的,随着互联网的飞快发展,IT行业出现日新月异的变化,企业的大量需求,人才的严重匮乏,导致IT行业&a…

Active Directory 账号迁移配置介绍
首先介绍一下环境: 生产域环境: example.cn 测试域环境: fengdian.info 系统平台: 2K08 R2 林、域功能级别:Windows Server 2008 要求: 测试域环境“fengdian.info”同步生产域环境所有用户账号,实现测试环境和生产环境的基本统 一,方便功能测…

VIM命令快速记忆(转自杰哥)
因为自己也是个linuxer 熟练运用VIM是必须的,恰好学长杰哥对此有研究, 转来给大家分享。对此表达对杰哥的敬意。 有好东西分享给大家才能相互学习是吧。 要做个Linuxer,VIM的操作是必须就跟手指头盲打键盘那么熟练。 首先说下Vim的两种最常用…

刻意练习:LeetCode实战 -- Task28.跳跃游戏
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

类操作是什么意思?jQuery的类操作教程
类操作就是通过操作元素的类名进行元素样式操作,当元素样式比较复杂时,如果通过css()方法实现,需要在CSS里编写很长的代码,既不美观也不方便。而通过写一个类名,把类名加上或去掉就会显得很方便。下面通过代码演示类的…

刻意练习:LeetCode实战 -- Task29. 加油站
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

C#从SQL server数据库中读取l图片和存入图片
一、从图片中获得二进制值的基本方法:Image.Save 方法 (String, ImageFormat) 这会将保存 Image 写入指定的文件中指定的格式。 命名空间: System.Drawing 程序集: System.Drawing(位于 System.Drawing.dll) 语法: public void S…

linux下查看内存使用情况
在Linux下查看内存我们一般用free命令:[rootscs-2 tmp]# free total used free shared buffers cachedMem: 3266180 3250004 16176 0 110652 2668236-/ buffers/cache: 471116 2795064Swa…

现在转行学习UI设计好不好就业
UI设计是很多企业都会有需求的一个岗位,对于现在转行学习UI设计好不好就业这个问题,小编的回答是肯定的,最直接的方法就是上招聘信息,如果说招聘网站上UI设计师职位很少,那就说明UI设计行业已经差不多饱和了。 …

刻意练习:LeetCode实战 -- Task30.通配符匹配
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

iOS 11 安全区域适配总结
2019独角兽企业重金招聘Python工程师标准>>> 导语:本文主要是对iOS 11下APP中tableView内容下移20pt或下移64pt的问题适配的一个总结。内容包括五个部分:问题的原因分析、adjustContentInset属性的计算方式、什么情况下的tableView会发生内容…

(广州)软件开发定制服务,工作流引擎 OA 库存管理系统
本人专注于工作流的研究设计同时提供软件开发定制服务,工作流引擎 OA系统 库存管理系统 如果有机会合作共事请联系:15817167503(本人在广州) QQ:1311663711 加时请注明软件定制 广州软件定制开发 转载于:https://www.cnblogs.com/…

Java类加载机制详解【java面试题】
Java类加载机制详解【java面试题】 (1)问题分析: Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户…

C#获取文件的当前路径
1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName -获取模块的完整路径。 2.System.Environment.CurrentDirectory -获取和设置当前目录(该进程从中启动的目录)的完全限定目录。 3.System.IO.Directory.GetCurrentDirectory() &a…

c# ThreadPool 判断子线程全部执行完毕的四种方法
1、先来看看这个多线程编程多线程用于数据采集时,速度明显很快,下面是基本方法,把那个auto写成采集数据方法即可。using System;using System.Collections.Generic;using System.Text;using System.Threading;namespace ConsoleApplication1{…

腾讯精选练习 50 题(Leetcode)笔记 PDF下载!
昨天在知识星球中立了一个Flag,第一步采取的行动就是把以前刷的“腾讯精选练习 50 题”重新梳理一下,就有了今天这本170多页的小册子。 这本小册子即可以作为学习数据结构与算法课程的参考资料,也可以作为备考计算机类研究生的备考资料。希望…

Python培训:try-except语句与else子句联合使用处理可能出现的程序异常
异常处理的主要目的是防止因外部环境的变化导致程序产生无法控制的错误,而不是处理程序的设计错误。因此,将所有的代码都用try语句包含起来的做法是不推荐的,try语句应尽量只包含可能产生异常的代码。Python中try-except语句还可以与else子句…

Backup Exec 2012 备份和还原活动目录(非授权还原)
延续以上两篇,安装配置完毕后,开始进行备份操作。 环境一如上篇: DC: pdc1.fengdian.info BE2012 Svr: backup.fengdian.info 本例使用BE2012对活动目录进行备份和后续的还原操作,通过模拟误删除DC中的两个OU及其用户账号,使用先…

hdu3368 Reversi
题意:一种翻转棋游戏,对当前的棋局,问黑子下一步最多能将几个白子翻为黑子,(当前黑子与原先棋盘中的黑子的连线中间的白子会翻成黑子) 分析:很简单的搜索题,不过一开始一直WA&#x…

有符号整型的数据范围为什么负数比正数多一个?
背景 我们先看Leetcode的这道题目: 标题:50. Pow(x, n)难度:中等https://leetcode-cn.com/problems/powx-n/ 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 示例 1: 输入: 2.00000, 10 输出: 1024.00000示例 2: 输入: 2.10000, 3…

UI设计培训:UI构思创意技巧和方法
想要作为一名合格的UI设计师,那么创意技巧和方法是非常重要的,很多刚入职场的新人或者是工作多年的设计师都会在创意技巧和方法上遇到瓶颈,下面小编为大家整理一些UI构思创意技巧和方法,希望能够帮助到大家。 UI设计培训ÿ…

博客园 cnblogs博客添加Google Analytics统计
在cnblogs的文章列表中只可以看到自己的每篇文章的页面浏览量,没有详细的统计信息。Google Analytics作为强大的统计工具,能得到几乎所有想要的统计信息,是博客不可多得的好工具,本文介绍如何在cnblogs博客中使用Google Analytics…

技术图文:Python 位运算防坑指南
背景 我们先看这个题目: 标题:137. 只出现一次的数字 II难度:中等https://leetcode-cn.com/problems/single-number-ii/ 给定一个 非空 整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出…

聊聊nginx报错499问题
序本文主要来聊一下nginx的access log当中出现的499问题。 问题描述499 CLIENT CLOSED REQUESTA non-standard status code introduced by nginx for the case when a client closes the connection while nginx is processing the request. 原因服务器返回http头之前ÿ…

UI设计需要报培训班学习吗
UI设计在很多企业已经是不可或缺的一个岗位了,所以UI设计的发展空间是非常大的,想要做UI设计师,光靠自学是不行的,那么UI设计需要报培训班学习吗?来看看下面小编的详细介绍就知道了。 UI设计需要报培训班学习吗?目前学习UI设计主…

技术图文:位运算技术在求解算法题中的应用
背景 前段时间,在知识星球立了一个Flag,这是总结Leetcode刷题的第一篇图文。 在总结这篇图文的时候,顺便把遇到的坑写了两篇辅助的图文,大家可以参考一下: 有符号整型的数据范围为什么负数比正数多一个?P…

JavaScript学习系列6 充实文档的内容
JavaScript 两项基本原则渐进增强:你应该总是从最核心的部分,也就是从内容开始。应该根据内容使用标记实现良好的结构;然后再逐步加强这些内容。平稳退化:不支持JavaScript也能访问基本内容。内容:我们在Html文件中编辑…

mapreduce中设置自定义的输入类,进行文本解析(默认以tab键为分隔符)
job.setInputFormatClass(KeyValueTextInputFormat.class);//此时map端输入的键的内容为第一个tab键以左的内容,值得内容为第一个tab键以右的内容转载于:https://www.cnblogs.com/le-ping/p/7788973.html