[Code] 大蛇之数据工程

作为“所谓码农”的首篇,本章内容理应涵盖基本编程技法。
Python这个东西、简洁,作为载体,是个不错的选择呦。
链接资源
Python Cookbook 3rd Edition Documentation
书《Python金融大数据分析》
书《Python高性能编程》
1.基础变量
数字计算
Ref: [Python] 01 - Number and Matrix
一些常见的不熟悉的地方,详见链接。
一、表达
不同进制:0b123 0o123 0x123,对应的 ”char查看函数":ord('a'),chr(115) --> hex(id(iList)) # 只能对数字,不能对变量,例如错误的示范:hex('a')
大数:幂(**), e等
二、精度问题
# 专业的十进制
import decimal
# 专业的分数
from fractions import Fraction
三、数学系
python本身提供的三个常用库:math, random, statistics
随机数一般用一下原生的方法,更专业的还是建议使用更为专业的库。
当然,numpy 提供了更为系统的方案,主要是matrix运算。【需专项熟练 ...】
字符串处理
Ref: [Python] 02 - String
一、基本操作
是const类型,immutability。
字符串操作:strip().split() 比较常用,或者re.split(...), rstrip()。
二、打印与输出
输出到哪里:输出重定向
输出的格式:三种打印法
多行打印法:三个双引号
调试日志法:logging.XX
并行日志流:StreamHandler
三、正则匹配
正则表达式 - Regex,常用于文件筛选。
In [9]: >>> match = re.match('[/:](.*)[/:](.*)[/:](.*)', '/usr/home:lumberjack')
...:
...: >>> match.groups()
...:
Out[9]: ('usr', 'home', 'lumberjack')
另一个 “有点类似” 的是:filter(...)。
filter(fun, emails)) # fun 是个自定义的函数,对emails中的元素一次做判断,返回:True/False
2.高级变量
Ref: [Python] 03 - Lists, Dictionaries, Tuples, Set
非常类似C++ STL的思想。
列表
一、直接遍历并处理
只为循环
循环几次,并得到index
循环到头,while...else,for in...else
处理列表
简单处理:列表内lambda内搞定
复杂处理:map,但返回的是list
筛选处理:filter,但返回的是list
内部处理:reduce,直接返回结果,非obj。
排序处理:sorted,通过key引入lambda
二、间歇遍历
(a) next 一步步pick up列表元素。
(b) 先 yield 各个元素; 再通过 next 来 pick up元素。
字典
一、若干初始化方式
- 显示初始化
- 只有 key 值
- key, value 都知道
dict内容的 update:包含 "append" & "update" 的功能
D.update(D2)
二、遍历方式
间接遍历:(1)单独输出所有的key;(2)单独输出所有的value;(3)单独输出所有的(key,value);
三、经典问题:key值是否存在?
直接使用 for keys in/not in dict 速度比自带的 has_key 要快!
对于sparse matrix的表达优势。
元组
Tuples,不变性 immutability。
集合
“集合数学运算” 是个好东西:List 与 set 的相互转换。
3.文件、文件夹处理
文件夹搜索
Ref: [Python] 04 - os & sys module
获取:路径相关参数
判断:路径是否有效
搜索:文件夹层级数
提取:文件路径列表
筛选:文件有效路径
路径集合:listdir, walk
检查路径:os.path.exists --> os.path.isfile/os.path.isdir --> os.access
路径拆分:os.path.join --> os.path.split(), os.path.splittxt()
文件读写
Ref: [Python] 05 - Load data from Files
一、文件读写
(1) 安全读取:with...as...原理解析
(2) 缓存读取:readlines(...)
(3) 逐行处理:strip, rstrip
二进制文件读取
文件保存:pickle,json
二、数据集文件
CSV <---- Pandas Lib
Image <---- PIL Lib
三、数据集划分
常见数据集格式:.mat, .npz, .data
train_test_split(...)
4.面向对象
语句 statement & 函数 function
[Python] 07 - Statements --> Functions
一、语句
常见 reserved words。
二、函数
基本函数 --> 大函数返回小函数(工厂模式)--> 小函数改变外层大函数的变量。
传参问题:一个星号,两个星号。
键值参数:默认只初始化一次。
[Optimized Python] "Generator": calculating prime
三、生成器
迭代函数优化
四、装饰器
增强“无参”的原函数。
装饰器装饰“有参”函数。
装饰器本身带“参数”。
五、异常
多异常的两种写法;
异常基类;
类 class & 对象 object
[Python] 08 - Classes --> Objects
一、数据封装(Encapsulation )
权限控制:
私有化原理
对象成员限制
成员变量 Set & Get
类方法:
对比 静态方法
cls参数 - Factory method
字典属性:
查询/设置 “对象” de 属性&方法
“字典属性” 原理
运算符重载
二、继承(inheritance )
支持多继承:遵循从左到右的优先级顺序。
多继承歧义:菱形、倒三角。
三、多态(polymorphism)
父类作参数;鸭子类型。
实现一个类
[Advanced Python] 11 - Implement a Class
一、元类(metaclass)
type()创建、metaclass创建
应用案例:ORM
二、装饰器
使用类中的函数。
类作为装饰器。
函数装饰某个类。
三、datetime实现剖析
初始化示范
魔术方法讲解
[Advanced Python] 12 - Google style guide for programming
四、编程规范
Python语言规范
Python风格规范
注释之美
5.搭建工程
[Python] 06 - Modules --> Packages
模块 module & 包 package
一、模块的属性查看
模块的路径:sys.path.append()
模块的属性:__dict__
主程序模块:__main__,作为主文件启动时;reload(...) 时就是其他情况了呢。
二、调用模块
from <范围> import <功能> as <别名>,三种逐级导入方式。
三、__init__文件
放在项目哪里?
如何设置内容?
如何动态调用?
四、导入 C++
Python调用 .so
传参类型转化表
图片的传入传出
python调用C++中的类
五、脚本参数处理
ArgumentParser 使用案例
进阶部分
一、工程问题
[Link] 《大话设计模式》Python版代码实现(新增多年实践的心得)
二、优化问题
[Optimized Python] Bottle-neck in performance【测度瓶颈】
[Pandas] 01 - A guy based on NumPy【矩阵和矢量计算】
End.
[Code] 大蛇之数据工程的更多相关文章
- 第二篇:智能电网(Smart Grid)中的数据工程与大数据案例分析
前言 上篇文章中讲到,在智能电网的控制与管理侧中,数据的分析和挖掘.可视化等工作属于核心环节.除此之外,二次侧中需要对数据进行采集,数据共享平台的搭建显然也涉及到数据的管理.那么在智能电网领域中,数据 ...
- DIKW模型与数据工程
DIKW 体系 DIKW体系是关于数据.信息.知识及智慧的体系,可以追溯至托马斯·斯特尔那斯·艾略特所写的诗--<岩石>.在首段,他写道:“我们在哪里丢失了知识中的智慧?又在哪里丢失了信息 ...
- DIKW模型与数据工程(了解)
DIKW 体系 DIKW体系是关于数据.信息.知识及智慧的体系,可以追溯至托马斯·斯特尔那斯·艾略特所写的诗--<岩石>.在首段,他写道:"我们在哪里丢失了知识中的智慧?又在哪里 ...
- 让大蛇(Python)帮你找工作
前段时间用Python实现了一个网络爬虫(让大蛇(Python)帮你找工作),效率总体还可以,但是缺点就是每次都需要手动的去触发,于是打算对该爬虫加上Timer,经过网上一番搜索以及API的查询,发现 ...
- python 数据工程 and 开发工具Sublime
数据工程采集.存储.清洗.分析.可视化 编程语言C++和Javapython大法Rweb:php.html.css.javascript 结合采集:python存储:python+数据库/.csv/t ...
- EntityFramework Code First便捷工具——数据迁移
使用EntityFramework Code First开发,数据迁移是一个不得不提的技术. 在我们的开发过程中,难免需要对模型进行改进,模型改进后,会导致实体集与数据库不一致,当然我们可以通过删除数 ...
- JDBC:数据库操作:处理大对象CLOB数据
目标: 了解大对象处理基本原理, 掌握CLOB数据的读,写操作. 可以使用CLOB类处理大文本数据. 大对象处理主要指CLOB和BLOB两种类型字段.可以大量存储文字. 要想在程序中处理这样的大数据操 ...
- Hibernate二进制或大文件类型数据和Oracle交互
//测试存储二进制文件 @Test public void test() throws IOException{ InputStream in=new FileInputStream("E ...
- Entityframework Code First 系列之数据注释
上一篇<Entityframework Code First 系列之项目搭建>讲了搭建一个Code First的控制台项目.里面有一些内容并没有扩展出来讲,因为篇幅有限.这篇针对上面内容中 ...
随机推荐
- python paramiko外部传参和内部调用命令的方法
学习了很久的python,但在工作中使用的时候,却发现不知道怎么传参进入到python中执行,所以这两天就研究 了python args怎么将外部参数传入到python中执行 1.首先使用python ...
- JavaScript最常见的错误种类
1.报错为: Uncaught ReferenceError:未捕获引用错误(引用错误:使用了没有定义的变量) 错误之前的代码会执行,之后代码不会执行 2.报错为: Uncaught Syntaxer ...
- shiro实现session共享(本文转自店蛋蛋)
session共享:在多应用系统中,如果使用了负载均衡,用户的请求会被分发到不同的应用中,A应用中的session数据在B应用中是获取不到的,就会带来共享的问题. 假设:用户第一次访问,连接的A服务器 ...
- 玩转 SpringBoot 2 快速搭建 | IntellJ IDEA篇
IntellJ IDEA 介绍 IntelliJ IDEA 简称 IDEA,目前被认为是最好用的开发Java 语言开发工具之一.不过是收费的.和其同类型的工具有 Eclipse 和 MyEclip ...
- js加密后台加密解密以及验证码
该文档为转载内容: 加密解密 1 前端js加密概述 2 前后端加密解密 21 引用的js加密库 22 js加密解密 23 Java端加密解密PKCS5Padding与js的Pkcs7一致 验证码 1 ...
- Scala 系列(六)—— 常用集合类型之 List & Set
一.List字面量 List 是 Scala 中非常重要的一个数据结构,其与 Array(数组) 非常类似,但是 List 是不可变的,和 Java 中的 List 一样,其底层实现是链表. scal ...
- 关于ionic 打包后 background-image 无法显示 的问题
这几天费劲心思,终于把ionic 项目打包生成 本地app,但是安卓手机安装以后,我所有的雪碧图的 icon ,竟然无法显示:到处搜索答案,都没有什么可行的,都是说什么ionic版本不对,androi ...
- RocketMQ 4.3.2 standalone Installation and Configuration
1 Download RockeMQ Package: You need to download it and put it to the OS Image. wget http://apache.c ...
- 设计模式(C#)——10享元模式
推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 前言 在软件开发中,当我们需要对某些对象重复创建,且最终只需要得到单一结果.如果使用一般思维,那我们将浪费很多内存空 ...
- Anaconda的详细安装步骤图文并茂
Anaconda(官方网站)就是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本.Anaconda包含了conda.Python在内的超过180个科学包及其依赖项. 事实上Anaco ...