一、更改字体、大小、颜色

  1. <font face="黑体">我是黑体字</font>
  2. <font face="微软雅黑">我是微软雅黑</font>
  3. <font face="STCAIYUN">我是华文彩云</font>
  4. <font color=red>我是红色</font>
  5. <font color=#008000>我是绿色</font>
  6. <font color=Blue>我是蓝色</font>
  7. <font size=5>我是尺寸</font>
  8. <font face="黑体" color=green size=5>我是黑体,绿色,尺寸为5</font>

image.png

二、为文字添加背景色

由于 style 标签和标签的 style 属性不被支持,所以这里只能是借助 table, tr, td 等表格标签的 bgcolor 属性来实现背景色。故这里对于文字背景色的设置,只是将那一整行看作一个表格,更改了那个格子的背景色(bgcolor)

  1. <table><tr><td bgcolor=yellow>背景色yellow</td></tr></table>

image.png

三、设置图片大小

1、设置设置图片百分比

  1. <img src="http://pic11.photophoto.cn/20090626/0036036341009653_b.jpg"
  2. width="50%" height="50%">

2、设置图片大小

  1. <img src="http://pic11.photophoto.cn/20090626/0036036341009653_b.jpg"
  2. width="251" height="350" >

3、设置图片居中

  1. <div align=right><img src="http://pic11.photophoto.cn/20090626/0036036341009653_b.jpg"
  2. width="50%" height="50%"></div>

ps:center,left,left

RGB颜色名对照表

颜色名 十六进制颜色值 颜色
AliceBlue #F0F8FF rgb(240, 248, 255)
AntiqueWhite #FAEBD7 rgb(250, 235, 215)
Aqua #00FFFF rgb(0, 255, 255)
Aquamarine #7FFFD4 rgb(127, 255, 212)
Azure #F0FFFF rgb(240, 255, 255)
Beige #F5F5DC rgb(245, 245, 220)
Bisque #FFE4C4 rgb(255, 228, 196)
Black #000000 rgb(0, 0, 0)
BlanchedAlmond #FFEBCD rgb(255, 235, 205)
Blue #0000FF rgb(0, 0, 255)
BlueViolet #8A2BE2 rgb(138, 43, 226)
Brown #A52A2A rgb(165, 42, 42)
BurlyWood #DEB887 rgb(222, 184, 135)
CadetBlue #5F9EA0 rgb(95, 158, 160)
Chartreuse #7FFF00 rgb(127, 255, 0)
Chocolate #D2691E rgb(210, 105, 30)
Coral #FF7F50 rgb(255, 127, 80)
CornflowerBlue #6495ED rgb(100, 149, 237)
Cornsilk #FFF8DC rgb(255, 248, 220)
Crimson #DC143C rgb(220, 20, 60)
Cyan #00FFFF rgb(0, 255, 255)
DarkBlue #00008B rgb(0, 0, 139)
DarkCyan #008B8B rgb(0, 139, 139)
DarkGoldenRod #B8860B rgb(184, 134, 11)
DarkGray #A9A9A9 rgb(169, 169, 169)
DarkGreen #006400 rgb(0, 100, 0)
DarkKhaki #BDB76B rgb(189, 183, 107)
DarkMagenta #8B008B rgb(139, 0, 139)
DarkOliveGreen #556B2F rgb(85, 107, 47)
Darkorange #FF8C00 rgb(255, 140, 0)
DarkOrchid #9932CC rgb(153, 50, 204)
DarkRed #8B0000 rgb(139, 0, 0)
DarkSalmon #E9967A rgb(233, 150, 122)
DarkSeaGreen #8FBC8F rgb(143, 188, 143)
DarkSlateBlue #483D8B rgb(72, 61, 139)
DarkSlateGray #2F4F4F rgb(47, 79, 79)
DarkTurquoise #00CED1 rgb(0, 206, 209)
DarkViolet #9400D3 rgb(148, 0, 211)
DeepPink #FF1493 rgb(255, 20, 147)
DeepSkyBlue #00BFFF rgb(0, 191, 255)
DimGray #696969 rgb(105, 105, 105)
DodgerBlue #1E90FF rgb(30, 144, 255)
Feldspar #D19275 rgb(209, 146, 117)
FireBrick #B22222 rgb(178, 34, 34)
FloralWhite #FFFAF0 rgb(255, 250, 240)
ForestGreen #228B22 rgb(34, 139, 34)
Fuchsia #FF00FF rgb(255, 0, 255)
Gainsboro #DCDCDC rgb(220, 220, 220)
GhostWhite #F8F8FF rgb(248, 248, 255)
Gold #FFD700 rgb(255, 215, 0)
GoldenRod #DAA520 rgb(218, 165, 32)
Gray #808080 rgb(128, 128, 128)
Green #008000 rgb(0, 128, 0)
GreenYellow #ADFF2F rgb(173, 255, 47)
HoneyDew #F0FFF0 rgb(240, 255, 240)
HotPink #FF69B4 rgb(255, 105, 180)
IndianRed #CD5C5C rgb(205, 92, 92)
Indigo #4B0082 rgb(75, 0, 130)
Ivory #FFFFF0 rgb(255, 255, 240)
Khaki #F0E68C rgb(240, 230, 140)
Lavender #E6E6FA rgb(230, 230, 250)
LavenderBlush #FFF0F5 rgb(255, 240, 245)
LawnGreen #7CFC00 rgb(124, 252, 0)
LemonChiffon #FFFACD rgb(255, 250, 205)
LightBlue #ADD8E6 rgb(173, 216, 230)
LightCoral #F08080 rgb(240, 128, 128)
LightCyan #E0FFFF rgb(224, 255, 255)
LightGoldenRodYellow #FAFAD2 rgb(250, 250, 210)
LightGrey #D3D3D3 rgb(211, 211, 211)
LightGreen #90EE90 rgb(144, 238, 144)
LightPink #FFB6C1 rgb(255, 182, 193)
LightSalmon #FFA07A rgb(255, 160, 122)
LightSeaGreen #20B2AA rgb(32, 178, 170)
LightSkyBlue #87CEFA rgb(135, 206, 250)
LightSlateBlue #8470FF rgb(132, 112, 255)
LightSlateGray #778899 rgb(119, 136, 153)
LightSteelBlue #B0C4DE rgb(176, 196, 222)
LightYellow #FFFFE0 rgb(255, 255, 224)
Lime #00FF00 rgb(0, 255, 0)
LimeGreen #32CD32 rgb(50, 205, 50)
Linen #FAF0E6 rgb(250, 240, 230)
Magenta #FF00FF rgb(255, 0, 255)
Maroon #800000 rgb(128, 0, 0)
MediumAquaMarine #66CDAA rgb(102, 205, 170)
MediumBlue #0000CD rgb(0, 0, 205)
MediumOrchid #BA55D3 rgb(186, 85, 211)
MediumPurple #9370D8 rgb(147, 112, 216)
MediumSeaGreen #3CB371 rgb(60, 179, 113)
MediumSlateBlue #7B68EE rgb(123, 104, 238)
MediumSpringGreen #00FA9A rgb(0, 250, 154)
MediumTurquoise #48D1CC rgb(72, 209, 204)
MediumVioletRed #C71585 rgb(199, 21, 133)
MidnightBlue #191970 rgb(25, 25, 112)
MintCream #F5FFFA rgb(245, 255, 250)
MistyRose #FFE4E1 rgb(255, 228, 225)
Moccasin #FFE4B5 rgb(255, 228, 181)
NavajoWhite #FFDEAD rgb(255, 222, 173)
Navy #000080 rgb(0, 0, 128)
OldLace #FDF5E6 rgb(253, 245, 230)
Olive #808000 rgb(128, 128, 0)
OliveDrab #6B8E23 rgb(107, 142, 35)
Orange #FFA500 rgb(255, 165, 0)
OrangeRed #FF4500 rgb(255, 69, 0)
Orchid #DA70D6 rgb(218, 112, 214)
PaleGoldenRod #EEE8AA rgb(238, 232, 170)
PaleGreen #98FB98 rgb(152, 251, 152)
PaleTurquoise #AFEEEE rgb(175, 238, 238)
PaleVioletRed #D87093 rgb(216, 112, 147)
PapayaWhip #FFEFD5 rgb(255, 239, 213)
PeachPuff #FFDAB9 rgb(255, 218, 185)
Peru #CD853F rgb(205, 133, 63)
Pink #FFC0CB rgb(255, 192, 203)
Plum #DDA0DD rgb(221, 160, 221)
PowderBlue #B0E0E6 rgb(176, 224, 230)
Purple #800080 rgb(128, 0, 128)
Red #FF0000 rgb(255, 0, 0)
RosyBrown #BC8F8F rgb(188, 143, 143)
RoyalBlue #4169E1 rgb(65, 105, 225)
SaddleBrown #8B4513 rgb(139, 69, 19)
Salmon #FA8072 rgb(250, 128, 114)
SandyBrown #F4A460 rgb(244, 164, 96)
SeaGreen #2E8B57 rgb(46, 139, 87)
SeaShell #FFF5EE rgb(255, 245, 238)
Sienna #A0522D rgb(160, 82, 45)
Silver #C0C0C0 rgb(192, 192, 192)
SkyBlue #87CEEB rgb(135, 206, 235)
SlateBlue #6A5ACD rgb(106, 90, 205)
SlateGray #708090 rgb(112, 128, 144)
Snow #FFFAFA rgb(255, 250, 250)
SpringGreen #00FF7F rgb(0, 255, 127)
SteelBlue #4682B4 rgb(70, 130, 180)
Tan #D2B48C rgb(210, 180, 140)
Teal #008080 rgb(0, 128, 128)
Thistle #D8BFD8 rgb(216, 191, 216)
Tomato #FF6347 rgb(255, 99, 71)
Turquoise #40E0D0 rgb(64, 224, 208)
Violet #EE82EE rgb(238, 130, 238)
VioletRed #D02090 rgb(208, 32, 144)
Wheat #F5DEB3 rgb(245, 222, 179)
White #FFFFFF rgb(255, 255, 255)
WhiteSmoke #F5F5F5 rgb(245, 245, 245)
Yellow #FFFF00 rgb(255, 255, 0)
YellowGreen #9ACD32 rgb(154, 205, 50)

1 修改Jupyter Notebook默认工作路径

打开Windows的cmd,在cmd中输入

  1. jupyter notebook --generate-config

可以看到路径为D:\Users……找到此路径修改jupyter_notebook_config.py文件
打开此文件找到:

  1. The directory to use for notebooks and kernels.
  2. #c.NotebookApp.notebook_dir = ''
  3. 将其改为:
  4. The directory to use for notebooks and kernels.
  5. c.NotebookApp.notebook_dir = 'E:\Jupyter'

2 安装库问题

D:\Users\ZHAOYADONG706\pip\pip.ini

[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
proxy = 10.59.74.70:80
format = columns
trusted-host = mirrors.aliyun.com

D:\Users\ZHAOYADONG706\.condarc

# 运行以下生成.condarc
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

.condarc文件内容

channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - defaults
show_channel_urls: true

proxy_servers:
    http: http://10.59.74.70:80
    https: https://10.59.74.70:80

ssl_verify: False

3 安装虚拟环境

# conda create -n fastai python=3.6
$  conda create -n d:\fastai_project\fastai python=3.6
Solving environment: done


==> WARNING: A newer version of conda exists. <==
  current version: 4.5.4
  latest version: 4.5.12

Please update conda by running

    $ conda update -n base conda



## Package Plan ##

  environment location: d:\fastai_project\fastai

  added / updated specs:
    - python=3.6


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    vs2015_runtime-14.15.26706 |       h3a45250_0         2.2 MB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    pip-18.1                   |           py36_0         1.8 MB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    vc-14.1                    |       h0510ff6_4           6 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    certifi-2018.11.29         |           py36_0         146 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    setuptools-40.6.3          |           py36_0         625 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    python-3.6.8               |       h9f7ef89_0        20.3 MB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    wincertstore-0.2           |   py36h7fe50ca_0          13 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    wheel-0.32.3               |           py36_0          53 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    sqlite-3.26.0              |       he774522_0         936 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    ------------------------------------------------------------
                                           Total:        26.1 MB

The following NEW packages will be INSTALLED:

    certifi:        2018.11.29-py36_0      https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    pip:            18.1-py36_0            https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    python:         3.6.8-h9f7ef89_0       https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    setuptools:     40.6.3-py36_0          https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    sqlite:         3.26.0-he774522_0      https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    vc:             14.1-h0510ff6_4        https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    vs2015_runtime: 14.15.26706-h3a45250_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    wheel:          0.32.3-py36_0          https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    wincertstore:   0.2-py36h7fe50ca_0     https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main

Proceed ([y]/n)? y


Downloading and Extracting Packages
vs2015_runtime-14.15 |  2.2 MB | #################################################################################################################################################################################################### | 100%
pip-18.1             |  1.8 MB | #################################################################################################################################################################################################### | 100%
vc-14.1              |    6 KB | #################################################################################################################################################################################################### | 100%
certifi-2018.11.29   |  146 KB | #################################################################################################################################################################################################### | 100%
setuptools-40.6.3    |  625 KB | #################################################################################################################################################################################################### | 100%
python-3.6.8         | 20.3 MB | #################################################################################################################################################################################################### | 100%
wincertstore-0.2     |   13 KB | #################################################################################################################################################################################################### | 100%
wheel-0.32.3         |   53 KB | #################################################################################################################################################################################################### | 100%
sqlite-3.26.0        |  936 KB | #################################################################################################################################################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use:
# > activate d:\fastai_project\fastai
#
# To deactivate an active environment, use:
# > deactivate
#
# * for power-users using bash, you must source
#

D:\fastai_project\fastai\Scripts添加到环境变量

1、首先在所在系统中安装Anaconda。可以打开命令行输入conda -V检验是否安装以及当前conda的版本。

2、conda常用的命令。

    1)conda list 查看安装了哪些包。

    2)conda env list 或 conda info -e 查看当前存在哪些虚拟环境

    3)conda update conda 检查更新当前conda

3、创建python虚拟环境。

     使用 conda create -n your_env_name python=X.X(2.7、3.6等)命令创建python版本为X.X、名字为your_env_name的虚拟环境。your_env_name文件可以在Anaconda安装目录envs文件下找到。

4、使用激活(或切换不同python版本)的虚拟环境。

    打开命令行输入python --version可以检查当前python的版本。

    使用如下命令即可 激活你的虚拟环境(即将python的版本改变)。

    Linux:  source activate your_env_name(虚拟环境名称)

    Windows: activate your_env_name(虚拟环境名称)

   这是再使用python --version可以检查当前python版本是否为想要的。

5、对虚拟环境中安装额外的包。

    使用命令conda install -n your_env_name [package]即可安装package到your_env_name中

6、关闭虚拟环境(即从当前环境退出返回使用PATH环境中的默认python版本)。

   使用如下命令即可。

   Linux: source deactivate

   Windows: deactivate

7、删除虚拟环境。

   使用命令conda remove -n your_env_name(虚拟环境名称) --all, 即可删除。

8、删除环境中的某个包。

   使用命令conda remove --name your_env_name  package_name 即可。


# 本地的conda里已经有一个AAA的环境,我想创建一个新环境跟它一模一样的叫BBB,那么这样一句就搞定了:
conda create -n BBB --clone AAA

# 原来电脑上目标conda环境的目录复制到新电脑上,然后再用
conda create -n BBB --clone ~/path

9、共享环境

共享环境是工作中非常有用,它能让其他开发人员一键安装所有你在代码中使用的包,
并且还能确保这些包的版本正确和你使用的一致。例如你开发了一个电商平台数据分析系统,
你要把项目提交给负责项目部署的王五让他来给你部署项目,但是这货并不知道你开发时都使用了哪些依赖包及python版本,
这可如何是好?
这时候你就可以在当前的环境的终端中执行 
conda env export -f environment.yml 或者conda env export > environment.yml
命令将当前的环境以及依赖包等描述保存到指定的YAML文件(包括Pyhton版本以及所有依赖包的名称和版本)。
命令中的前半部分部分 conda env export 用于输出环境中的所有包的名称和版本信息(包括 Python 版本)。
这样在我们指定的路径下可以看到导出的环境文件

我们在 GitHub 等开源仓库上共享代码时,最好以这样的方式同时创建环境文件并将其上传到代码库中。
这可以让别人很轻松地安装你的代码及其所有依赖项。
导出的环境文件,在其他电脑环境中如何使用呢?
首先在conda中进入你的环境,比如activate py3,然后在使用以下命令更新你的环境:
# 其中-f表示你要导出文件在本地的路径,所以/path/to/environment.yml要换成你本地的实际路径
conda env update -f /path/to/environment.yml  

通常还可以使用 pip freeze > environment.txt 导出一个txt文件并将其上传到代码库中。
首先,我们在自己电脑上的conda中将自己项目的环境及依赖导出成environment.txt文件:
然后我们将该文件上传到项目的代码库中,
项目其他开发人员在他的电脑上即使没有安装conda也能使用这个文件来安装和我们一样的开发环境,
他只需要在自己的电脑上进入python命令环境,而后运行如下命令就可以安装该项目所依赖的包:
pip install -r /path/requirements.txt
其中/path/requirements.txt是该文件在你电脑上的实际路径。


使用该conda-forge频道取代defaultsContinuum维护的频道有三个主要原因:

conda-forge 可能比defaults频道更新
conda-forge频道上有不可用的软件包defaults
更愿意使用依赖项,如openblas(from conda-forge)而不是mkl(from defaults)。

4 Python不以科学计数显示

import numpy as np
np.set_printoptions(suppress=True)

5 Jupyter一些符号使用

数据科学的含义:
# 0-Jupyter Notebook的使用(重要) - 图3
它是一个跨学科的课题。数据科学综合了三个领域的能力:

  • 统计学家的能力——能够建立模型和聚合(数据量正在不断增大的)数据;
  • 计算机科学家的能力——能够设计并使用算法对数据进行高效存储、分析和可视化;
  • 领域专家的能力——在细分领域中经过专业训练,既可以提出正确的问题,又可以作出专业的解答。

不要把数据科学看作一个新的知识领域,而要把它看成可以在自己熟悉的领域中运用的新能力。无论你是汇报竞选结果、预测股票收益、优化网络广告点击率、在显微镜下识别微生物、在太空中寻找新天体,还是在其他与数据相关的领域中工作你都需要具备发现问题、解决问题的能力。

(1)用符号 ? 或者help(function)获取文档
(2)通过符号 ?? 获取源代码
(3)用Tab补全的方式探索模块:用 Tab 键自动补全和探索对象、模块及命名空间的内容

  1. 对象内容的Tab自动补全
  2. 导入时的Tab自动补全
  3. 超越Tab自动补全:通配符匹配

例如,可以用它列举出命名空间中以 Warning 结尾的所有对象:

import pandas as pd
pd.read*?
pd.read_clipboard
pd.read_csv
pd.read_excel
pd.read_feather
pd.read_fwf
pd.read_gbq
pd.read_hdf
pd.read_html
pd.read_json
pd.read_msgpack
pd.read_parquet
pd.read_pickle
pd.read_sas
pd.read_sql
pd.read_sql_query
pd.read_sql_table
pd.read_stata
pd.read_table

# 寻找一个字符串方法,它的名称中包含find
str.*find*?
str.find
str.rfind

请注意,这里的 * 符号匹配任意字符串,包括空字符串。

(4)%paste 魔法函数可以解决这个包含符号的多行输入问题

In [3]: %paste
>>> def donothing(x):
... return x
## -- End pasted text --

%paste 命令同时输入并执行该代码,所以你可以看到这个函数现在被应用了:

In [4]: donothing(10)
Out[4]: 10

(5)执行外部代码: %run
假设你创建了一个 myscript.py 文件,该文件包含以下内容:

#-------------------------------------
# file: myscript.py
def square(x):
"""求平方"""
return x ** 2
for N in range(1, 4):
print(N, "squared is", square(N))
In [6]: %run myscript.py
1 squared is 1
2 squared is 4
3 squared is 9

(6)计算代码运行时间: %timeit,自动计算接下来一行的 Python 语句的执行时间

In [8]: %timeit L = [n ** 2 for n in range(1000)]
1000 loops, best of 3: 325 µs per loop

(7)对于多行语句,可以%%符号将其转变成单元魔法,以处理多行输入。
例如,下面是 for 循环的同等结构:

In [9]: %%timeit
...: L = []
...: for n in range(1000):
...: L.append(n ** 2)
...:
1000 loops, best of 3: 373 µs per loop

不清楚这些符号,可以使用
%timeit?%%timeit?查看帮助文档

(8)%magic、%lsmagic、%history使用
(9)%shell命令和!shell命令
(10)代码的分析和计时

  • %time对单个语句的执行时间进行计时。
  • %timeit对单个语句的重复执行进行计时,以获得更高的准确度。
  • %prun利用分析器运行代码。
  • %lprun利用逐行分析器运行代码。
  • %memit测量单个语句的内存使用。
  • %mprun通过逐行的内存分析器运行代码。

(11)代码段计时: %timeit 和 %time
%time 计时比用 %timeit 计时花费的时间要长。这是由于 %timeit 在底层做了一些很聪明的事情来阻止系统调用对计时过程的干扰。
%timeit 会阻止清理未利用的 Python 对象(即垃圾回收),该过程可能影响计时。因此,%timeit 通常比 %time 更快得到结果。
(12)分析整个脚本: %prun
一个程序是由很多单个语句组成的,有时候对整个脚本计时比对单个语句计时更重要。
Python 包含一个内置的代码分析器(你可以在 Python 文档中了解更多相关信息),
但是IPython 提供了一种更方便的方式来使用这个分析器,即通过魔法函数 %prun 实现。

def sum_of_lists(N):
    total = 0
    for i in range(5):
        L = [j ^ (j >> i) for j in range(N)]
        total += sum(L)
    return total
%prun sum_of_lists(1000000)
14 function calls in 1.143 seconds

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        5    0.938    0.188    0.938    0.188 <ipython-input-11-f105717832a2>:4(<listcomp>)
        5    0.143    0.029    0.143    0.029 {built-in method builtins.sum}
        1    0.047    0.047    1.128    1.128 <ipython-input-11-f105717832a2>:1(sum_of_lists)
        1    0.015    0.015    1.143    1.143 <string>:1(<module>)
        1    0.000    0.000    1.143    1.143 {built-in method builtins.exec}
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}

结果是一个表格,该表格按照每个函数调用的总时间,显示了哪里的执行时间最长。
在这个例子中,大部分执行时间用在 sum_of_lists 的列表综合中。通过观察这个数据,我们可以开始考虑通过调整哪里来提升算法的性能。

(13)用 %lprun 进行逐行分析
%prun 对代码中的每个函数进行分析非常有用,但有时逐行代码分析报告更方便。
该功能并没有内置于 PythonIPython,但是可以通过安装 line_profiler 包来实现。首先利
Python 的包管理工具 pip 安装 line_profiler 包:

$ pip install line_profiler

接下来可以用 IPython 导入 line_profiler 包提供的 IPython 扩展:

In[9]: %load_ext line_profiler

现在 %lprun 命令就可以对所有函数进行逐行分析了。在下面的例子中,我们需要明确指出要分析哪些函数:

In[10]: %lprun -f sum_of_lists sum_of_lists(5000)

和前面的性能分析过程一样,Notebook 会在页面上返回结果,如下所示:

Timer unit: 4.44427e-07 s

Total time: 0.00936497 s
File: <ipython-input-11-f105717832a2>
Function: sum_of_lists at line 1

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
     1                                           def sum_of_lists(N):
     2         1          5.0      5.0      0.0      total = 0
     3         6         17.0      2.8      0.1      for i in range(5):
     4         5      20460.0   4092.0     97.1          L = [j ^ (j >> i) for j in range(N)]
     5         5        589.0    117.8      2.8          total += sum(L)
     6         1          1.0      1.0      0.0      return total

(14)用 %memit进行内存分析
通过 IPython 的另一个扩展来评估,即memory_profiler

$ pip install memory_profiler

用 IPython 导入该扩展:

In[12]: %load_ext memory_profiler

内存分析扩展包括两个有用的魔法函数:
%memit 魔法函数(它提供的内存消耗计算功能类似于 %timeit )和 %mprun 魔法函数(它提供的内存消耗计算功能类似于 %lprun )。

%memit 函数用起来很简单:

In[13]: %memit sum_of_lists(1000000)
peak memory: 162.42 MiB, increment: 73.63 MiB

可以看到,这个函数大概消耗了 162MB 的内存。

如何自动为IPython/Jupyter NoteBook 引入库

如果您经常使用交互式IPython会话或Jupyter笔记本,并且您厌倦了反复导入相同的库,请尝试以下方法:

  1. 切换到~/.ipython/profile_default
  2. 新建一个名为startup的文件夹
  3. 新建一个名为start.py 的Python文件
  4. 放入常用的python库的import
  5. 开始使用IPython

下面是过程:

首先是start.py的位置:
# 0-Jupyter Notebook的使用(重要) - 图4

start.py

import pandas as pd
import numpy as np

# Pandas options
pd.options.display.max_columns = 30
pd.options.display.max_rows = 20

from IPython import get_ipython
ipython = get_ipython()

# If in ipython, load autoreload extension
if 'ipython' in globals():
    print('\nWelcome to IPython!')
    ipython.magic('load_ext autoreload')
    ipython.magic('autoreload 2')

# Display all cell outputs in notebook
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all'

# Visualization
import plotly.plotly as py
import plotly.graph_objs as go
from plotly.offline import iplot, init_notebook_mode
init_notebook_mode(connected=True)
import cufflinks as cf
cf.go_offline(connected=True)
cf.set_config_file(theme='pearl')

print('Your favorite libraries have been loaded.')

然后在打开Ipython时,就会出现:
# 0-Jupyter Notebook的使用(重要) - 图5

可以用 globals() 来验证一下:
# 0-Jupyter Notebook的使用(重要) - 图6

注意事项:

给jupyter notebook设置代理服务器

D:\Users\xxx.ipython\profile_myserver\startup\startup.py

import sys,os,os.path
os.environ[‘HTTP_PROXY’]=”http://10.59.74.70:80
os.environ[‘HTTPS_PROXY’]=”http://10.59.74.70:80





6 七个进阶功能助你提高Jupter效率翻倍

作为一个超好用的交互式笔记本,Jupyter总是深受开发者的喜爱。

# 0-Jupyter Notebook的使用(重要) - 图7

不过,除了基础的写文档之外,其实Jupyter还有N多功能,简直是一个集视频、图片、PPT、多种交互于一身的万花筒。

如果不会用,你可能错过了Jupyter 99%的功能。

Medium上走向数据科学(Towards Data Science)专栏的作者Parul Pandey就总结了七大Jupyter的进阶用法,量子位编译如下~

6.1.执行shell命令

Shell是一种与计算机进行文本交互的方式。

一般来讲,当你正在使用Python编译器,需要用到命令行工具的时候,要在shell和IDLE之间进行切换。

但是,如果你用的是Jupyter,就完全不用这么麻烦了,你可以直接在命令之前放一个“!”,就能执行shell命令,完全不用切换来切换去,就能在IPython里执行任何命令行。

In [1]: !ls
example.jpeg list tmp
In [2]: !pwd
/home/Parul/Desktop/Hello World Folder'
In [3]: !echo "Hello World"
Hello World

我们甚至可以将值传递给shell,像下面这样:

In [4]: files= !ls
In [5]: print(files)
['example.jpeg', 'list', 'tmp']
In [6]: directory = !pwd
In [7]: print(directory)
['/Users/Parul/Desktop/Hello World Folder']
In [8]: type(directory)
IPython.utils.text.SList

注意,返回结果的数据类型不是列表。

6.2.给Jupyter换主题

使用Jupyter主题,不仅能让你的Jupyter界面更好看、更舒服,还能让屏幕上的代码看起来更显眼。

比如Chesterish主题:

# 0-Jupyter Notebook的使用(重要) - 图8

solarizedl主题:

# 0-Jupyter Notebook的使用(重要) - 图9

来看一下具体的操作方法:

第一步,安装:

pip install jupyterthemes

第二步,加载可用主题列表:

jt -l

第三步,选择你想要的主题:

# selecting a particular theme
jt -t <name of the theme>
# reverting to original Theme
jt -r

现在可用的主题有:

chesterish grade3 gruvboxd gruvboxl monokai oceans16 onedork solarizedd solarizedl

把名字填进去就好啦。

不过,每次换主题的时候都要重新加载Jupyter,才能看到主题变化。

另外我们上面讲的在命令之前加“!”也一样可用。

6.3.笔记本扩展

笔记本扩展(nbextensions)是一种JavaScript模块,可以加载到笔记本前端页面上,可以大大提升用户体验。

比如下面这些扩展工具,简直能让效率提升10000倍。

Hinterland

Hinterland功能可以让你每敲完一个键,就出现下拉菜单,可以直接选中你需要的词汇。

# 0-Jupyter Notebook的使用(重要) - 图10

Snippets

Snippets在工具栏里加了一个下拉菜单,可以非常方便的直接插入代码段,完全不用手动敲。

# 0-Jupyter Notebook的使用(重要) - 图11

拆分单元格

拆分笔记本中的单元格,改成相邻的模式,看起来就像分了两栏。

# 0-Jupyter Notebook的使用(重要) - 图12

目录

这个功能可以自动找到所有的标题,生成目录。

并且这个目录还是移动的呦,你可以放在侧边栏,也可以拖动到任何你喜欢的地方悬浮起来。

# 0-Jupyter Notebook的使用(重要) - 图13

折叠一个标题下的全部内容

如果你的代码太长,觉得滚动过去太麻烦,可以直接折叠掉。

# 0-Jupyter Notebook的使用(重要) - 图14

Autopep8

一键美化代码,强迫症的福音。

# 0-Jupyter Notebook的使用(重要) - 图15

安装方法

jupyter notebook 扩展插件安装

reference:https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/install.html
2 steps

first
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jupyter_contrib_nbextensions

second
jupyter contrib nbextension install —user
最后看一下怎么装,需要用到conda:

conda install -c conda-forge jupyter_nbextensions_configurator

或者用pip:

pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install
#incase you get permission errors on MacOS,
pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install --us

然后把Jupyter打开,你就可以看到NBextensions这个选项卡了。

# 0-Jupyter Notebook的使用(重要) - 图16

找不到的话就去菜单的Edit里面找。

# 0-Jupyter Notebook的使用(重要) - 图17

搞定。

6.4.Jupyter小工具

还有一些Jupyter小工具,比如滑块、文本框之类的部分,可以做一些方便的交互。

滑块

# 0-Jupyter Notebook的使用(重要) - 图18

def f(x):
    return x
# Generate a slider 
interact(f, x=10,);

布尔值生成复选框

# 0-Jupyter Notebook的使用(重要) - 图19

# Booleans generate check-boxes
interact(f, x=True);

字符串生成文本区域

# 0-Jupyter Notebook的使用(重要) - 图20

# Strings generate text areas
interact(f, x='Hi there!');

播放器

# 0-Jupyter Notebook的使用(重要) - 图21

play = widgets.Play(
     # interval=10,
     value=50,
     min=0,
     max=100,
     step=1,
     description="Press play",
     disabled=False
 )
slider = widgets.IntSlider()
widgets.jslink((play, 'value'), (slider, 'value'))
widgets.HBox([play, slider])

日历

# 0-Jupyter Notebook的使用(重要) - 图22

widgets.DatePicker(
    description='Pick a Date',
    disabled=False
)

不过这个部件只能咋Chrome和Edge里用,Firefox和Safari不支持。

调色盘

# 0-Jupyter Notebook的使用(重要) - 图23

widgets.ColorPicker(
    concise=False,
    description='Pick a color',
    value='blue',
    disabled=False
)

标签

# 0-Jupyter Notebook的使用(重要) - 图24

tab_contents = ['P0', 'P1', 'P2', 'P3', 'P4']
children = [widgets.Text(description=name) for name in tab_contents]
tab = widgets.Tab()
tab.children = children
for i in range(len(children)):
    tab.set_title(i, str(i))
tab

其他的小部件,可以在文末的传送门跳转到GitHub寻找。

安装方法

# pip
pip install ipywidgets
jupyter nbextension enable --py widgetsnbextension
# Conda
conda install -c conda-forge ipywidgets
#Installing ipywidgets with conda automatically enables the extension

使用“interact”功能自动创建UI控件,这是使用IPython最方便的方法。

# Start with some imports!
from ipywidgets import interact
import ipywidgets as widgets

6.5.Qgrid

Qgrid也是一个Jupyter的小部件,不过它主要用于数据帧,装上之后,就可以像操作Excel里的筛选功能一样,方便的处理数据。

# 0-Jupyter Notebook的使用(重要) - 图25

安装方法

用pip安装:

pip install qgrid
jupyter nbextension enable --py --sys-prefix qgrid
# only required if you have not enabled the ipywidgets nbextension yet
jupyter nbextension enable --py --sys-prefix widgetsnbextension

用conda安装:

# only required if you have not added conda-forge to your channels yet
conda config --add channels conda-forge
conda install qgrid

6.6.放PPT

人在江湖飘,难免遇到要做PPT的时候。

但是,如果你的内容都已经放在Jupyter里了,再重新导入PPT,太麻烦了,我们自动转换吧。

一种方法是用Jupyter内置的PPT选项,依次点击菜单栏里的View → Cell Toolbar → Slideshow,之后每个单元格上面都会有一个灰色的横条,选Sub-Slide

# 0-Jupyter Notebook的使用(重要) - 图26

然后输入以下代码:

jupyter nbconvert *.ipynb --to slides --post serve
# insert your notebook name instead of *.ipynb

好了,现在就变成PPT样式的了,显示在端口8000,你也可以查看源代码找到PPT文件。

# 0-Jupyter Notebook的使用(重要) - 图27

你也可以提前换好主题,比如onedork主题,然后再转换成PPT的的时候就是同一个主题风格的PPT了。

# 0-Jupyter Notebook的使用(重要) - 图28

不过,用PyTorch默认方法生成的PPT代码不能编辑,这个时候就要用到RISE插件了。

RISE用到reveal.js来运行PPT,可以不退出PPT,直接运行代码。

先来安装RISE,推荐用conda:

conda install -c damianavila82 rise

其实不太推荐pip:

pip install RISE

然后调用JS和CSS:

jupyter-nbextension install rise --py --sys-prefix
#enable the nbextension:
jupyter-nbextension enable rise --py --sys-prefix

安装好啦,现在重新打开你的Jupyter Notebook,发现一个新的扩展,名叫“Enter/Exit RISE Slideshow”。

# 0-Jupyter Notebook的使用(重要) - 图29

戳一下,一个可以边演示边改的PPT就好了。

# 0-Jupyter Notebook的使用(重要) - 图30

6.7.放嵌入链接和pdf

扔链接再跳转实在是太麻烦了,不如直接把素材放进Jupyter里面。

嵌入链接

#Note that http urls will not be displayed. Only https are allowed inside the Iframe
from IPython.display import IFrame
IFrame('https://en.wikipedia.org/wiki/HTTPS', width=800, height=450)

操作方式如下,当然你需要把链接换成你要放的链接:

# 0-Jupyter Notebook的使用(重要) - 图31

嵌入pdf

from IPython.display import IFrame
IFrame('https://arxiv.org/pdf/1406.2661.pdf', width=800, height=450)

同样,把pdf链接换成你需要用的pdf。

# 0-Jupyter Notebook的使用(重要) - 图32

7 传送门

原文:Bringing the best out of Jupyter Notebooks for Data Science Parul Pandey, Towards Data Science
https://towardsdatascience.com/bringing-the-best-out-of-jupyter-notebooks-for-data-science-f0871519ca29

Jupyter主题
https://github.com/dunovank/jupyter-themes

IPython小部件
https://github.com/jupyter-widgets/ipywidgets






4 Jupyter Notebook扩展
Jupyter Notebook是一个非常赞的可用于教学,探索和编程的环境,但最原始的Jupyter Notebook是缺乏一些强功能的。但幸运的是,有很多方法可以改进这个工具,比如:Jupyter Notebook的扩展

▍快速安装

在命令提示符中运行以下命令:

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install

启动Jupyter Notebook并导航到新的Nbextensions选项卡:

# 0-Jupyter Notebook的使用(重要) - 图33

如果没有看到tab选项卡,请打开notebook,然后单击edit> nbextensions配置

可用的扩展选项可以在notebook中的工具栏中看到:

# 0-Jupyter Notebook的使用(重要) - 图34

▍该使用哪些扩展功能?

上面只是一个简单的安装介绍,下面是有关Jupyter notebook扩展的一些细节。本篇个人常常使用的前5个扩展,以帮助你入门。

什么是Jupyter Notebook扩展?

Jupyter Notebook扩展是简单的附加组件,可扩展notebook环境的基本功能。用JavaScript编写,它们可以执行自动编码代码或在单元格完成时发送浏览器通知等操作。扩展目前仅适用于Jupyter Notebook(不是Jupyter Lab)。

为何使用这些扩展?Jupyter Notebook是教学,学习,原型设计,探索和尝试新方法(甚至是Netflix生产)的绝佳工具。然而,vanilla notebooks的功能有限,这些功能可能会让人感到沮丧。虽然Jupyter Notebook扩展并没有完全解决问题,但它们确实增加了一些好处,使工作更加方便。

以下是我经常使用的5个Jupyter Notebook扩展:

1.目录:更简单地导航

一旦你开始在一个Jupyter Notebook中获得几十个单元格,就很难跟踪它们。目录通过添加可以位于页面上任何位置的链接TOC来解决该问题:

# 0-Jupyter Notebook的使用(重要) - 图35

你还可以使用扩展程序在notebook顶部添加链接的目录。这甚至还可以显示选择了哪个单元格以及哪个单元格正在运行。

# 0-Jupyter Notebook的使用(重要) - 图36

2. Autopep8:只需单击一下即可获得整洁的代码

我们都应该编写符合pep8标准的代码,但有时你会陷入分析中,并且很难坚持最佳的实践。这个扩展允许你只需点击木槌并自动格式化你的凌乱代码。

# 0-Jupyter Notebook的使用(重要) - 图37

与最好的附加组件一样,只需单击一下即可完成一项耗时且繁琐的任务,使你能够专注于思考问题。

3.变量检查器:跟踪你的工作区

变量检查器显示你在notebook中创建的所有变量的名称,以及它们的类型,大小,维度和值。

# 0-Jupyter Notebook的使用(重要) - 图38

对于从RStudio迁移的数据科学家来说,或者如果您不想继续打印df.shape或者无法调用x的类型,此工具非常有用。

4. ExecuteTime:显示单元格运行的时间和长度

我经常发现自己试图弄清楚一个细胞运行了多长时间,或者我上次运行已经开放数天的笔记本电脑。 ExecuteTime通过显示单元格何时完成以及花费多长时间来处理这两者。

# 0-Jupyter Notebook的使用(重要) - 图39

其实有更好的计时方法,例如%% timeit cell magic。但这种方法可以很容易实现并覆盖notebook中的所有单元格。

5.隐藏代码输入:隐藏工作显示结果

虽然我们中的一些人喜欢看到分析中的复杂代码过程,但有些人只是喜欢看到结果。隐藏输入所有扩展名可以允许你在保持输出的同时立即隐藏notebook中的所有代码。

# 0-Jupyter Notebook的使用(重要) - 图40

下次有人说他们只想看结果时,您只需单击一下就可以解决(虽然你应该总是检查代码)。

这些只是我发现自己最常使用的扩展,而你不仅限于五个。通过安装扩展并打开notebook来查看整个列表。如果你愿意,你甚至可以编写自己的扩展。参考文档如下:

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/internals.html

▍结论

安装Jupyter Notebook扩展,花些时间确定哪些对你有用,并提高您的工作效率。虽然这些都没有改变生活,但它们都增加了足够的好处,值得累积,可以累积节省宝贵的开发时间。

虽然如果你正在编写生产代码,你可能想花些时间学习IDE,但Jupyter Notebook仍然是数据科学工作流程中不可或缺的一部分。如果你打算使用此环境,你可以从工具中获得最大收益。

Jupyter Notebook主题字体设置及自动代码补全

Jupyter Notebook用久了就离不开了,然而自带的主题真的不忍直视。为了视力着想,为了自己看起来舒服,于是折腾了一番。。在github上发现了一个jupyter-themes工具,可以通过pip安装,非常方便使用。

首先是主题下载,命令行如下所示:

pip install --no-dependencies jupyterthemes==0.18.2

安装好了,有的电脑可能会提示缺少 lesscpy,继续 pip 安装

pip install lesscpy

然后是对主题选择、字体大小进行设置,我总结了一个我最喜欢的

jt --lineh 140 -f consolamono -tf ptmono -t grade3 -ofs 14 -nfs 14 -tfs 14 -fs 14 -T -N

命令行的格式的解释如下表所示:

cl options arg default
Usage help -h
List Themes -l
Theme Name to Install -t
Code Font -f
Code Font-Size -fs 11
Notebook Font -nf
Notebook Font Size -nfs 13
Text/MD Cell Font -tf
Text/MD Cell Fontsize -tfs 13
Pandas DF Fontsize dfs 9
Output Area Fontsize -ofs 8.5
Mathjax Fontsize (%) -mathfs 100
Intro Page Margins -m auto
Cell Width -cellw 980
Line Height -lineh 170
Cursor Width -cursw 2
Cursor Color -cursc
Alt Prompt Layout -altp
Alt Markdown BG Color -altmd
Alt Output BG Color -altout
Style Vim NBExt* -vim
Toolbar Visible -T
Name & Logo Visible -N
Reset Default Theme -r
Force Default Fonts -dfonts

# 0-Jupyter Notebook的使用(重要) - 图41

接着让 jupyter notebook 实现自动代码补全,首先安装 nbextensions

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user

然后安装 nbextensions_configurator

pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user

如果提示缺少依赖,就使用pip安装对应依赖即可。
最后重启jupyter,在弹出的主页面里,能看到增加了一个Nbextensions标签页,在这个页面里,勾选Hinterland即启用了代码自动补全,如图所示:

# 0-Jupyter Notebook的使用(重要) - 图42