一、更改字体、大小、颜色
<font face="黑体">我是黑体字</font>
<font face="微软雅黑">我是微软雅黑</font>
<font face="STCAIYUN">我是华文彩云</font>
<font color=red>我是红色</font>
<font color=#008000>我是绿色</font>
<font color=Blue>我是蓝色</font>
<font size=5>我是尺寸</font>
<font face="黑体" color=green size=5>我是黑体,绿色,尺寸为5</font>
二、为文字添加背景色
由于 style 标签和标签的 style 属性不被支持,所以这里只能是借助 table, tr, td 等表格标签的 bgcolor 属性来实现背景色。故这里对于文字背景色的设置,只是将那一整行看作一个表格,更改了那个格子的背景色(bgcolor)
<table><tr><td bgcolor=yellow>背景色yellow</td></tr></table>
三、设置图片大小
1、设置设置图片百分比
<img src="http://pic11.photophoto.cn/20090626/0036036341009653_b.jpg"
width="50%" height="50%">
2、设置图片大小
<img src="http://pic11.photophoto.cn/20090626/0036036341009653_b.jpg"
width="251" height="350" >
3、设置图片居中
<div align=right><img src="http://pic11.photophoto.cn/20090626/0036036341009653_b.jpg"
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中输入
jupyter notebook --generate-config
可以看到路径为D:\Users……
找到此路径修改jupyter_notebook_config.py
文件
打开此文件找到:
The directory to use for notebooks and kernels.
#c.NotebookApp.notebook_dir = ''
将其改为:
The directory to use for notebooks and kernels.
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一些符号使用
数据科学的含义:
它是一个跨学科的课题。数据科学综合了三个领域的能力:
- 统计学家的能力——能够建立模型和聚合(数据量正在不断增大的)数据;
- 计算机科学家的能力——能够设计并使用算法对数据进行高效存储、分析和可视化;
- 领域专家的能力——在细分领域中经过专业训练,既可以提出正确的问题,又可以作出专业的解答。
不要把数据科学看作一个新的知识领域,而要把它看成可以在自己熟悉的领域中运用的新能力。无论你是汇报竞选结果、预测股票收益、优化网络广告点击率、在显微镜下识别微生物、在太空中寻找新天体,还是在其他与数据相关的领域中工作你都需要具备发现问题、解决问题的能力。
(1)用符号 ? 或者help(function)获取文档
(2)通过符号 ?? 获取源代码
(3)用Tab补全的方式探索模块:用 Tab 键自动补全和探索对象、模块及命名空间的内容
- 对象内容的Tab自动补全
- 导入时的Tab自动补全
- 超越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
对代码中的每个函数进行分析非常有用,但有时逐行代码分析报告更方便。
该功能并没有内置于 Python
或 IPython
,但是可以通过安装 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笔记本,并且您厌倦了反复导入相同的库,请尝试以下方法:
- 切换到~/.ipython/profile_default
- 新建一个名为startup的文件夹
- 新建一个名为start.py 的Python文件
- 放入常用的python库的import
- 开始使用IPython
下面是过程:
首先是start.py的位置:
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时,就会出现:
可以用 globals() 来验证一下:
注意事项:
- 文件名可以是任意的(这里用start.py) 只是为了好记。
- 在使用Jupyter Notebook 并分享的时候,记得把start.py 内的内容复制进去。
给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总是深受开发者的喜爱。
不过,除了基础的写文档之外,其实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主题:
solarizedl主题:
来看一下具体的操作方法:
第一步,安装:
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功能可以让你每敲完一个键,就出现下拉菜单,可以直接选中你需要的词汇。
Snippets
Snippets在工具栏里加了一个下拉菜单,可以非常方便的直接插入代码段,完全不用手动敲。
拆分单元格
拆分笔记本中的单元格,改成相邻的模式,看起来就像分了两栏。
目录
这个功能可以自动找到所有的标题,生成目录。
并且这个目录还是移动的呦,你可以放在侧边栏,也可以拖动到任何你喜欢的地方悬浮起来。
折叠一个标题下的全部内容
如果你的代码太长,觉得滚动过去太麻烦,可以直接折叠掉。
Autopep8
一键美化代码,强迫症的福音。
安装方法
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这个选项卡了。
找不到的话就去菜单的Edit里面找。
搞定。
6.4.Jupyter小工具
还有一些Jupyter小工具,比如滑块、文本框之类的部分,可以做一些方便的交互。
滑块
def f(x):
return x
# Generate a slider
interact(f, x=10,);
布尔值生成复选框
# Booleans generate check-boxes
interact(f, x=True);
字符串生成文本区域
# Strings generate text areas
interact(f, x='Hi there!');
播放器
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])
日历
widgets.DatePicker(
description='Pick a Date',
disabled=False
)
不过这个部件只能咋Chrome和Edge里用,Firefox和Safari不支持。
调色盘
widgets.ColorPicker(
concise=False,
description='Pick a color',
value='blue',
disabled=False
)
标签
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里的筛选功能一样,方便的处理数据。
安装方法
用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
。
然后输入以下代码:
jupyter nbconvert *.ipynb --to slides --post serve
# insert your notebook name instead of *.ipynb
好了,现在就变成PPT样式的了,显示在端口8000,你也可以查看源代码找到PPT文件。
你也可以提前换好主题,比如onedork主题,然后再转换成PPT的的时候就是同一个主题风格的PPT了。
不过,用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”。
戳一下,一个可以边演示边改的PPT就好了。
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)
操作方式如下,当然你需要把链接换成你要放的链接:
嵌入pdf
from IPython.display import IFrame
IFrame('https://arxiv.org/pdf/1406.2661.pdf', width=800, height=450)
同样,把pdf链接换成你需要用的pdf。
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选项卡:
如果没有看到tab选项卡,请打开notebook,然后单击edit> nbextensions配置
可用的扩展选项可以在notebook中的工具栏中看到:
▍该使用哪些扩展功能?
上面只是一个简单的安装介绍,下面是有关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来解决该问题:
你还可以使用扩展程序在notebook顶部添加链接的目录。这甚至还可以显示选择了哪个单元格以及哪个单元格正在运行。
2. Autopep8:只需单击一下即可获得整洁的代码
我们都应该编写符合pep8标准的代码,但有时你会陷入分析中,并且很难坚持最佳的实践。这个扩展允许你只需点击木槌并自动格式化你的凌乱代码。
与最好的附加组件一样,只需单击一下即可完成一项耗时且繁琐的任务,使你能够专注于思考问题。
3.变量检查器:跟踪你的工作区
变量检查器显示你在notebook中创建的所有变量的名称,以及它们的类型,大小,维度和值。
对于从RStudio迁移的数据科学家来说,或者如果您不想继续打印df.shape或者无法调用x的类型,此工具非常有用。
4. ExecuteTime:显示单元格运行的时间和长度
我经常发现自己试图弄清楚一个细胞运行了多长时间,或者我上次运行已经开放数天的笔记本电脑。 ExecuteTime通过显示单元格何时完成以及花费多长时间来处理这两者。
其实有更好的计时方法,例如%% timeit cell magic。但这种方法可以很容易实现并覆盖notebook中的所有单元格。
5.隐藏代码输入:隐藏工作显示结果
虽然我们中的一些人喜欢看到分析中的复杂代码过程,但有些人只是喜欢看到结果。隐藏输入所有扩展名可以允许你在保持输出的同时立即隐藏notebook中的所有代码。
下次有人说他们只想看结果时,您只需单击一下就可以解决(虽然你应该总是检查代码)。
这些只是我发现自己最常使用的扩展,而你不仅限于五个。通过安装扩展并打开notebook来查看整个列表。如果你愿意,你甚至可以编写自己的扩展。参考文档如下:
https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/internals.html
▍结论
安装Jupyter Notebook扩展,花些时间确定哪些对你有用,并提高您的工作效率。虽然这些都没有改变生活,但它们都增加了足够的好处,值得累积,可以累积节省宝贵的开发时间。
虽然如果你正在编写生产代码,你可能想花些时间学习IDE,但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 | — |
接着让 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即启用了代码自动补全,如图所示: