[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.

相關文章
相關標籤/搜索