- 常见报错及解决方案
- 学习书单
- Anaconda3及其工具介绍
- Jupyter Notebook教程
- 不显示目录
jupyter nbconvert mythesis.ipynb
# 显示目录
notebook上download toc.html %无效
另一种方法:先markdown,后html - Spyder教程
- PyCharm教程
- IDE 常用快捷键
- 环境配置
- 使用 sys
- 打印多个路径
- 获得当前工作目录
- 获得当前工作目录的父目录
- 修改路径
- 代码规范(PEP8)
- 分号
- 行长度<=80
- 反斜杠
- 基本的魔法函数
- 读取 EXCEL文件,并写入数据库
- mysql 是数据库; pymysql是你用的连接数据库的库; root对应数据库用户名; root冒号后面写数据库的密码; @符合后面写数据库地址,本地是localhost,3306是端口,trust是数据库名。
- labels 接受string或array。代表删除的行或列的标签。无默认
- axis 接受0或1,代表操作的轴向。默认为0,默认按行删除
- levels 接受int或者索引名。代表标签所在级别。默认为None
- inplace 接受boolean。代表操作是否对原数据生效,默认为False。
- pypy 编译器使 python代码运行更快
- 类 Class 的介绍
- 代替print调试代码:pdb库
常见报错及解决方案
**openpyxl**
读取 Excel 文件失败原因:不能有条件格式- 安装库超时
专业网络抓包工具 Telerik Fiddler 5.0.20194.41348 中文汉化版
学习书单
- 《Python网络数据采集》
内容简介 :
本书采用简洁强大的Python语言,介绍了网络数据采集,并为采集新式网络中的各种数据类型提供了全面的指导。第一部分重点介绍网络数据采集的基本原理:如何用Python从网络服务器请求信息,如何对服务器的响应进行基本处理,以及如何以自动化手段与网站进行交互。第二部分介绍如何用网络爬虫测试网站,自动化处理,以及如何通过更多的方式接入网络。
作者简介:
Ryan Mitchell
数据科学家、软件工程师,目前在波士顿LinkeDrive公司负责开发公司的API和数据分析工具。此前,曾在Abine公司构建网络爬虫和网络机器人。她经常做网络数据采集项目的咨询工作,主要面向金融和零售业。另著有Instant Web Scraping with Java。
已保存至百度网盘
- 《编程小白的第一本Python入门书》
- 《Python编程快速上手 让繁琐工作自动化》
- 《PyCharm 中文指南 2.0 文档》
http://pycharm.iswbm.com/zh_CN/latest/index.html
- matplotlib 第三方库官网
- Python for you and me 0.4.beta1 文档
- 玩蛇网:Python学习与分享平台
- 廖雪峰的官方网站——Python教程
- Anacona Documentation: Getting started with Anaconda
- Python学习路线 -阿里云大学
Anaconda3及其工具介绍
Anaconda
一个开源的Python发行版本,包含了conda、Python等180多个科学报及其依赖项,如果只需要某些包,或节省内存,可以使用较小的发行版Miniconda(仅包含conda和python)
conda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件及其依赖,并能够在不同的环境之间切换。
Anaconda下载
下载地址:https://www.anaconda.com/download/
Anaconda Navigator
用于管理工具包和环境的图形用户界面,后续涉及的众多管理命令也可以在 Navigator 中手工实现。
命令行工具
anaconda powershell prompt与anaconda prompt
两者的区别: 前者包含了后者,命令更广。https://press.one/files/322f2647c0bb7f85f214c109a35bd3ce744b6710083e64e1b38e19de107076e5
Jupyter notebook
是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。
简而言之,Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示的程序。如在编程过程中需要编写说明文档,可在同一个页面中直接编写,便于作及时的说明和解释。
即Jupyter Notebook中所有交互计算、编写说明文档、数学公式、图片以及其他富媒体形式的输入和输出,都是以文档的形式体现的。
这些文档是保存为后缀名为.ipynb的JSON格式文件,不仅便于版本控制,也方便与他人共享。
此外,文档还可以导出为:HTML、LaTeX、PDF等格式。
Jupyter Notebook的主要特点:
① 编程时具有语法高亮、缩进、tab补全的功能。
② 可直接通过浏览器运行代码,同时在代码块下方展示运行结果。
③ 以富媒体格式展示计算结果。富媒体格式包括:HTML,LaTeX,PNG,SVG等。
④ 对代码编写说明文档或语句时,支持Markdown语法。
⑤ 支持使用LaTeX编写数学性说明。
Jupyterlab
JupyterLab 是包括了Notebook的下一代用户界面。有模块化的界面,可以在同一个窗口同时打开好几个notebook或文件(HTML, TXT, Markdown等等),都以标签的形式展示,于是就更像是一个IDE。
点击launch会在默认浏览器打开 http://loclhost8888/lab 可以输入python代码。
与notebook的区别:
https://www.cnblogs.com/heenhui2016/p/10637746.html
https://zhuanlan.zhihu.com/p/38612108
Spyder
一个使用Python语言、跨平台的、科学运算集成开发环境。点击 Anaconda Navigator ,第一次启用,会初始化,耐心等待一段时间,加载完成,界面如图。
Qtconsole
一个可执行IPython的仿终端图形界面程序,相比Python Shell界面,可以直接显示代码生成的图形,实现多行代码输入执行,以及内置许多有用的功能和函数。
VSCode
Visual Studio Code一个轻量级但功能强大的袁大妈编辑器,可在桌面运行,内置对JavaScript,TypeScript和Node.js的支持,并为其他语言提供了丰富的扩展生态系统
Orange
通过巧妙的数据可视化执行简单的数据分析,探索统计分布,箱型图和散点图,或深入了解决策树,层次聚类,热图,MDS和线性投影。 在教授数据挖掘时,我们喜欢说明而不是仅仅解释。而橙色很棒。Orange在世界各地的学校,大学和专业培训课程中使用,支持数据科学概念的实践培训和视觉插图。甚至还有专门为教学设计的小部件。
附加组件扩展功能:
使用Orange中可用的各种附加组件从外部数据源挖掘数据,执行自然语言处理和文本挖掘,进行网络分析,推断频繁项目集并执行关联规则挖掘。此外,生物信息学家和分子生物学家可以使用Orange通过差异表达对基因进行排序并进行富集分析。
Anconda下载地址:
说明 | Anaconda下载地址 |
---|---|
官方首页地址 | https://www.anaconda.com/distribution/ |
官方旧版地址 | https://repo.anaconda.com/archive/ |
官方miniconda地址 | https://repo.anaconda.com/miniconda/ |
国内镜像地址 | https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ |
国内miniconda镜像地址 | https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda |
Anaconda与python版本对应
https://www.jb51.net/article/197003.htm浅谈anaconda python 版本对应关系
Jupyter Notebook教程
- Notebook更改工作目录
生成配置文件
jupyter notebook --generate-config
- 在用户目录下找到
.jupyter
文件夹,打开里面的配置文件,修改路径
- 找到
jupyter notebook
快捷方式,右键点击属性,目标删除%及其包含的内容,起始位置改为目标文件夹的路径。
- Jupyter Notebook与conda关联
安装”nb_conda”
conda install nb_conda
将conda创建的环境与Notebook关联
可能出现的错误:版本不兼容,需升级”ipkernel”版本
conda update ipykernel
conda install nb_conda
conda update --all
- Jupyter Notebook与R关联
在此之前安装好R、Rstudio
使用Conda管理,安装 r-essentials常用包,并将该包配置在当前工作环境下
conda install -c r r-essentials
要卸载R Essentials软件包,请运行:
conda remove r-essentials
注意:这仅删除R Essentials,并禁用R语言支持。不删除其他R语言包。
上一步是在没有安装R的情况下操作,或者是在anaconda上使用R,而不是jupyter notebook打开R命令行或Rstudio console
install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon', 'pbdZMQ', 'devtools', 'uuid','digest'))
devtools::install_github('IRkernel/IRkernel')
注意:在R与Rstudio安装包是不同步的,也就是需要分别安装
jupyter调用的包来自R而不是Rstudio执行下列代码
# 只在当前用户下安装
IRkernel::installspec()
# 或者是在系统下安装
IRkernel::installspec(user = FALSE)
打开Jupyter Notebook就可以新建R
https://www.datacamp.com/community/blog/jupyter-notebook-r
- 显示目录
在Jupyter Notebook
conda install -c conda-forge jupiyter_contrib_nbextensions
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
重新打开jupyter,Home发现多出Nbextensions选项
点击 Nbextensions——>勾选 Collapsible Headings 和 Table of Contents——>设置完毕,打开一个notebook,发现多出Table of Contents图标在Jupyterlab
# 安装jupyter-toc,项目地址:https://github.com/jupyterlab/jupyterlab-toc
jupyter labextension install @jupyterlab/toc
- Jupyter Notebook快捷键
两种键入方式:
- 编辑模式(绿色):可在单元中输入代码或文本,按 Enter 开启
命令模式(灰色):输入运行程序命令,按 ESC 开启
命令模式:
Enter : 转入编辑模式
Shift-Enter : 运行本单元,选中下个单元
Ctrl-Enter : 运行本单元
Alt-Enter : 运行本单元,在其下插入新单元
Y : 单元转入代码状态
M :单元转入markdown状态
R : 单元转入raw状态
1 : 设定 1 级标题
2 : 设定 2 级标题
3 : 设定 3 级标题
4 : 设定 4 级标题
5 : 设定 5 级标题
6 : 设定 6 级标题
Up : 选中上方单元
K : 选中上方单元
Down : 选中下方单元
J : 选中下方单元
Shift-K : 扩大选中上方单元
Shift-J : 扩大选中下方单元
A : 在上方插入新单元
B : 在下方插入新单元
X : 剪切选中的单元
C : 复制选中的单元
Shift-V : 粘贴到上方单元
V : 粘贴到下方单元
Z : 恢复删除的最后一个单元
D,D : 删除选中的单元
Shift-M : 合并选中的单元
Ctrl-S : 文件存盘
S : 文件存盘
L : 转换行号
O : 转换输出
Shift-O : 转换输出滚动
Esc : 关闭页面
Q : 关闭页面
H : 显示快捷键帮助
I,I : 中断Notebook内核
0,0 : 重启Notebook内核
Shift : 忽略
Shift-Space : 向上滚动
Space : 向下滚动
- 编辑模式
Tab : 代码补全或缩进
Shift-Tab : 提示
Ctrl-] : 缩进
Ctrl-[ : 解除缩进
Ctrl-A : 全选
Ctrl-Z : 复原
Ctrl-Shift-Z : 再做
Ctrl-Y : 再做
Ctrl-Home : 跳到单元开头
Ctrl-Up : 跳到单元开头
Ctrl-End : 跳到单元末尾
Ctrl-Down : 跳到单元末尾
Ctrl-Left : 跳到左边一个字首
Ctrl-Right : 跳到右边一个字首
Ctrl-Backspace : 删除前面一个字
Ctrl-Delete : 删除后面一个字
Esc : 进入命令模式
Ctrl-M : 进入命令模式
Shift-Enter : 运行本单元,选中下一单元
Ctrl-Enter : 运行本单元
Alt-Enter : 运行本单元,在下面插入一单元
Ctrl-Shift— : 分割单元
Ctrl-Shift-Subtract : 分割单元
Ctrl-S : 文件存盘
Shift : 忽略
Up : 光标上移或转入上一单元
Down :光标下移或转入下一单元
- .ipynb转为其他格式slide/pdf/html
使用 Jupyterlab
jupyter notebook --generate -config #查看notebook配置文件
用topyra打开markdown文件,再转为其他格式
只需在命令窗口中运行如下命令:
注:需要定位到文件所在路径
转为网页格式html
# 不显示目录
jupyter nbconvert mythesis.ipynb
# 显示目录
notebook上download toc.html # 无效
不显示目录
jupyter nbconvert mythesis.ipynb
# 显示目录
notebook上download toc.html %无效
另一种方法:先markdown,后html转为pdf
notebook失败
- 第一种方法:先转为HTML,再浏览器转为pdf
第二种方法:先markdown,后pdf 效果完美
转为MarkDown(.md)
notebook download as (效果完美)
- 转为Slide
第一步:notebook->View->cell toolbar->slideshow
第二步:
jupyter-nbconvert —to slides mythesis.ipynb —reveal-prefix ‘https://cdn.bootcss.com/reveal.js/3.5.0‘ —output test
https://www.twblogs.net/a/5c19c09cbd9eee5e40bc0a57/zh-cn
另一种方法:RISE
https://zhuanlan.zhihu.com/p/47418033
https://dataxujing.github.io/RISE-making-slides/
https://blog.csdn.net/u011707148/article/details/72801656
pip install jupyter # or python -m pip install jupyter
pip install RISE # https://github.com/damianavila/RISE
jupyter-nbextension install rise --py --sys-prefix
jupyter-nbextension enable rise --py --sys-prefix
jupyter notebook # 换到切项目根目录下执行
注意:安装库出现的700错误时可换个安装方式:pip or conda,还可以选择cmd or anaconda prompt
- Notebook插件(目录等)
生成目录提供索引,方便阅读
效果图:
下载安装(使用cmd或者Anaconda Prompt)
conda install -c conda-forge jupyter_contrib_nbextensions
打开Notebook,找到Nbextensions,选择开启需要的插件
- Collapsible Headings (使得各级标题可缩进)
- Table of Contents (2)(添加目录)
参考来源: https://www.blog.pythonlibrary.org/2018/10/09/how-to-export-jupyter-notebooks-into-other-formats/ jupyterlab教程) https://blog.csdn.net/wmhshishen/article/details/80398370 Jupyter Notebook之提高可读性——插件安装及使用(包括插入目录,目录索引及缩进) https://zhuanlan.zhihu.com/p/107037018 更改jupyter notebook默认存储路径 - 知乎更改jupyter notebook默认存储路径 - 知乎
- 15个应该掌握的Jupyter Notebook 使用技巧
15个应该掌握的Jupyter Notebook 使用技巧https://m.toutiaocdn.com/i6874363326780932611/?app=news_article×tamp=1600565904&use_new_style=1&req_id=2020092009382401002102622308B99489&group_id=6874363326780932611&tt_from=android_share&utm_medium=toutiao_android&utm_campaign=client_share
Spyder教程
PyCharm教程
全文/批量替换
IDE 常用快捷键
- pycharm 快捷键
- 常用:
Alt + #[0-9] 打开相应的工具窗口
Alt + Shift + F 添加到最喜欢
Alt + Shift + I 根据配置检查当前文件
Ctrl + Alt + S 打开设置页
Ctrl + Alt + Y 同步
Ctrl + BackQuote(‘) 快速切换当前计划
Ctrl + Shift + A 查找编辑器里所有的动作
Ctrl + Shift + F12 最大化编辑开关
Ctrl + Tab 在窗口间进行切换
- 编辑
Alt + Enter 快速修正
Alt + Insert 自动生成代码
Ctrl + 鼠标 简介/进入代码定义
Ctrl + / 行注释/取消行注释
Ctrl + Alt + I 自动缩进
Ctrl + Alt + L 代码格式化
Ctrl + Alt + O 优化导入
Ctrl + Alt + Space 快速导入任意类
Ctrl + Alt + T 选中
Ctrl + Backspace 删除到字符开始
Ctrl + D 复制选定的区域或行
Ctrl + Delete 删除到字符结束
Ctrl + Enter 智能线切割
Ctrl + F1 显示错误描述或警告信息
Ctrl + F4 关闭运行的选项卡
Ctrl + Numpad+/- 展开/折叠代码块(当前位置的:函数,注释等)
Ctrl + O 重新方法
Ctrl + P 参数信息(在方法中调用参数)
Ctrl + Q 快速查看文档
Ctrl + Shift + / 块注释
Ctrl + Shift + ]/[ 选定代码块结束、开始
Ctrl + Shift + Enter 语句完成
Ctrl + Shift + J 添加智能线
Ctrl + shift + Numpad+/- 展开/折叠所有代码块
Ctrl + Shift + U 在选定的区域或代码块间切换
Ctrl + Shift + V 从最近的缓冲区粘贴
Ctrl + Shift + W 回到之前状态
Ctrl + Shift + Z —> Redo 重做
Ctrl + Space 基本的代码完成(类、方法、属性)
Ctrl + W 选中增加的代码块
Ctrl + Y 删除选定的行
Ctrl+C/Ctrl+Insert “复制当前行或选定的代码块到剪贴板”
Ctrl+V/Shift+Insert 从剪贴板粘贴
Ctrl+X/Shift+Delete 剪切当前行或选定的代码块到剪贴板
F1 外部文档
Shift + Enter 另起一行
Shift + F1 外部文档,进入web文档主页
Tab / Shift + Tab 缩进、不缩进当前行
- 查找
Ctrl + R 替换
Ctrl + Shift + F 或者连续2次敲击shift 全局查找{可以在整个项目中查找某个字符串什么的,如查找某个函数名字符串看之前是怎么使用这个函数的}
Ctrl + Shift + R 全局替换
F3 下一个
Shift + F3 前一个
- 导航
Alt + F1 查找当前文件或标识Alt + Home 显示导航条F11书签开关
Alt + Right/Left 跳转到下一个、前一个编辑的选项卡
Alt + Up/Down 跳转到上一个、下一个方法
Ctrl + #[0-9] 跳转到标识的书签
Ctrl + ]/[ 跳转到代码块结束、开始
Ctrl + Alt + B 跳转到实现
Ctrl + Alt + H 调用层次结构
Ctrl + E 当前文件弹出,打开最近使用的文件列表
Ctrl + F12 弹出文件结构
Ctrl + G 查看当前行号、字符号
Ctrl + H 类型层次结构
Ctrl + N 跳转到类
Ctrl + Shift + B 跳转到类型声明
Ctrl + Shift + F11 书签助记开关
Ctrl + Shift + F4 关闭主动运行的选项卡
Ctrl + Shift + H 方法层次结构
Ctrl + Shift + I 查看快速定义
Ctrl + Shift + N 跳转到符号
Ctrl + U 跳转到父方法、父类
Ctrl+Alt+Left/Right 后退、前进
Ctrl+B / Ctrl+Click 跳转到声明
Ctrl+Shift+Backspace 导航到最近编辑区域
Esc 从工具窗口回到编辑窗口
F12 回到先前的工具窗口
F2 / Shift + F2 下一条、前一条高亮的错误
F4 / Ctrl + Enter 编辑资源、查看资源
Shift + Esc 隐藏运行的、最近运行的窗口
Shift + F11 显示书签
- 控制
Alt + BackQuote(‘)VCS 快速弹出Alt + Shift + C 查看最近的变化
Ctrl + K 提交项目
Ctrl + T 更新项目
- 模板
Ctrl + Alt + J 当前行使用模版
Ctrl +J 插入模版
- 搜索相关
Alt + F7/Ctrl + F7 文件中查询用法Ctrl + Alt + F7 显示用法
Ctrl + Shift + F7 文件中用法高亮显示
- 调试
Alt + F8 验证表达式Alt + F9 运行游标
Ctrl + Alt + F8 快速验证表达式
Ctrl + F8 断点开关
Ctrl + Shift + F8 查看断点
F7 进入
F8 跳过
F9 恢复程序
Shift + F8 退出
- 运行
Alt + Shift + F10 运行模式配置Alt + Shift + F9 调试模式配置
Ctrl + Alt + R 运行manage.py任务
Ctrl + Shift + F10 运行编辑器配置
Shift + F10 运行
Shift + F9 调试
- 重构
Alt + Delete 安全删除Ctrl + Alt + C 提取常量
Ctrl + Alt + F 提取字段
Ctrl + Alt + M 提取方法
Ctrl + Alt + N 内联
Ctrl + Alt + P 提取参数
Ctrl + Alt + V 提取属性
Ctrl + F6 更改签名
F5 复制F6剪切
Shift + F6 重命名
快捷键 | 功能 | 快捷键 | 功能 |
---|---|---|---|
Ctrl+1 | 单行注释,单次注释,双次取消注释 | F5 | 运行程序 |
Ctrl+4/5 | 块注释,单次注释,双次取消注释 | Ctrl+Shift+V | 调出变量窗口 |
Ctrl+F5 | 调试 | Ctrl+up | 回到文档开头 |
Ctrl+F12 | 继续调试 | Ctrl+down | 回到文档末尾 |
Ctrl+Shift+F12 | 调试退出 | F6 | 最后重新运行脚本 |
Ctrl+F11 | 调试进入函数 | Alt +Down | 线向下移动 |
Ctrl+F10 | 调试跳出函数 | Alt +Up | 线向上移动 |
Ctrl +R | 运行单元 | Tab/Shift +Tab | 代码缩进/反缩进 |
Ctrl +I | 显示帮助 | F9 | 运行选中部分代码 |
环境配置
国内常用镜像源:
- 清华:https://pypi.tuna.tsinghua.edu.cn/simplehttps://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - 阿里云:http://mirrors.aliyun.com/pypi/simple/
- 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
- 华中理工大学:http://pypi.hustunique.com/
- 山东理工大学:http://pypi.sdutlinux.org/
- 豆瓣:http://pypi.douban.com/simple/
- 中科大:https://mirrors.ustc.edu.cn/anaconda/pkgs/free/ 推荐
a. https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
b. https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
c. https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/ - note:新版ubuntu要求使用https源,要注意
修改镜像源
# 查看已配置的镜像源
conda config --show
# 方法一:命令行修改镜像源
# 删除不需要的镜像源,比如清华源
conda config --remove channels url地址
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/tensorflow/linux/cpu/
# 添加需要的镜像源
conda config --add channels https://pypi.tuna.tsinghua.edu.cn/simple
# 设置搜索时显示镜像源地址
conda config --set show_channel_urls yes
# 还原默认镜像
conda config --remove-key channels
# 方法二:文件方式修改镜像源
conda info #关注URLs
# 打开".condarc"文件,删除"-default"
安装包时指定镜像源
pip install -i 国内镜像地址 包名
或 pip install 包名 -i 国内镜像地址
pip install -i https://mirrors.aliyun.com/pypi/simple/ numpy
# 生成列表文件(在当前用户根目录下)
pip freeze > requirements.txt
# 写入包信息
pip install -r requirements.txt
# 打开文件
requirements.txt
虚拟环境的使用
为什么用虚拟环境:虚拟环境包含python解释器及其安装的包,便于打包在其他设备上使用这个环境,如此项目移到其他设备也能如愿运行。
# 更新conda工具("-n"代替了"-name")
conda update -n base conda
# 查看所有的虚拟环境
conda info -e
conda env list
conda info --envs
#创建python3.6的xxx虚拟环境
set CONDA_FORCE_32BIT=1
conda create -n xxx python=3.6
# 激活名为xxx的虚拟环境
conda activate xxx
# 配置了环境变量的情况下可直接:activate xxx
# 关闭虚拟环境
conda deactivate # 环境变量下同理
# 开启自动激活状态
conda config --set auto_activate_base true # false表示关闭
#删除xxx环境
conda env remove -n xxx
pip / conda 工具的使用
conda、pip都是包管理工具,两者操作相似
# 查看已安装的包
conda list
# 查看指定xxx虚拟环境下已安装的包
conda list -n xxx
# 安装包
conda install 包名
conda install 包1 包2 包3
# 安装指定镜像源
## pip方法
pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install PyQt5-tools -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
## conda方法
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
conda config --remove-key channels (移除镜像源)
conda config --remove channels 指定的URL # 删除原来镜像
# 安装本地包
pip install ~/Downloads/a.whl
conda install --use-local ~/Downloads/a.tar.bz2
# 安装固定版本的包
conda install 包名 =x.xx
# 更新一个包
conda update 包名
# 更新全部包
conda upgrade --all
# 移除一个包
conda remove 包名
路径与文件目录
在python中,可以用正斜杠“/”和反斜杠“\”表示路径,只是反斜杠表示转义字符,所以反斜杠表示路径时要用“\”,例如:
- D:\test\test.txt
- D:/test/test.txt
注:python3要用print()打印
使用 os 模块,标准库
import os
获得当前工作目录
os.getcwd() # 或者 print(os.getcwd()) print(os.path.abspath(‘.’)) print(os.path.abspath(os.curdir))
获得当前工作目录的父目录
print(os.path.abspath(‘..’))
修改路径
os.chdir(‘C:\Windows\System32’)
- **绝对路径与相对路径**
> 指明文件所在路径的两种方式:
> **绝对路径**:从根文件夹开始,windows系统以盘符(C:、D:)作为根文件夹,OS X和Linux系统以正斜杠“/”作为根文件夹
> **相对路径**:文件相对于当前工作目录所在的位置,
![](https://cdn.nlark.com/yuque/0/2020/gif/2981571/1606719404886-722e98de-2556-4821-8ccc-fa59b1111cb1.gif#crop=0&crop=0&crop=1&crop=1&height=387&id=dYUpm&originHeight=387&originWidth=700&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=700)<br />绝对路径与相对路径之间的转换:
```python
# 可先定义一个路径path
os.path.abspath(path) # 将路径path转为绝对路径
os.path.isabs(path) # 判断路径path是否为绝对路径:ture false
os.path.relpath(path, start) # 将返回从 start 路径到 path 的相对路径的字符串。如果没有提供 start,就使用当前工作目录作为开始路径。
os.path.dirname(path) # 将返回一个字符串,它包含 path 参数中最后一个斜杠之前的所有内容;调用 os.path.basename(path) 将返回一个字符串,它包含 path 参数中最后一个斜杠之后的所有内容。
- 父目录、子目录的相互调用方法
实际就是调用其他文件的函数 见下方链接
代码规范(PEP8)
python如何安装PEP8编码规范-CSDN博客
program: D:\Anaconda3\Scripts\autopep8.exe
.py 文件开头声明
# encoding: utf-8
"""
@author: 你的名字
@contact: 你的邮箱
@software: ${PRODUCT_NAME}
@file: ${NAME}.py
@time: ${DATE} ${TIME}
"""
代码布局
- 分号:不在行尾出现,不用分号连接两条命令
反斜杠:续行符,在使用pycharm这样的IDE进行编辑时,在字符串符号内输入回车会自动补上反斜杠对其进行续行。
续行的首选方法是在括号、方括号和大括号内使用 Python 的隐含行续行。通过将表达式括在括号中,可以将长行分成多行。这些应该优先于使用反斜杠进行行延续。
行长度:每行不超过80字符
- 括号:若非连接行,不要在返回语句或条件语句中使用,但元组两边是允许的
- 缩进:用4个空格,!不能用tab,也不能tab和空格混用;行连接:垂直对齐换行或者使用4空格的悬挂式缩进(第一行不应该有参数)
- 空行:顶级定义之间空两行,方法定义之间空一行
- 空格:按照标准的排版规范来使用标点两边的空格,
```python
分号
print(‘Hello world!’);print(‘I am linpions.’); # 错误演示
行长度<=80
########################################################################## # 80个井字符
反斜杠
new_os = ‘huawei’ \ ‘HarmonyOS’ \ ‘ is coming’ print(new_os)
<a name="BjIZO"></a>
## 规范类
<a name="g1e8Z"></a>
## <br />
---
<a name="DvHEL"></a>
# 变量和字符串
```python
# 查看变量类型
type()
print(type())
# 字符串
“任何在这双引号之间的文字”
‘单引号其实和双引号完全一样’
‘‘‘三个引号被用于过于长段的文字或者是说明,只是三引号不完你就可以随意换行写下文字’’’
# 字符串的基本用法
## 1.加法
a = 'plays'
b = 'guiter'
c = 'Robert Johnson'
abc = a + b + c
print(abc)
Robert Johnson plays guiter
# 注意:不同的数据类型不能够合并,但可转换
a = 1
b = '1'
c = int(b)
print(a + c)
## 2.减法
a = 'words'*3
print(a)
wordswordswords
- 字符串的分片与索引
name = 'My name is Mike'
print(name[0])
print(name[-4])
print(name[11:14])
print(name[5:]) # 含5
print(name[:5]) # 不含5
# 应用
num = '1386-666-0006'
hid_num = num.replace(num[:9],'*'*9)
print(hid_num)
*********0006
# 另一个应用-电话号码联想功能
search = '168'
num_a = '1386-168-0006'
num_b = '1681-222-0006'
print(search + ' is at ' + str(num_a.find(search)) + ' to ' +str(num_a.find(search) + len(search) + ' of num_a')
168 is at 5 to 8 of num_a
- 字符串格式化符
基本的魔法函数
内建(自带)函数
各个函数官网介绍:https://docs.python.org/3/library/functions.html
1.开始创建函数
# 一个把摄氏度转化为华氏度的例子
def fahrenheit_converter(C):
fahrenheit = C * 9/5 + 32
return str(fahrenheit) + '˚F'
# 另一种写法
def fahrenheit_converter(C):
fahrenheit = C * 9/5 + 32
print(str(fahrenheit) + '˚F')
读取 EXCEL文件,并写入数据库
- 读取excel
- 写入数据库 ```python import pymysql import pandas as pd from sqlalchemy import create_engine
file = r’./my.xlsx’ df = pd.read_excel(file)
engine = create_engine(“mysql+pymysql://root:password@localhost:3306/trust”,encoding=’utf-8’)
mysql 是数据库; pymysql是你用的连接数据库的库; root对应数据库用户名; root冒号后面写数据库的密码; @符合后面写数据库地址,本地是localhost,3306是端口,trust是数据库名。
df.to_sql(‘testexcel’,con=engine,if_exists=’replace’,index=False)
使用pandas
- 将第二行作为标题行
```python
pd.read_excel('filename.xlsx', header = 1)
df=pd.read_excel(r'TT.xlsx',skiprows=1)
获取列名
1.[column for column in df]
2.df.columns.values 返回 array
3.list(df)
4.df.columns 返回Index,可以通过 tolist(), 或者 list(array) 转换为list
删除列 ```python drop(labels, axis=0, level=None, inplace=False, errors=’raise’)
labels 接受string或array。代表删除的行或列的标签。无默认
axis 接受0或1,代表操作的轴向。默认为0,默认按行删除
levels 接受int或者索引名。代表标签所在级别。默认为None
inplace 接受boolean。代表操作是否对原数据生效,默认为False。
- 指定sheet
```python
# 默认读取第一个sheet
# 指定sheet
pd.read_excel('filename.xlsx', sheet_name = sheetNameheader = 1)
合并多个表df
DataFrame.concat:沿着一条轴,将多个对象堆叠到一起
concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False, copy=True):
# pd.concat()只是单纯的把两个表拼接在一起,参数axis是关键,它用于指定合并的轴是行还是列,axis默认是0。
# objs:需要连接的对象集合,一般是列表或字典;
# objs:需要连接的对象集合,一般是列表或字典;
# ignore_index=True:重建索引
删除空值/NAT/NAN
# 超过空值的阈值的行列删除
df1 = df.dropna(thresh=2)
改列的数据类型
https://blog.csdn.net/Caiqiudan/article/details/108001696
- 写入excel时去索引列
index = False
- df切片取列
https://zhuanlan.zhihu.com/p/48882741
- 按日期筛选数据
https://www.cnblogs.com/lemonbit/p/6896499.html
pypy 编译器使 python代码运行更快
https://mp.weixin.qq.com/s/GgZPRUljXP8_o3VM6pYgkw PyPy为什么能让Python比C还快?一文了解内在机制
pypy 特性:
- 即时编译(Just-in-time)JIT编译
- 提前编译
- pypy 不兼容python生态系统,只宣称兼容python2.7、3.6、3.7
类 Class 的介绍
[
](https://blog.csdn.net/DeepOscar/article/details/80947155)
对象=属性+方法
class Turtle: # 类名首字母大写
"""类的一个简单例子"""
# 属性
color = 'green'
weight = 10
legs = 4
# 方法
def climb(self):
print('我正在很努力的向前爬。。。')
def run(self):
print('我正在飞快的向前跑。。。')
# 类的实例化
tt = Turtle()
tt.climb()
OO = Object Oriented 面向对象
OOA:面向对象分析
OOP:面向对象编程
OOD:面向对象设计
OO的特征:封装、继承、多态
- 封装 ```python list1 = [2,1,7,5,3] list1.sort() # 排序 list1.append(4)
- 继承:子类自动共享父类之间数据和方法的机制
```python
class Mylist(list):
pass
list2 = Mylist()
list2.append(5)
list2.append(3)
list2.append(7)
list2.sort()
- 多态
```python
class A:
def fun(self):
print("我是小A。。。")
class B: def fun(self): print(“我是小B。。。”)
a = A() b = B() a.fun() # 输出:我是小A。。。 b.fun() # 输出:我是小B。。。
**self是什么?**
```python
class Ball:
def setName(self, name):
self.name = name
def kick(self):
print('我叫%s,该死的,谁踢我...' % self.name)
a = Ball()
a.setName('球A')
b = Ball()
b.setName('球B')
c = Ball()
c.setName('土豆')
a.kick() # 输出:我叫球A,该死的,谁踢我...
c.kick() # 输出:我叫土豆,该死的,谁踢我...
—init—(self) 魔法方法
class Ball:
def __init__(self, name):
self.name = name
def kick(self):
print('我叫%s,该死的,谁踢我...' % self.name)
b = Ball('土豆')
b.kick() # 输出:我叫土豆,该死的,谁踢我...
c = Ball() # 返回错误,因为缺失参数name
公有和私有
class Person:
name = '小甲鱼'
p = Person()
p.name # 输出:'小甲鱼'
class Person:
__name = '小甲鱼'
p = Person()
p.name # 输出:错误
p.__name # 输出:错误
class Person:
__name = '小甲鱼'
def getName(self):
return self.__name
p = Person()
p.__name # 输出:错误
p.getName() # 输出:'小甲鱼'
p._Person__name # 输出:小甲鱼
代替print调试代码:pdb库
https://zhuanlan.zhihu.com/p/37294138 10分钟教程掌握Python调试器pdb
参考来源:
http://c.biancheng.net/view/5693.htmlPython绝对路径和相对路径详解
https://zhuanlan.zhihu.com/p/82029511
https://www.jb51.net/article/156383.htm Python父目录、子目录的相互调用方法
https://zhuanlan.zhihu.com/p/95100538 conda国内镜像修改(最新版)
https://www.jianshu.com/p/9c6b7fc4f1d9 Anaconda修改国内镜像源(Windows操作系统)
https://zhuanlan.zhihu.com/p/117224149 添加jupyterlab快捷方式和改变开始目录
https://blog.csdn.net/weixin_45523154/article/details/102671925 初学Python常见异常错误,总有一处你会遇到!