python複習

aidengduff發表於2024-09-29
  1. 函式可以作為引數傳遞給其他函式——傳遞的是計算邏輯而不是資料
    def newFunc(oldFunc):
    oldFunc(a,b)

  2. from time import *
    這個* 收到time中的__all__=[]控制,如果函式不再all中就無法使用,但可以自行import函式進行使用

  3. 對集合的遍歷
    s[::-1]就是逆序遍歷,可以省略最後的-1,表示正向遍歷

  4. __main__的功能
    image

  5. 異常處理
    image

  6. JSON資料與字典互相轉換
    中文需要注意
    由字典轉為json:json.dump(data,ensure_ascii=False)
    image

由json轉為字典:json.loads(data)

  1. 私有成員或變數
    以__開頭

  2. 繼承父類
    class children(father):
    屬性
    方法(self是必須的)

每個類中都有自己的魔法方法,就是python自帶的方法

  1. 抽象類和抽象方法
    def 類:
    def 抽象方法(self):
    pass

然後由類去實現這個抽象類

  1. 閉包
    def outer(變數1):

def inner(變數2):
對變數處理
return inner
這種情況可以不用全域性變數,防止全域性變數的使用和修改

  1. 裝飾器
    類似Java的註解

def outer(func):
def inner():
處理
func()
處理
return inner

直接在func上加上
@outer 即可實現AOP

image

  1. 多執行緒
    threading庫
    image

  2. 正規表示式
    import re
    image

二、特徵工程

  1. 資料集
    scikit-learn:資料集小,方便學習
    Kaggle:巨量資料,競賽平臺,科學家多
    UCI:覆蓋廣,資料多

三、資料處理
1.匯入資料:讀取CSV、Excel及兩者的互換
一般是由pandas處理資料:import pandas as pd
pd.read_csv();pd.read_excel()

下面的df是data_framework()

image

兩者的互換,在有CSV的方法中加上(encoding=“UTF-8”)
image

讀取TXT檔案,注意對TXT檔案分割符的處理:
image

  1. 對庫的認知
    pandas庫:對資料進行分析,包括清洗、處理、轉換等多種方法
    numpy庫: 主要對陣列和矩陣進行處理、分析

  2. 缺失值的識別與處理
    識別:

data.isnull().any()--任何一列為空就統計;
data.isnull().any(axis=1)--行
在上面兩行後面加上sum()可以統計出以後多少行或列
data.isnull().all()--只有全部列為空才統計;
image

處理:
3.1 刪除:
data.dropna()--預設對行進行操作,預設只要一行有nan就刪除
其餘引數見下圖
image

3.2 填充
3.2.1 fillna()
data.fillna(method=“backfill”)--根據前面或後面的數字進行填充
也可以用指定的數字進行填充,在fillna(數字)即可
image

3.2.1 replace(data.nan,指定數字)
image
3.2.1 sklearn的預處理方法,較複雜
image

  1. 異常值的識別與處理
    識別:
    import numpy as np
    outlier = df[df[np.abs(df)>5].any(1)]
    識別在【-5,5】以外的數字1
    image

處理:
使用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])
image

  1. 重複值的識別與處理
    df.duplicate()會讓重複的索引為true
    df[df.duplicate()] 會取得重複的值
    image

image

刪除重複值:
image

直接在原資料上進行刪除:
image

  1. 資料切片

df--資料切片
image

獲取列名和索引名:
image

獲取多行和行、列
image

索引的獲取:iloc,loc的區別
image

根據條件獲取某行資料:
取得某列資料;
image

資料連線:
pd.merge()
image

  1. 資料的合併
    pd.contace()可以實現縱向、橫線的連線
    縱向連線:類似SQL的union
    image

image

  1. 資料的重塑
    行列的互換
    image

行轉列:df.pivot(),不變的是Index,要轉的是columns,colums的值是values
image

pd.pivot_table()可以先對資料進行處理
image

列轉行:先對源資料進行索引重置
pd.melt()
image

stack()和unstack()也可以實現上面的操作:
如圖:可以看出函式的相關作用:
image

unstack()
image

  1. 資料排序
    df.sort_values()
    image

多排序規則:列表相應對應
image

排名:
df.rank()--有意思,同樣的排名有的是取平均值,
image

值出現次數的新增
image

  1. pandas匯入資料的常見問題
    對分隔符的正則表示
    image

資料中間有換行符和空格--使用applymap()
image

匯入的資料沒有表頭:
自己命名列名
image

轉換匯入的資料的型別:
image

  1. 資料分組&聚合&加權平均
    groupby()
    image

聚合函式:同時對多列資料進行處理
image

加權平均:
np.average()
image

分組加權平均:
先加權平均,再加上分組
image

  1. 累計求和
    對某一列累計求和;以及排序後累計求和
    image

image

分組累計求和:這是有點難得
image

  1. 分箱、分頻
    等距分箱;等頻分箱
    等距:pd.cut()
    image

等頻:
image

  1. 資料交叉表與透視表
    可以使用pivot_table(),具體操作需要時再看

  2. 資料過濾
    df.where()
    可以多條件過濾
    image

找出一行最大或者最小
score表示資料;Score表示對那列找出最大
image