日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

eviews如何处理缺失数据填补_python数据预处理之异常值、缺失值处理方法

發布時間:2025/3/21 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 eviews如何处理缺失数据填补_python数据预处理之异常值、缺失值处理方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數據預處理是明確分析目標與思路之后進行數據分析的第一步,也是整個項目中最基礎、花費時間較長的工作。除了互聯網埋點的數據或企業內部的業務數據之外,往往我們拿到的,比如說網上采集的數據并不是那樣規整,這類數據經常出現錯誤值、缺失值和異常值。

一、異常值

? ? ? ?異常值是指樣本中的個別值,其數值明顯偏離其余的觀測值。異常值也稱離群點,異常值的分析也稱為離群點的分析。

? ? ? ?常用的異常值分析方法為3σ原則、箱型圖分析、機器學習算法檢測,一般情況下對異常值的處理都是刪除和修正填補,即默認為異常值對整個項目的作用不大,只有當我們的目的是要求準確找出離群點,并對離群點進行分析時有必要用到機器學習算法,其他情況下不用費精力去分析他們,今天不討論基于機器學習算法的離群點檢測和分析,改天單獨出一個。

1、3σ原則

? ? ? ?如果數據服從正態分布,異常值被定義為一組測定值中與平均值的偏差超過3倍的值 → p(|x - μ| > 3σ) ≤ 0.003

首先創建數據

對數據進行正態性檢驗,p值為0.63,遠遠大于 0.05,認為服從正態分布。

接下來繪圖查看數據和異常值

#繪制數據密度曲線fig= plt.figure(figsize=(10,6))ax1=fig.add_subplot(2,1,1)data.plot(kind='kde',style='--k',grid=True,title='密度曲線')plt.axvline(3*std,hold=None,linestyle='--',color='r')plt.axvline(-3*std,hold=None,linestyle='--',color='r') #篩選出異常值和正常值error = data[np.abs(data - u) > 3*std]data_c = data[np.abs(data - u) <= 3*std]ax2=fig.add_subplot(2,1,2)plt.scatter(data_c.index,data_c,alpha=0.3)plt.scatter(error.index,error,color='r',marker='o',alpha=0.8)

圖中可以看出數據服從標準正態分布,且存在兩個異常值

2、箱型圖分析

? ?箱型圖是非常適合做異常值觀察的圖形,箱型圖的五根線分別表示最大值。最小值、上四分位、下四分位和中位數,箱型圖的兩個重要的概念是內限和外限,盒須的內限,最大值區間:上四分位+1.5IQR,最小值區間:下四分位-1.5IQR (IQR=上四分位-下四分位),在內限之外是中度異常,在外限之外是極度異常。下面以內限為界,查看異常數據

#箱型圖fig = plt.figure(figsize = (10,6))ax1 = fig.add_subplot(2,1,1)color = dict(boxes='DarkGreen', whiskers='DarkOrange', medians='DarkBlue', caps='Gray')data.plot.box(vert=False, grid = True,color = color,ax = ax1,label = '樣本數據') s = data.describe()print(s)print('------')# 基本統計量 q1 = s['25%']q3 = s['75%']iqr = q3 - q1mi = q1 - 1.5*iqrma = q3 + 1.5*iqrprint('分位差為:%.3f,下限為:%.3f,上限為:%.3f' % (iqr,mi,ma))print('------')#?計算分位差ax2 = fig.add_subplot(2,1,2)error = data[(data < mi) | (data > ma)]data_c = data[(data >= mi) & (data <= ma)]print('異常值共%i條' % len(error))# 篩選出異常值error、剔除異常值之后的數據data_c plt.scatter(data_c.index,data_c,marker='.',alpha = 0.3)plt.scatter(error.index,error,color = 'r',marker='.',alpha = 0.5)plt.grid()

從上圖可以看出,該數據上限為2.799,下限為-2.741,異常值共6條,找出異常值之后一般情況下如果異常值不多,可以直接刪除,或者當做缺失值處理。

二、缺失值

? ? ?對于缺失值最簡單的處理方法便是刪除,但有時不同字段存在大量不同的缺失值,處理起來比較麻煩,如果直接刪除將會影響分析結果或者建模的準確率。對于特定的數據一般不直接刪除,我把常用的缺失值插補方法分為兩類,取名為單一插補法(均值填充、中位數填充、眾數填充、特定值填充、臨近值填充等)、插值法(拉格朗日插值法、多重插補法等)

1、均值/中位數/眾數/特定值/臨近值插補

# 創建數據s = pd.Series([1,2,3,np.nan,3,4,5,5,5,5,np.nan,np.nan,6,6,7,12,2,np.nan,3,4]) u = s.mean() # 均值me = s.median() # 中位數mod = s.mode() # 眾數print('均值為:%.2f, 中位數為:%.2f' % (u,me))print('眾數為:', mod.tolist())print('------')# 分別求出均值/中位數/眾數 s.fillna(u,inplace = True)# 用均值填補,可換為中位數、眾數或特定的數值等 s1 = pd.Series([1,2,3,np.nan,3,4,5,5,5,5,np.nan,np.nan,6,6,7,12,2,np.nan,3,4]) s1.fillna(method = 'ffill',inplace = True)#?用前值插補?,后值為bfill

2、拉格朗日插值法

? ? ? ?拉格朗日插值法的數學原理是,平面上任意點可以擬合成下列多項式

? ? ?

? ? ? 當平面上只有兩點時則是最簡單的線性關系 ,三點時是二次方,為了根據新的x求出y,需要知道上述公式所有系數,因為n個點在以上多項式上,把n個點的坐標帶入,可求出系數,最終求得插值。

from scipy.interpolate import lagrangex = [3, 6, 9]y = [10, 8, 4]print(lagrange(x,y))print(type(lagrange(x,y)))# 輸出值為的是多項式的n個系數# 這里輸出3個值,分別為a0,a1,a2# y = a0 * x**2 + a1 * x + a2 → y = -0.11111111 * x**2 + 0.33333333 * x + 10 print('插值10為:%.2f' % lagrange(x,y)(10)) # -0.11111111*100 + 0.33333333*10 + 10 = -11.11111111 + 3.33333333 +10 = 2.22222222#?插值10為:2.22

下面給出拉格朗日插值法和其他插補方法對比圖

data = pd.Series(np.random.rand(100)*100)data[3,6,33,56,45,66,67,80,90] = np.nan data_c = data.fillna(data.median()) # 中位數填充缺失值fig,axes = plt.subplots(1,4,figsize = (20,5))data.plot.box(ax = axes[0],grid = True,title = '數據分布')data.plot(kind = 'kde',style = '--r',ax = axes[1],grid = True,title = '刪除缺失值',xlim = [-50,150])data_c.plot(kind = 'kde',style = '--b',ax = axes[2],grid = True,title = '缺失值填充中位數',xlim = [-50,150])# 密度圖查看缺失值情況def na_c(s,n,k=5): y = s[list(range(n-k,n+1+k))] # 取數 y = y[y.notnull()] # 剔除空值 return(lagrange(y.index,list(y))(n))# 創建函數,做插值,由于數據量原因,以空值前后5個數據(共10個數據)為例做插值 na_re = []for i in range(len(data)): if data.isnull()[i]: data[i] = na_c(data,i) print(na_c(data,i)) na_re.append(data[i])data.dropna(inplace=True) # 清除插值后仍存在的缺失值data.plot(kind = 'kde',style = '--k',grid = True,title = '拉格朗日插值后',xlim = [-50,150])print('finished!')

因為該數據缺失值不多,所以直接刪除和用拉格朗日插值法插補進去效果差不多,但可以明顯看出,用拉格朗日插值法比直接中位數填充擬合的要好。

? ? 整體來說,缺失值和異常值的處理雖然技術不難,但要具體情況具體分析,如何進行處理就要靠日常積累的數據分析經驗,以上,僅供參考。

總結

以上是生活随笔為你收集整理的eviews如何处理缺失数据填补_python数据预处理之异常值、缺失值处理方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久网址| 中文字字幕在线 | 91看片网站| 九九热视频在线免费观看 | 国产社区在线 | av免费在线不卡 | 欧美日韩一区二区三区不卡 | 免费成人黄色av | 男男一级淫片免费播放 | 毛茸茸多毛bbb毛多视频 | 在线www色| 人成免费在线视频 | 精品在线一区 | 国产制服91一区二区三区制服 | 欧美bbbbbbbbbbbb18av | 亚洲自拍偷拍精品 | 国产精品美女在线观看 | 黄色污污网站在线观看 | 一区二区三区爱爱 | 都市豪门艳霸淫美妇 | 午夜伊人网| 深夜成人福利视频 | 一区二区高清在线观看 | 免费在线观看www | 欧美精品一级二级三级 | 在线观看理论片 | 波多野结衣高清视频 | 最新中文字幕在线观看 | 三级男人添奶爽爽爽视频 | 欧美久久久久久久久久久久 | 激情综合激情五月 | 亚洲1级片| 精品久久久久久久 | 狠狠干网址 | 牲欲强的熟妇农村老妇女视频 | 国产女主播喷水高潮网红在线 | 超碰在线免费公开 | 久久免费国产视频 | 欧美日韩不卡一区二区 | 成年人一级黄色片 | 在线免费观看亚洲视频 | 中文字幕人妻一区二区 | 精品国产无码在线 | 女人的av| 瑟瑟在线视频 | 日韩美女一级片 | 精品字幕 | 中文字幕一区二区三 | www.国产麻豆 | 婷婷久久五月天 | 老鸭窝视频在线观看 | 边吃奶边添下面好爽 | 仙踪林久久久久久久999 | 欲乱美女| 国产精品伦子伦免费视频 | 人人艹在线观看 | 国产欧美日韩高清 | 日韩美女在线 | 久久亚洲av午夜福利精品一区 | 欧美熟妇精品一区二区蜜桃视频 | 日韩 国产 在线 | 一二三不卡 | 日韩一级片在线 | 深爱激情丁香 | 久久久久久国产精品 | 国产亚洲精 | 久久久精品免费观看 | 天天综合91 | 欧美xxxxx精品 | www.激情网 | 日韩欧美亚洲 | 一本色道久久综合亚洲精品小说 | 欧美日韩精品一区二区三区 | 国产精品久久久久久久久久直播 | av一区二区三 | 女女同性女同一区二区三区按摩 | 阿v天堂在线 | 在线国产黄色 | 手机看片1024日韩 | 奇米影视中文字幕 | 黄色大片视频网站 | 国产成人精品视频在线观看 | 日韩一级伦理片 | 国产精品免费网站 | 亚洲乱论| 人人干在线视频 | 91免费在线视频观看 | 免费成人深夜夜 | 青青草官网 | 这里只有精品免费视频 | 婷婷人体| mm131美女大尺度私密照尤果 | 国产吃瓜黑料一区二区 | 韩国无码av片在线观看网站 | 国产精品福利影院 | 免费无遮挡无码永久视频 | julia一区二区 | 欧美成人精品激情在线视频 | 人妻少妇偷人精品久久久任期 |