[Code] 大蛇之数据工程

做为“所谓码农”的首篇,本章内容理应涵盖基本编程技法。html

Python这个东西、简洁,做为载体,是个不错的选择呦。python

连接资源:面试

教学要求:正则表达式

面试级别编程

 

 

 

基础变量


数字计算

Ref: [Python] 01 - Number and Matrix json

一些常见的不熟悉的地方,详见连接。安全

1、表达

不一样进制:0b123 0o123 0x123,对应的 ”char查看函数"ord('a'),chr(115) --> hex(id(iList))  # 只能对数字,不能对变量,例如错误的示范:hex('a')服务器

大数:幂(**), e等网络

 

2、精度问题

# 专业的十进制
import
decimal
# 专业的分数 from fractions import Fraction

 

3、数学系

python自己提供的三个经常使用库:math, random, statistics并发

随机数通常用一下原生的方法,更专业的仍是建议使用更为专业的库。

固然,numpy 提供了更为系统的方案,主要是matrix运算。【需专项熟练 ...】

 

 

字符串处理

Ref: [Python] 02 - String

1、基本操做

是const类型,immutability。

字符串操做:split() 比较经常使用。

 

2、打印与输出

输出到哪里:输出重定向

输出的格式:三种打印法

多行打印法:三个双引号

调试日志法:logging.XX

并行日志流:StreamHandler

 

3、正则匹配

正则表达式 - Regex,经常使用于文件筛选。

import re re.match(...).group(1)

 

 done.

 

 

高级变量


Ref: [Python] 03 - Lists, Dictionaries, Tuples, Set

很是相似C++ STL的思想。

列表

1、直接遍历

(a) for循环:遍历一个链表

>>> [[x ** 2, x ** 3] for x in range(4)] 

(b) map映射:遍历多个链表:【比 for循环 速度更快!但其实返回的是 iterator object】

>>> map(lambda x, y : x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]) [3, 7, 11, 15, 19]

若是列表特别大,有必要借助文件流,那么如何操做? Goto: 文件IO【有必要搞清楚】

 

2、间歇遍历

(a) next一步步pick up列表元素。

(b) 先yield各个元素; 再经过 next 来 pick up元素。

 

 

字典

1、若干初始化方式

  • 显示初始化
  • 只有 key 值
  • key, value 都知道

dict内容的 update:包含 "append" & "update" 的功能

D.update(D2)

 

2、遍历方式

间接遍历:(1)单独输出全部的key;(2)单独输出全部的value;(3)单独输出全部的(key,value);

直接遍历:for...in...默认是得到key值。

 

3、经典问题:key值是否存在?

直接使用 for keys in/not in dict 速度比自带的 has_key 要快!

对于sparse matrix的表达优点。

 

  

元组

Tuples,不变性 immutability。

  

 

集合

“集合数学运算” 是个好东西:List 与 set 的相互转换。

 

done. 

 

 

文件、文件夹处理 


Ref: [Python] 04 - os & sys module

文件夹搜索

获取:路径相关参数 

判断:路径是否有效

搜索:文件夹层级数

提取:文件路径列表

筛选:文件有效路径

 

 

Ref: [Python] 05 - Load data from Files

文件读写  

1、文件读写

(1) 安全打开 ----> (2) 逐行读取 ----> (3) 去杂质

(a) 二进制文件读取 ----> (b) txt到binary的互相转化

文件保存:pickle,json

问:如何结合yield处理大数据?

 

2、数据集文件

CSV <---- Pandas Lib

Image <---- PIL Lib

 

3、数据集划分

常见数据集格式:.mat, .npz, .data

train_test_split(...)

 

 

[Python] 06 - Modules --> Packages

模块 module & 包 package

1、模块的属性查看

模块的路径sys.path.append()

模块的属性:__dict__

主程序模块:__main__,做为主文件启动时;reload(...) 时就是其余状况了呢。

   

2、调用模块

from <范围> import <功能> as <别名>,三种逐级导入方式。

 

3、__init__文件

放在项目哪里?

如何设置内容?

如何动态调用? 

 

done. 

 

 

面向对象


[Python] 07 - Statements --> Functions

语句 statement & 函数 function

1、语句

常见 reserved words。

 

2、函数

基本函数 --> 大函数返回小函数(工厂模式)--> 小函数改变外层大函数的变量。

传参问题:一个星号,两个星号。

键值参数:默认只初始化一次。

 

3、异常

多异常的两种写法;

异常基类;

 

 

[Python] 08 - Classes --> Objects

类 class & 对象 object

1、类的定义

[封装] 实例属性;私有属性;私有化原理。

 

2、类的继承

[继承] 支持多继承,遵循从左到右的优先级顺序。

 

3、类方法覆盖

[多态] 父类做参数;鸭子类型。

 

4、类的运算符重载

类的加法:__add__

打印类:__str__

迭代类:__iter__, __next__

Index 类:__getitem__

 

done.

 

 

并行与异步处理


[Python] 09 - Multi-processing

线程并发

1、线程

线程建立

线程同步(锁)

 

2、进程锁

GIL:Global Interpreter Lock --> 进程 cpython

 

3、队列

三种队列可构成缓冲区、线程共享区

 

 

[Python] 10 - Concurrent: asyncio

异步处理

1、asyncio 客户端

网络爬虫 crawler。

 

2、aiohttp 服务器端

服务器端响应 requests。

 

done.

 

 

进阶部分


资源

廖雪峰的Python教程

Python 风格指南 - 内容目录

《Python金融大数据分析》

《Python高性能编程》

 

 

重难点剖析

1、工程问题

[Advanced Python] 11 - Implement a Class【OOP抽象过程】

[Advanced Python] 12 - Transfer parameters【与 "C语言" 的交互】

[Advanced Python] 16 - Google style guide for programming【风格规范】

 

2、细节问题

[Advanced Python] 13 - "Decorator": syntactic sugar 【一大特点】

[Advanced Python] 14 - "Generator": calculating prime【内存环保,但什么问题适合 generator?】

[Advanced Python] 15 - "Metaclass": ORM【高级实现ing】

 

3、优化问题

[Optimized Python] 17 - Bottle-neck in performance【测度瓶颈】

[Pandas] 01 - A guy based on NumPy【矩阵和矢量计算】

 

 

 

End.

相关文章
相关标签/搜索