零基础小白也想用6小时学会Python▶清华技能坊——20200820
链接:https://www.bilibili.com/video/BV1GA411n7yx
三讲部分
实例化
实例(Instance)是根据类创建出来的一个个具体的“对象"
调用类方法、访问类属性
每个对象都拥有相同的方法,但各自的属性可能不同
构造方法
__init__
方法:在创建实例的时候,就给属性赋值
继承
继承:从已有的类派生出新的类(子类)
子类继承父类的数据属性和行为
可以调用父类的函数
可以扩展出新的方法
或者覆盖父类的方法
多态
多态:允许对不同的对象进行相同的操作。
面向对象的三大特性
封装:隐藏不必要的内部实现细节,对外公开接口。
继承:从已有的类派生出新的类(子类),子类继承父类的数据属性和行为,并能根据自己的需求扩展出新的方法或者覆盖父类的方法。
多态:允许对不同的对象进行相同的操作。
模块
内建模块
模块/库/包
开箱即用,“batteries included”
- 模块(module):一个.py文件就称之为一个模块
- 包(package):有层次的文件目录结构,可能有n个模块或n个子包
- 库(library):能完成一定功能、供用户使用的代码集合(抽象概念),在python中是包和模块的形式。
优点
- 提高了代码的可维护性
- 不必从零开始
时间与日期
time模块
datetime模块:重新封装了time模块,提供更多接口
中文日期:locale模块
根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统所定义的一个软件运行时的语言环境。
随机数:random模块
可以控制随机数种子
更复杂的随机数:numpy模块
PyQt5*
更高级的界面:pyqt5模块
三种常见的import 方法
1 |
|
第三方库
操作Word:python-docx模块
操作Excel:xlwings模块
操作Pdf:PyPDF2模块
科学计算:numpy模块
数据分析:pandas模块
模糊字符串匹配:fuzzywuzzy
中文分词工具:jieba
开源计算机视觉库:OpenCV
深度学习框架:pytorch, tensorflow,keras…
图像操作:pillow模块
玩转文件
路径处理
工作目录
当前工作目录(cwd,current working directory):所有没有从根目录开始的文件名或路径,都假定在当前工作目录下。
相对路径、绝对路径
绝对路径:总是从根目录开始。Window系统中以盘符(C:、E:)作为根目录,而OS X或者Linux系统中以/作为根目录。
相对路径指的是文件相对于当前工作目录所在的位置。
斜杠
- Windows系统:右斜杠\(反斜杠),或者转义斜杠
\\
- OS X或者Linux系统:左斜杠/(除号)
- Python中不做区分
- 跨平台的时候需要考虑兼容性
os模块
内置模块os提供了操作系统服务,其子模块os.path可以用于路径处理
路径处理常用操作:查看、创建、删除、改名、复制、移动、文件名的拆分与组合……根据需要,现用现查
举例:若文件夹不存在则创建
import os folder_name ="txt_samples” existance = os.path.exists(folder_name)#判断文件/文件夹是否存在 print(existance) if not existance:#若文件夹不存在则创建 os.mkdir(folder_name) file_name = os.path.join (folder_name, "summer.txt")#合并文件名
具体文件处理举例
办公文档
Word
docx文档的格式组成
- docx文件本质上是一个ZIP文件
- 主要内容保存为XML格式
- document.xml文件包含了文档的主要文本内容
段落对象:paragraph
➢缩进、间距、对齐……
最基本的单位:run
➢字体、大小、颜色…
Excel
xlwings,让excel飞起来
安装:pip install xlwings
导入:import xlwings as xw
使用步骤:打开应用-操作-退出应用
pandas
- 不能在原excel中修改,只能读取、写入新表格
- 读写速度快:不需要打开Excel应用程序
PPT
python-pptx*
安装:pip install python-pptx
导入:import pptx
PyPDF2
三剑客:PdfFileMerger;PdfFileReader,PdfFileWriter
数据文件
CSV
逗号分隔值文件(Comma-Separated Values,CSV)
- 以纯文本形式存储表格数据(数字和文本)
- CSV文件由任意数目的记录组成,每条记录之间以某种换行符分
- 每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符
JSON
JSON(JavaScript Object Notation,JS对象简谱)是一种轻量级的纯文本格式,用于存储和表示数据
- 完全独立于编程语言
- 易于人类阅读和机器解析
- 网络传输效率高
- 内置模块json,读&写
数据处理入门
数据处理安装必备库
- 科学计算:NumPy
- 数据处理:pandas
- 数据可视化:matplotlib
NumPy
Numerical Python,科学计算的基础包
- 快速、高效的高维数组对象ndarray
- 从序列创建数组
矢量运算
- 相同尺寸:逐元素运算
- 不同尺寸:标量x向量:向量的数乘
数组广播:广播维必须为1,广播维之外的维度相同
可以有效的进行运算
数据处理:pandas
Panel data或Python data analysis,基于NumPy,是数据分析的基础包
- 源自金融数据应用,支持时间序列分析&非时间序列分析
- 快速、便捷地处理结构化数据(索引、数据对齐)
- 灵活处理缺失数据
Series:序列型数据结构(一维);索引+值
DataFrame:表格型数据结构(二维或高维);行/列+值
构造DataFrame的办法有很多
常用:直接传入一个由等长列表或NumPy数组组成的字典
一图抵千言,A picture is worth a thousand words.
可视化的作用:真实、准确地展示数据;揭示数据的关系、规律
数据可视化常用工具
Python:matplotlib,Seaborn,plotline
R:ggplot2
软件或在线工具:Excel,Power BI,Echart,Tableau
Matplotlib绘图
基本操作:从序列画图
数据可视化应用举例
分类效果;误差分布;仿真与实测比较;t-sne高维特征
时间序列;聚类;三维数据;强调排序和差距
日期活跃情况;层次聚类;相关度;变化趋势
网络爬虫入门
什么是网络爬虫?
按照一定的规则,自动从网络中提取信息的程序。
网络爬虫有什么用?
- 获取信息
- 自动操作、省时省力
为什么要用Python写网络爬虫?
- 字符串处理方便
- 第三方库完善
网页的组成
骨架:HTML
- Hyper Text Markup Language,超文本标记语言
- 通过不同类型的标签,不同的元素相互嵌套和组合,形成网页的框架
肌肉:Javascript
通过JS脚本定义网页的行为
例:交互、动画、播放音乐或视频.
正则表达式
内建模块:re
正则表达式(regular expression):一种字符串匹配的模式(pattern)
用途:在一个字符串中搜索、替换、提取符合某个条件的子串
爬虫的法律问题
爬虫玩得好,监狱进的早;数据玩的溜,牢饭吃个够
侵犯公民个人信息罪:采集公民的姓名、身份证件号码、通信通讯联系方式、住址、账号密码、财产状况、行踪轨迹等个人信息,并将之用于非法途径的
- 现金贷风控、不合规的P2P、赌博类游戏、黑五类产品…
- 友情提示:爬虫可能违法了
- 新三板挂牌公司涉窃取30亿条个人信息,非法牟利超千万元
非法获取计算机信息系统数据罪:爬虫程序规避网站经营者设置的反爬虫措施或者破解服务器防抓取措施,或强行访问正常情况不能到达的页面;非法获取相关信息
破坏计算机信息系统罪:爬虫程序干扰被访问的网站正常运营(近乎DDOS的请求频率,造成服务器瘫痪)
法律依据:中华人民共和国网络安全法
灰色产业
- 12306刷票软件
- 社交平台僵尸粉、直播平台刷量、电商刷单、偷取社区内容
爬虫技术本身中立,法律不禁止爬虫
- 搜索引擎、聚合导航、数据分析、人工智能等业务,都需要基于爬虫技术
- 不要爬取个人信息,不要利用爬虫非法获利,不要爬取网站的付费内容
Ajax抓取
Ajax(Asynchronous JavaScript and XML,异步JavaScript 和XML)
- 采用Ajax、前端模块化工具来构建
- 其API接口通常采用JSON格式
爬取方法
- 分析其后台Ajax接口
- 使用Selenium、Splash 等库来实现模拟JavaScript渲染
查看网络传输数据流的方法
- 右键→查看元素→点击网络
- 快捷键:F12
- 菜单→Web开发者-→网络
进阶方向*
提升爬虫效率
- 多线程、多进程
- 分布式、集群化
- 大数据存储
提升反爬技术
- 浏览器控制:Selenium、Splash
- APP/JavaScript逆向
- 代理池
- 验证码破解