• 《Python 数据科学实践指南》读书笔记


    全书总评

    • 书本印刷质量: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():匹配字符串;

    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

  • 相关阅读:
    排列组合例题分析
    短信微服务+springboot+redis整合,动态获取短信验证码
    mac版idea 2018.3.5版 永久激活教程
    windows版idea 2018.3.5版 永久激活教程
    深入理解 Java 垃圾回收机制
    如何写代码 —— 编程内功心法
    并发与并行的区别
    Lua语法要点
    android 手机上运行图像算法
    OPENCL 错误码
  • 原文地址:https://www.cnblogs.com/zhuyx/p/10557911.html
Copyright © 2020-2023  润新知