題目來源:
《Python資料分析與應用》第5章
【 黃紅梅、張良均主編 中國工信出版集團和人民郵電出版社】
本博客題目文字主要來自:
全能掃描王文字識別轉換(敲題目是不可能去敲題目的)
資料集下載鏈接(下載后找到第6章->實訓資料)
實訓1 插補用戶用電量資料缺失值
1.訓練要點
(1)掌握缺失值識別方法,
(2)掌握對缺失值資料處理的方法,
2、需求說明
用戶用電量資料呈現一定的周期性關系, missing data.csv表中存放了用戶A、用戶B和用戶C的用電量資料,其中存在缺失值,需要進行缺失值插補才能進行下一步分析,
3.實作思路及步驟
(1)讀取 missinne_data. csv表中的資料,
(2)查詢缺失值所在位置,
(3)使用 SciPy庫中 interpolate模塊中的 lagrange對資料進行拉格朗日插值,
(4)查看資料中是否存在缺失值,若不存在則說明插值成功,
#實訓1 插補用戶用電量資料缺失值
import pandas as pd
import numpy as np
arr=np.array([0,1,2])
missing_data=pd.read_csv("./實訓資料/missing_data.csv",names=arr)
#查詢缺失值所在位置
print("lagrange插值前(False為缺失值所在位置)",'\n',missing_data.notnull())
#拉格朗日插值
#dropna().index用于記錄非缺失值的下標
#dropna().values用于記錄非缺失值的實際值
from scipy.interpolate import lagrange
for i in range(0,3):
#"訓練"lagrange模型
la=lagrange(missing_data.loc[:,i].dropna().index,missing_data.loc[:,i].dropna().values)
#list_d用于記錄當前列缺失值所在的行(記錄缺失值下標)
list_d=list(set(np.arange(0,21)).difference(set(missing_data.loc[:,i].dropna().index)))
#將缺失值list_d帶入訓練好的模型,并填入對應的位置
missing_data.loc[list_d,i]=la(list_d)
print("第%d列缺失值的個數為:%d"%(i,missing_data.loc[:,i].isnull().sum()))
print("lagrange插值后(False為缺失值所在位置)","\n",missing_data.notnull())



實訓2 合并線損、用電量趨勢與線路告警資料
1.訓練要點
(1)掌握主鍵合并的幾種方法,
(2)掌握多個鍵值的主鍵合并,
2.需求說明
線路線損資料、線路用電量趨勢下降資料和線路告警資料是識別用戶竊漏電與否的
個重要特征,需要對由線路編號(ID)和時間(date)兩個鍵值構成的主鍵進行合并,
3.實作思路及步驟
(1)讀取 ele_loss. csv和 alarm csy表,
(2)查看兩表的形狀,
(3)以ID和date兩個鍵值作為主鍵進行內連接,
4)查看合并后的資料,
#實訓2 合并線損、用電量趨勢與線路告警資料
import pandas as pd
ele_loss=pd.read_csv("./實訓資料/ele_loss.csv")
alarm=pd.read_csv("./實訓資料/alarm.csv", encoding='gbk')
#查看兩個表的形狀
print("ele_loss表的形狀為",ele_loss.shape)
print("alarm表的形狀為",alarm.shape)
#合并后的資料
merge=pd.merge(ele_loss,alarm,left_on=["ID","date"],right_on=["ID","date"],how="inner")
print("合并后的表形狀為:",merge.shape)
print("合并后的表為:",merge)

實訓3 標準化建模專家樣本資料
1.訓練要點
(1)掌握資料標準化的原理
(2)掌握資料標準化的方法,
2.需求說明
演算法的種類非常多,一旦涉及空間距離計算、梯度下降等,就必須進行標準化處理對線路線損特征、線路用電量趨勢下降特征、線路告警特征進行標準化,
3.實作思路及步驟
(1)讀取model.csv資料,
(2)定義標準差標準化函式,
(3)使用函式分別對3列資料進行標準化,
(4)查看標準化后的資料
#實訓3 標準化建模專家樣本資料
import pandas as pd
model=pd.read_csv("./實訓資料/model.csv",encoding = "gbk")
def Standard(data):
data=(data-data.mean())/data.std()
return data
S=Standard(model)
print("標準化后的資料為:",'\n',S.head())
'''
#離差標準化函式
def MinMaxScale(data):
data=(data-data.min())/(data.max()-data.min())
return data
M=MinMaxScale(model)
print("離差標準化后的資料為:",'\n',S.head())
#小數定標差標準化函式
def DecimalScaler(data):
data=data/10**np.ceil(np.log10(data.abs().max()))
return data
D=DecimalScaler(model)
print("小數定標差標準化的資料為:",'\n',D.head())'''

三種標準化各有其優勢,離差標準化方法簡單,便于理解,標準化后的資料限定在[0,1]區間內,標準差標準化受資料分布的影響較小,小數定標標準化方法的適用范圍廣,并且受資料分布的影響較小,相比較于前兩種方法,該方法適用程度適中,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/232589.html
標籤:python
