乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      python小技能-缺失數(shù)據(jù)處理

       生物_醫(yī)藥_科研 2019-01-12
      停更了幾周的python基礎學習,今天我們跟上,接下來幾周將重點學習如何處理缺失數(shù)據(jù)、重復數(shù)據(jù)、字符串操作和其它分析數(shù)據(jù)轉換的工具

      缺失數(shù)據(jù)

      缺失數(shù)據(jù)在pandas中呈現(xiàn)的方式有些不完美,但對于大多數(shù)用戶可以保證功能正常。對于數(shù)值數(shù)據(jù),pandas使用浮點值NaN(Not a Number)表示缺失數(shù)據(jù)。在python中其為哨兵值,可以方便的檢測出來:

      導入神庫

      import pandas as pd

      import numpy as np

          string_data=pd.Series(['aardvark''artichoke', np.nan, 'avocado'])

      ## 判斷是否為缺失值
      string_data.isnull()
      0    False
      1    False
      2     True
      3    False  

      第二種方法 判斷

      pd.isna(string_data)

      0    False
      1    False
      2     True
      3    False
      dtype: bool

      在pandas中,采用了R語言中的慣用法,即將缺失值表示為NA,它表示不可用not available 。在統(tǒng)計應用中,NA數(shù)據(jù)可能是不存在的數(shù)據(jù)或者雖然存在,但是沒有觀察到(例如,數(shù)據(jù)采集中發(fā)生了問題)。當進行數(shù)據(jù)清洗以進行分析時,最好直接對缺失數(shù)據(jù)進行分析,以判斷數(shù)據(jù)采集的問題或缺失數(shù)據(jù)可能導致的偏差。

      Python內置的None值在對象數(shù)組中也可以作為NA:

      string_data[0]==None  ##判斷
      False
      string_data[0]=None  ## 賦值
      string_data
      0         None
      1    artichoke
      2          NaN
      3      avocado
      dtype: object
      pd.isnull(string_data)
      0     True
      1    False
      2     True
      3    False
      dtype: bool

      濾除缺失數(shù)據(jù)

      過濾掉缺失數(shù)據(jù)的辦法有很多種。你可以通過pandas.isnull 或布爾索引的手工方法,但dropna可能會更實用一些。對于一個Series ,dropna返回一個僅含非空數(shù)據(jù)和索引值的Series :
      from numpy import nan as NA
      data=pd.Series([1,NA,3,NA,7])
      data.dropna()
      0    1.0
      2    3.0
      4    7.0
      dtype: float64
      #這等價于:
      data[data.notna()]
      0    1.0
      2    3.0
      4    7.0
      dtype: float64

      而對于DataFrame對象,事情就有點復雜了。你可能希望丟棄全NA或含有

      NA的行或列。dropna默認丟棄任何含有缺失值的行:

      data = pd.DataFrame([[1.6.53.], [1.NANA],
                          [NANANA], [NA6.53.]])
      data

      012
      01.06.53.0
      11.0NaNNaN
      2NaNNaNNaN
      3NaN6.53.0
      clean_data=data.dropna()

      clean_data

      012
      01.06.53.0
      ### 可以看出,默認刪除的是含有NA值的行

      #
      #傳入how='all' 將只丟棄全為NA的那些行:

      data.dropna(how='all')

      012
      01.06.53.0
      11.0NaNNaN
      3NaN6.53.0
      # 如果按照列刪除缺失值,只需傳入axis=1 即可:

      data.dropna(how='all',axis=1)

      012
      01.06.53.0
      11.0NaNNaN
      2NaNNaNNaN
      3NaN6.53.0

      另一個濾除DataFrame行的問題涉及時間序列數(shù)據(jù)。假設你只想留下一部分

      觀測數(shù)據(jù),可以用thresh 參數(shù)實現(xiàn)此目的:

      df=pd.DataFrame(np.random.randn(7,3))

      df

      012
      0-0.4750240.8088770.846899
      11.985728-0.498647-0.461880
      2-0.121965-0.6471251.897084
      30.408052-0.4912820.398916
      4-0.2725061.000522-0.114962
      5-0.1717800.501524-0.362652
      6-1.3767140.138974-0.152652
      df.iloc[:4,1]=NA

      df.iloc[:2,2]



      0    0.846899
      1   -0.461880
      Name: 2, dtype: float64




      df.iloc[:2,2]=NA

      df

      012
      0-0.475024NaNNaN
      11.985728NaNNaN
      2-0.121965NaN1.897084
      30.408052NaN0.398916
      4-0.2725061.000522-0.114962
      5-0.1717800.501524-0.362652
      6-1.3767140.138974-0.152652
      df.dropna()

      012
      4-0.2725061.000522-0.114962
      5-0.1717800.501524-0.362652
      6-1.3767140.138974-0.152652
      df.dropna(axis=1)

      0
      0-0.475024
      11.985728
      2-0.121965
      30.408052
      4-0.272506
      5-0.171780
      6-1.376714
       df.dropna(thresh=3) ###thresh 代表的是刪除索引從0開始到索引為thresh為止

      012
      4-0.2725061.000522-0.114962
      5-0.1717800.501524-0.362652
      6-1.3767140.138974-0.152652

      填充缺失數(shù)據(jù)

      你可能不想濾除缺失數(shù)據(jù)(有可能會丟棄跟它有關的其他數(shù)據(jù)),而是希望通過其他方式填補那些“空洞”。對于大多數(shù)情況而言,fillna方法是最主要的函數(shù)。通過一個常數(shù)調用fillna就會將缺失值替換為那個常數(shù)值:
      ### 比如用0填充
      df.fillna(0)

      012
      0-0.4750240.0000000.000000
      11.9857280.0000000.000000
      2-0.1219650.0000001.897084
      30.4080520.0000000.398916
      4-0.2725061.000522-0.114962
      5-0.1717800.501524-0.362652
      6-1.3767140.138974-0.152652
      #若是通過一個字典調用fillna,就可以實現(xiàn)對不同的列填充不同的值:
      df.fillna({1:1,2:2})

      012
      0-0.4750241.0000002.000000
      11.9857281.0000002.000000
      2-0.1219651.0000001.897084
      30.4080521.0000000.398916
      4-0.2725061.000522-0.114962
      5-0.1717800.501524-0.362652
      6-1.3767140.138974-0.152652

      對reindexing 有效的那些插值方法也可用于fillna:

      df=pd.DataFrame(np.random.randn(6,3))
      df.iloc[:2,1]
      0    0.341521
      1   -0.236488
      Name: 1, dtype: float64
      df.iloc[2:,1]=NA
      df

      012
      0-1.3084690.3415210.665815
      1-0.343031-0.2364883.169433
      21.651689NaN0.398313
      3-0.601294NaN-0.284620
      41.516970NaN1.344071
      5-2.583564NaN0.508698
      df.iloc[3:,2]=NA
      df

      012
      0-1.3084690.3415210.665815
      1-0.343031-0.2364883.169433
      21.651689NaN0.398313
      3-0.601294NaNNaN
      41.516970NaNNaN
      5-2.583564NaNNaN
      df.fillna(method='ffill')

      012
      0-1.3084690.3415210.665815
      1-0.343031-0.2364883.169433
      21.651689-0.2364880.398313
      3-0.601294-0.2364880.398313
      41.516970-0.2364880.398313
      5-2.583564-0.2364880.398313
      df.fillna(method='ffill'limit=2) ##表示之填充兩個

      012
      0-1.3084690.3415210.665815
      1-0.343031-0.2364883.169433
      21.651689-0.2364880.398313
      3-0.601294-0.2364880.398313
      41.516970NaN0.398313
      5-2.583564NaNNaN
      df.fillna(df[0].mean()) ## 用第一列均值填充

      012
      0-1.3084690.3415210.665815
      1-0.343031-0.2364883.169433
      21.651689-0.2779500.398313
      3-0.601294-0.277950-0.277950
      41.516970-0.277950-0.277950
      5-2.583564-0.277950-0.277950
      df[0]
      0   -1.308469
      1   -0.343031
      2    1.651689
      3   -0.601294
      4    1.516970
      5   -2.583564
      Name: 0, dtypefloat64


        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多