-
函式可以作為引數傳遞給其他函式——傳遞的是計算邏輯而不是資料
def newFunc(oldFunc):
oldFunc(a,b) -
from time import *
這個* 收到time中的__all__=[]控制,如果函式不再all中就無法使用,但可以自行import函式進行使用 -
對集合的遍歷
s[::-1]就是逆序遍歷,可以省略最後的-1,表示正向遍歷 -
__main__的功能
-
異常處理
-
JSON資料與字典互相轉換
中文需要注意
由字典轉為json:json.dump(data,ensure_ascii=False)
由json轉為字典:json.loads(data)
-
私有成員或變數
以__開頭 -
繼承父類
class children(father):
屬性
方法(self是必須的)
每個類中都有自己的魔法方法,就是python自帶的方法
- 抽象類和抽象方法
def 類:
def 抽象方法(self):
pass
然後由類去實現這個抽象類
- 閉包
def outer(變數1):
def inner(變數2):
對變數處理
return inner
這種情況可以不用全域性變數,防止全域性變數的使用和修改
- 裝飾器
類似Java的註解
def outer(func):
def inner():
處理
func()
處理
return inner
直接在func上加上
@outer 即可實現AOP
-
多執行緒
threading庫
-
正規表示式
import re
二、特徵工程
- 資料集
scikit-learn:資料集小,方便學習
Kaggle:巨量資料,競賽平臺,科學家多
UCI:覆蓋廣,資料多
三、資料處理
1.匯入資料:讀取CSV、Excel及兩者的互換
一般是由pandas處理資料:import pandas as pd
pd.read_csv();pd.read_excel()
下面的df是data_framework()
兩者的互換,在有CSV的方法中加上(encoding=“UTF-8”)
讀取TXT檔案,注意對TXT檔案分割符的處理:
-
對庫的認知
pandas庫:對資料進行分析,包括清洗、處理、轉換等多種方法
numpy庫: 主要對陣列和矩陣進行處理、分析 -
缺失值的識別與處理
識別:
data.isnull().any()--任何一列為空就統計;
data.isnull().any(axis=1)--行
在上面兩行後面加上sum()可以統計出以後多少行或列
data.isnull().all()--只有全部列為空才統計;
處理:
3.1 刪除:
data.dropna()--預設對行進行操作,預設只要一行有nan就刪除
其餘引數見下圖
3.2 填充
3.2.1 fillna()
data.fillna(method=“backfill”)--根據前面或後面的數字進行填充
也可以用指定的數字進行填充,在fillna(數字)即可
3.2.1 replace(data.nan,指定數字)
3.2.1 sklearn的預處理方法,較複雜
- 異常值的識別與處理
識別:
import numpy as np
outlier = df[df[np.abs(df)>5].any(1)]
識別在【-5,5】以外的數字1
處理:
使用z_score
for col in df.columns:
df_current_col = df[col]
z_score = df[df.current.col - df.c.col.mean()] / df.c.c.std()
df_zscore=z_score.abs()>2
outlier = df[df_zscore]
#刪除異常值
print(df[df_zscore==False])
- 重複值的識別與處理
df.duplicate()會讓重複的索引為true
df[df.duplicate()] 會取得重複的值
刪除重複值:
直接在原資料上進行刪除:
- 資料切片
df--資料切片
獲取列名和索引名:
獲取多行和行、列
索引的獲取:iloc,loc的區別
根據條件獲取某行資料:
取得某列資料;
資料連線:
pd.merge()
- 資料的合併
pd.contace()可以實現縱向、橫線的連線
縱向連線:類似SQL的union
- 資料的重塑
行列的互換
行轉列:df.pivot(),不變的是Index,要轉的是columns,colums的值是values
pd.pivot_table()可以先對資料進行處理
列轉行:先對源資料進行索引重置
pd.melt()
stack()和unstack()也可以實現上面的操作:
如圖:可以看出函式的相關作用:
unstack()
- 資料排序
df.sort_values()
多排序規則:列表相應對應
排名:
df.rank()--有意思,同樣的排名有的是取平均值,
值出現次數的新增
- pandas匯入資料的常見問題
對分隔符的正則表示
資料中間有換行符和空格--使用applymap()
匯入的資料沒有表頭:
自己命名列名
轉換匯入的資料的型別:
- 資料分組&聚合&加權平均
groupby()
聚合函式:同時對多列資料進行處理
加權平均:
np.average()
分組加權平均:
先加權平均,再加上分組
- 累計求和
對某一列累計求和;以及排序後累計求和
分組累計求和:這是有點難得
- 分箱、分頻
等距分箱;等頻分箱
等距:pd.cut()
等頻:
-
資料交叉表與透視表
可以使用pivot_table(),具體操作需要時再看 -
資料過濾
df.where()
可以多條件過濾
找出一行最大或者最小
score表示資料;Score表示對那列找出最大