《Python 数据科学实践指南》读书笔记
文章提纲
- 全书总评
- C01.Python 介绍
- Python 版本
- Python 解释器
- Python 之禅
- C02.Python 基础知识
- 基础知识
- 流程控制:
- 函数及异常
- 函数:
- 异常
- 字符串
- 获取键盘输入:
- 字符串处理
- 字符串操作
- 正则表达式
- C05. 容器(Container)与集合(Collections)
- 元组(Tuple)
- 列表(List)
- 字典(Dictionary)
- 集合(Collections)
- C06.Python 标准库
- 数学模块:math
- 时间模块:time,datetime,calendar
- 随机数模块:random
- 取样:
- 文件处理:glob 和 fileinput
- 压缩:bz2 和 gzip
- 漂亮打印:pprint 模块
- 跟踪异常日志:traceback 模块
- 网络数据传输:JSON
- C07. 用 Python 读写外部数据
- CSV,csv 模块
- Excel,pandas 模块(参考 C10)
- MySQL,MySQLdb 模块,torndb 模块
- PostgreSQL,psycopg2 模块
- MongoDB,pymongo 模块
- ElasticSearch,elasticsearch 模块
- C08. 用 Python 解决统计问题
- 描述性统计
- 数据可视化
- C09. 爬虫入门
- request 模块
- Xpath 模块
- C10. 数据科学的第三方库
- Numpy 模块
- 从这里开始,先弃了,这本书适合了解了以后,再来根据作者的实践角度查遗补缺。
- Pandas 模块
- Scikit-Learn 模块
- C11. 图数据分析
- 图论基础
- NetworkX 模块
- 利用 NetworkX 进行图分析
- C12. 大数据工具
- Hadoop
- Spark
全书总评
- 书本印刷质量:4 星。印刷清楚,排版合适,错误很少。
- 著作编写质量:3 星。Python 入门和与数据处理相关的各种模块的入门,以及数据处理的入门。作者是原著,写的确实是自己的东西,不是东抄西抄。只是实践部分的内容实在太浅薄了些。
- 代码质量:4星。Python入门这本书的IT功底不够,中间可能会碰到一些坑,最好有点Python基础以后,用这本书查遗补缺。下载地址
- 阅读笔记:记录需要记住的重点,方便快速回忆。
C01.Python 介绍
Python 版本
- Python 2.x:2001 年发布,有许多资料和库基于这个版本编写;
- Python 3.x:2009 年发布,与旧版本不兼容;
Python 解释器
- Python是开源的,因此它的解释器有许多种实现,主流的是官方的解释器;
Python 之禅
- import this
C02.Python 基础知识
基础知识
- 基础数据类型:在 Python 中,所有的元素都是“对象”。
- None:表示什么都没有的类型;
- int:表示整数的类型;
- float:表示浮点数的类型;
- bool:表示布尔数值的类型;
- str:表示字符串的类型;
- 变量与赋值:Python 的书写规范(PEP8)
- 序列解包
- 操作符与表达式:
- 算术操作符:
- 位操作符:
- 比较操作符:
- 逻辑操作符:and,or,not
- 文本编辑器:
- 文件编码:UTF-8
流程控制:
- 条件判断(if…elif…else…):
- 循环:
- while:
- for…in…:
- 缩进,空白与注释
- 缩进:分割代码块;
- 空白:没有任何意义,只为美观;
- 注释:
- 单行注释:“#”
- 多行注释:”"”…”””
函数及异常
函数:
- 函数定义:def func_name()
- 参数定义:
- 实参:
- 形参:
- 位置参数(参数绑定):根据定义和调用函数时参数的位置进行参数的赋值;
- 关键字参数:非关键字参数不能定义在关键字参数后面。
- 可变数量的参数:def func(*args, **kwargs)
- *args:位置形参,表示任意数量的位置参数都会合并成一个元组,绑定到 args 上;
- **kwargs:关键字形参,表示任意数量的关键字参数都会合并成一个元组,绑定以 kwargs 上;
- 递归:
- 闭包(closure):又称词法闭包(Lexical Closure)或函数闭包(Function Closure),是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创建它的环境也不例外。
异常
- 异常:(try…except…finally…)
字符串
- 运算符:
- “+”:字符串拼接;
- “*”:字符串复制多份,然后拼接;
- 切片 [start,stop,step]:
- len():字符串长度;
获取键盘输入:
- input(str):
字符串处理
- 字符集
- 字符(Character):是各种文字和符号的总称;
- 字符集(Character Set):是多个字符的集合,字符集的各类很多,每个字符集包含的字符个数也不同。
- 字符编码(Character Encoding):也称字集码,是把字符集中的字符编码按指定集合中的某一个对象,以便在计算机中存储和通过通信网络传递文本。
- ASCII 字符集和编码
- Unicode 字符集和 UTF-8 编码
字符串操作
- 基本操作:
- strip():移除字符串两侧的所有空白符;
- capitalize():使字符串的首字母大写;
- title():使字符串中每个单词的首字母大写;
- lower():使字符串的所有字母小写;
- upper():使字符串的所有字母大写;
- isalnum():字符串中包含字母或者数字时为 True;
- isdigit():字符串中只包含数字时为 True;
- 分割:
- split(delimiter):将字符串按指定分隔符分割;
- rsplit(delimiter):将字符串从右边开始按指定分隔符分割;
- 格式化:
- %:print(‘%s’ %name)
- format():print(‘{one} and {two}’.format(one=’1’,two=’2’))
正则表达式
- 转义符:P55
- re 模块:
- re.compile():匹配模式;
- match():匹配字符串;
- re.compile():匹配模式;
C05. 容器(Container)与集合(Collections)
元组(Tuple)
- 元组:与字符串一样,是有序的序列,不可以改变内容
- 基本操作:连接、切片都与字符串保持一致;
- 序列解包:也称多重赋值;
- 支持迭代器协议,支持 for 循环
列表(List)
- 列表:也是序列类型的对象,但是可以改变列表中的内容;
- 基本操作:连接、切片都与字符串保持一致;
- 更改操作:
- pop():删除列表中的数据,并将删除的数据返回;
- insert():插入数据;
- append():追加数据;
- extend():拼接列表;
- 引用传递:所有的赋值都只是引用的传递,并没有创建新的数据;
- list[:]:浅拷贝,只拷贝第一层引用的数据;
- deepcopy():深拷贝,拷贝所有引用的数据;
- 列表解析式:构造列表的方式,将一个函数作用到整个列表中每个元素的方式;[x for x in range(1,3)]
字典(Dictionary)
- 字典在其他语言中被称为散列表,由 key:value 对通过{}组成的无序结构。
- 常用的函数:
- get(key):通过 key 取得对应的 value;还可以通过链式调用取值;
- dict(list):构建新的字典;
- dict.keys():获取字典的 keys 迭代;
- dict.values():获取字典的 values 迭代;
- dict.items():获取字典的 key:value 对的迭代;
- dict.pop(key):取出指定关键字的值;
- dict.update(key):更新字典中对应的 key 中的 value;
集合(Collections)
- namedtuple():具名元组。
- Counter():累加器,可以用来做经典的 word count;
- defaultdict():为字典设定一个默认值;
- OrderedDict():使字典有序;
C06.Python 标准库
数学模块:math
- 常见常量:默认精度为 15 位,最多可以取得 48 位
- math.pi
- math.e
- 无穷大与无效数字:
- math.inf:表示“无穷大”,是 infinite 的缩写。math.inf*math.inf==math.inf
- math.nan:表示“无效数字”,是 Not a number 的缩写。math.inf/math.inf==math.nan
- int 的范围:在 3.5 中 int 长度理论上是无限的
- float 的范围:1e-309~1e+309
- 浮点数转换为整数:
- math.trunc(f):截掉浮点型小数点后面的数字;
- math.floor(f):取最接近浮点型数字的整数;
- math.ceil(f):取比当前浮点型数字大的整数;
- 绝对值和符号:
- math.fabs(f):浮点数的绝对值;
- math.copysign(x,y):符号函数,将 y 的符号传递给 x;
- 常用计算:
- math.fsum(values):解决 sum(values) 不能精确计算的问题;
- math.factorial(x):阶乘计算函数。
- 指数和对数:
- math.pow(x,y):x 的 y 次幂;
- math.log(x):x 以 e 为底的对数;
- math.log10(x):x 以 10 为底的对数;
时间模块:time,datetime,calendar
- time 模块:基础的时间处理模块;
- time.time():表示为数字时间戳,即从格林威治时间:1970-1-1,0:0:0(北京时间:1970-1-1,8:0:0)以来所经历过的秒数;
- time.ctime(x):没有 x 则返回当前时间的字符串版本,有 x 则返回从时间戳开始经过了 x 秒后的时间的字符串。
- struct_time:具名元组,可以分别获得年 (tm_year)、月 (tm_mon)、当月第几日 (tm_mday)、时 (tm_hour)、分 (tm_min)、秒 (tm_sec),星期几 (tm_way,星期一是 0),当年第几天 (tm_yday),是否夏令时 (tm_isdst,没有为 0);
- time.gmtime():格林威治下的 struct_time;
- time.localtime():当前电脑所在时区的 struct_time;
- time.mktime(struct_time):还原成数字时间戳的方式;
- time.strptime(string,format):将字符串格式的时间按照格式转换成 struct_time 格式;
- time.strftime(format,struct_time):将 struct_time 格式的时间元组转换成字符串格式;
- datetime 模块:针对年月日和时分秒分别进行处理;
- calendar 模块:处理万年历;
随机数模块:random
- 随机数生成器:
- random.random():生成均匀分布的浮点随机数,在半开半闭区间 [0.0, 1.0);
- random.seed():设置随机数种子;
- random.randint(a,b):返回整型随机数,在闭区间 [a,b];
- random.randrange():返回整型随机数,在半开半闭区间 [a,b);
取样:
- random.shuffle(list):按随机性质将列表重新排列顺序;
- random.choice(list):按随机性质从列表中抽取数据;
- random.sample(list,k):按随机性质从列表中抽取指定长度的数据;
文件处理:glob 和 fileinput
- open(filename,mode):基于 mode 模式打开 filename 文件;还支持上下文管理器 with 模式;
- glob 模块:目录处理;
- fileinput 模块:批量文件读入;是一个帮助类;
压缩:bz2 和 gzip
- 不建议使用的压缩格式:
- rar:专门服务于 Windows 下,Python 需要第三方库才能打开;
- tar:只用于打包文件,不对文件进行压缩;
- zip:既可以压缩文件,还可以打包文件,因为自带打包功能,不适合用于对文件单独压缩;
- 建议使用的压缩格式
- bz2 模块:对单个文件可写可读,非常方便;
- gzip 模块:对单个文件可写可读,非常方便;
漂亮打印:pprint 模块
跟踪异常日志:traceback 模块
网络数据传输:JSON
- json.loads():将 JSON 转换成字典;
- json.dumps():将字典转换成 JSON;
C07. 用 Python 读写外部数据
CSV,csv 模块
- csv.reader():读取文件;
- csv.writer():写入文件;
- csv.register_dialect():delimiter= 注册分割符;
- csv.DictReader():按照字典结构读取数据;*
Excel,pandas 模块(参考 C10)
- pandas.read_excel():读取文件;
- pandas.to_excel():写入文件;
- pandas.set_option():设置属性值;
- pandas.DataFrame():表格结构;
MySQL,MySQLdb 模块,torndb 模块
- db=torndb.Connection(host,database,user,password):建立数据库链接;
- db.insert(SQL),db.insertmany(SQL):向数据库中插入单行数据,插入多行数据;
- db.query(SQL):从数据库读取数据;
PostgreSQL,psycopg2 模块
MongoDB,pymongo 模块
ElasticSearch,elasticsearch 模块
C08. 用 Python 解决统计问题
- pandas 模块许多函数发生了改变;在 Python 3.7 下 read_excel() 运行有问题;统计都没办法测试了。
描述性统计
- 均值:
- 中位数:
- 方差:
- 标准差:
数据可视化
- 基本函数:
- plot()
- show()
- figure()
- title()
- xlabel()
- ylabel()
- legend()
- 图形:
- 折线图:
- 散点图:
- 柱状图:bar()
- 饼图:pie()
C09. 爬虫入门
request 模块
- HTTP 协议:
- 获取 HTML 内容:
Xpath 模块
- 解析 HTML 内容:
- 这个模块已经没有匹配 Python3.7 的版本了,放弃这个学习。
C10. 数据科学的第三方库
Numpy 模块
- ndarray:
- 创建:
- arange()
- linspace():度量等宽
- random.random():随机数
- 属性:
- ndim:数组的维度;
- shape:数组的形状;
- dtype.name:数组中数据的类型;
- itemsize:数组类型占用的内存空间大小;
- size:数组中元素个数;
- 创建特定数组:
- zeros():全零矩阵;
- ones():全 1 矩阵;
- empty():随机的小值组成的矩阵;
- 创建:
- 基本运算:数组运算是基于元素计算的
- 矩阵乘法:dot()
- 迭代:与列表类似,直接迭代按行取数,flat() 可以把数组摊平为一维数组
- 变形:resize() 原地修改数组;reshape() 输出一个变形后的数组,原数组不变;
- 堆叠:hstack() 行数相同,水平堆叠;vstack() 列数相同,垂直堆叠;
- 高级运算
- transpose():转置;
- linalg.inv():取逆;
- eye():单位阵;
- trace():取迹;
- linalg.solve():解线性方程;
- linalg.eig():解特征方程;
从这里开始,先弃了,这本书适合了解了以后,再来根据作者的实践角度查遗补缺。
Pandas 模块
Scikit-Learn 模块
C11. 图数据分析
图论基础
NetworkX 模块
利用 NetworkX 进行图分析
C12. 大数据工具
Hadoop
Spark
转载于:https://www.cnblogs.com/zhuyx/p/10557911.html
《Python 数据科学实践指南》读书笔记相关推荐
- 读书笔记 | 墨菲定律
1. 有些事,你现在不做,永远也不会去做. 2. 能轻易实现的梦想都不叫梦想. 3.所有的事都会比你预计的时间长.(做事要有耐心,要经得起前期的枯燥.) 4. 当我们的才华还撑不起梦想时,更要耐下心来 ...
- 读书笔记 | 墨菲定律(一)
1. 有些事,你现在不做,永远也不会去做. 2. 能轻易实现的梦想都不叫梦想. 3.所有的事都会比你预计的时间长.(做事要有耐心,要经得起前期的枯燥.) 4. 当我们的才华还撑不起梦想时,更要耐下心来 ...
- 洛克菲勒的38封信pdf下载_《洛克菲勒写给孩子的38封信》读书笔记
<洛克菲勒写给孩子的38封信>读书笔记 洛克菲勒写给孩子的38封信 第1封信:起点不决定终点 人人生而平等,但这种平等是权利与法律意义上的平等,与经济和文化优势无关 第2封信:运气靠策划 ...
- 股神大家了解多少?深度剖析股神巴菲特
股神巴菲特是金融界里的传奇,大家是否都对股神巴菲特感兴趣呢?大家对股神了解多少?小编最近在QR社区发现了<阿尔法狗与巴菲特>,里面记载了许多股神巴菲特的人生经历,今天小编简单说一说关于股神 ...
- 2014巴菲特股东大会及巴菲特创业分享
沃伦·巴菲特,这位传奇人物.在美国,巴菲特被称为"先知".在中国,他更多的被喻为"股神",巴菲特在11岁时第一次购买股票以来,白手起家缔造了一个千亿规模的 ...
- 《成为沃伦·巴菲特》笔记与感想
本文首发于微信公众帐号: 一界码农(The_hard_the_luckier) 无需授权即可转载: 甚至无需保留以上版权声明-- 沃伦·巴菲特传记的纪录片 http://www.bilibili.co ...
- 读书笔记002:托尼.巴赞之快速阅读
读书笔记002:托尼.巴赞之快速阅读 托尼.巴赞是放射性思维与思维导图的提倡者.读完他的<快速阅读>之后,我们就可以可以快速提高阅读速度,保持并改善理解嗯嗯管理,通过增进了解眼睛和大脑功能 ...
- 读书笔记001:托尼.巴赞之开动大脑
读书笔记001:托尼.巴赞之开动大脑 托尼.巴赞是放射性思维与思维导图的提倡者.读完他的<开动大脑>之后,我们就可以对我们的大脑有更多的了解:大脑可以进行比我们预期多得多的工作:我们可以最 ...
- 读书笔记003:托尼.巴赞之思维导图
读书笔记003:托尼.巴赞之思维导图 托尼.巴赞的<思维导图>一书,详细的介绍了思维发展的新概念--放射性思维:如何利用思维导图实施你的放射性思维,实现你的创造性思维,从而给出一种深刻的智 ...
- 产品读书《滚雪球:巴菲特和他的财富人生》
作者简介 艾丽斯.施罗德,曾经担任世界知名投行摩根士丹利的董事总经理,因为撰写研究报告与巴菲特相识.业务上的往来使得施罗德有更多的机会与巴菲特亲密接触,她不仅是巴菲特别的忘年交,她也是第一个向巴菲特建 ...
最新文章
- Java调用PHP,跑PHP代码
- php基础教程 第七步数组补充及循环基础
- java点击按钮在控制台输出_java 怎么获取控制台的数据并且输出到GUI上
- fmin在Matlab中,MATLAB-fminsearch函数的使用
- oracle子接点与父节点上下级关系数据库查询语句,及联查询,
- securecrt遇到一个致命的错误且必须关闭_高性能服务器之路 | 浅谈 Valgrind 内存错误检查神器 Memcheck...
- 《Dreamweaver CS6完美网页制作——基础、实例与技巧从入门到精通》——1.2 网页的基本构成元素...
- Linux打印显示时间
- Redis 菜鸟教程学习笔记- Redis 数据结构
- turtle库 科赫雪花(bug)的绘制
- [任天堂社长访谈之:Nintendo 3DS内置软件
- 腾讯觅影正式对外开放,可用AI进行医学图像分析和辅助诊疗
- Strus2 Unti1
- (附源码)springboot电影院售票与管理系统 毕业设计 011449
- 关于使用shopify 和theme 模版使用问题。
- android mml是什么软件,MML 文件扩展名: 它是什么以及如何打开它?
- arcgis数据量大显示慢_百万量级矢量数据加载对比实验,Arcgis VS LSV专业版
- 小米5-root-记录
- 计算机软件的知识产权属于什么权,计算机软件是否可以申请专利,属于哪种专利申请类型?...
- OpenCL: 从零开始学习OpenCL开发