欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python學習——pandas數據丟失處理

系統 1974 0

處理丟失數據

?

有兩種丟失數據:

  • None
  • np.nan(NaN)
In?[1]:
                    
                      import 
                      
                        numpy 
                        
                          as 
                          
                            np

                          
                        
                      
                    
                  
In?[12]:
                    
                      %
                      
                        timeit np.arange(0,10000,dtype=int).sum()

                      
                    
                  
?
                    21.3 μs ± 1.66 μs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

                  
In?[13]:
                    
                      %
                      
                        timeit np.arange(0,10000,dtype=float).sum()

                      
                    
                  
?
                    24.2 μs ± 2.7 μs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

                  
In?[14]:
                    
                      %
                      
                        timeit np.arange(0,10000,dtype=object).sum()

                      
                    
                  
?
                    679 μs ± 8.85 μs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

                  
?

1. None

None是Python自帶的,其類型為python object。因此,None不能參與到任何計算中。

?

object類型的運算要比int類型的運算慢得多
計算不同數據類型求和時間
%timeit np.arange(1e5,dtype=xxx).sum()

In?[14]:
                    
                      %
                      
                        timeit np.arange(1e5,dtype=int).sum()

                      
                    
                  
?
                    185 μs ± 24.2 μs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

                  
In?[15]:
                    
                      %
                      
                        timeit np.arange(1e5,dtype=float).sum()

                      
                    
                  
?
                    537 μs ± 24.5 μs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

                  
In?[16]:
                    
                      %
                      
                        timeit np.arange(1e5,dtype=object).sum()

                      
                    
                  
?
                    6.36 ms ± 180 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)

                  
?

2. np.nan(NaN)

?

np.nan是浮點類型,能參與到計算中。但計算的結果總是NaN。

?

但可以使用np.nan*()函數來計算nan,此時視nan為0。

In?[?]:
?
?

3. pandas中的None與NaN

?

1) pandas中None與np.nan都視作np.nan

?

創建DataFrame

In?[15]:
                    
                      import 
                      
                        pandas 
                        
                          as 
                          
                            pd

                            
                              from 
                              
                                pandas 
                                
                                  import 
                                  
                                    Series
                                    
                                      ,
                                      
                                        DataFrame 
                                      
                                    
                                  
                                
                              
                            
                          
                        
                      
                    
                  
In?[19]:
                    
                      df 
                      
                        = 
                        
                          DataFrame
                          
                            ({
                            
                              'age'
                              
                                :[
                                
                                  20
                                  
                                    ,
                                    
                                      21
                                      
                                        ,
                                        
                                          23
                                          
                                            ,
                                            
                                              19
                                              
                                                ,
                                                
                                                  22
                                                  
                                                    ], 
                                                    
                                                      'salary'
                                                      
                                                        :[
                                                        
                                                          10000
                                                          
                                                            ,
                                                            
                                                              11000
                                                              
                                                                ,
                                                                
                                                                  9900
                                                                  
                                                                    ,
                                                                    
                                                                      8500
                                                                      
                                                                        ,
                                                                        
                                                                          15000
                                                                          
                                                                            ]}, 
                                                                            
                                                                              index
                                                                              
                                                                                =
                                                                                
                                                                                  [
                                                                                  
                                                                                    '張三'
                                                                                    
                                                                                      ,
                                                                                      
                                                                                        '李四'
                                                                                        
                                                                                          ,
                                                                                          
                                                                                            '小昭'
                                                                                            
                                                                                              ,
                                                                                              
                                                                                                '小郭'
                                                                                                
                                                                                                  ,
                                                                                                  
                                                                                                    '小齊'
                                                                                                    
                                                                                                      ], 
                                                                                                      
                                                                                                        columns
                                                                                                        
                                                                                                          =
                                                                                                          
                                                                                                            [
                                                                                                            
                                                                                                              'age'
                                                                                                              
                                                                                                                ,
                                                                                                                
                                                                                                                  'salary'
                                                                                                                  
                                                                                                                    ,
                                                                                                                    
                                                                                                                      'work'
                                                                                                                      
                                                                                                                        ]) 
                                                                                                                        
                                                                                                                          df 
                                                                                                                        
                                                                                                                      
                                                                                                                    
                                                                                                                  
                                                                                                                
                                                                                                              
                                                                                                            
                                                                                                          
                                                                                                        
                                                                                                      
                                                                                                    
                                                                                                  
                                                                                                
                                                                                              
                                                                                            
                                                                                          
                                                                                        
                                                                                      
                                                                                    
                                                                                  
                                                                                
                                                                              
                                                                            
                                                                          
                                                                        
                                                                      
                                                                    
                                                                  
                                                                
                                                              
                                                            
                                                          
                                                        
                                                      
                                                    
                                                  
                                                
                                              
                                            
                                          
                                        
                                      
                                    
                                  
                                
                              
                            
                          
                        
                      
                    
                  
Out[19]:
? age salary work
張三 20 10000 NaN
李四 21 11000 NaN
小昭 23 9900 NaN
小郭 19 8500 NaN
小齊 22 15000 NaN
In?[21]:
                    
                      df
                      
                        .
                        
                          work
                          
                            [
                            
                              '李四'
                              
                                :
                                
                                  '小郭'
                                  
                                    ] 
                                    
                                      = 
                                      
                                        'python' 
                                      
                                    
                                  
                                
                              
                            
                          
                        
                      
                    
                  
?
                    C:\Users\BLX\AppData\Roaming\Python\Python37\site-packages\ipykernel_launcher.py:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  """Entry point for launching an IPython kernel.

                  
In?[22]:
                    
                      df

                    
                  
Out[22]:
? age salary work
張三 20 10000 NaN
李四 21 11000 python
小昭 23 9900 python
小郭 19 8500 python
小齊 22 15000 NaN
?

使用DataFrame行索引與列索引修改DataFrame數據

?

2) pandas中None與np.nan的操作

?
  • isnull()
  • notnull()
  • dropna() : 過濾丟失數據
  • fillna() : 填充丟失數據
In?[?]:
?
?

(1)判斷函數

  • isnull()
  • notnull()
In?[27]:
                    
                      # 根據獲得的數據去除原來數據的空數據

                      
                        s1 
                        
                          = 
                          
                            df
                            
                              .
                              
                                isnull
                                
                                  ()
                                  
                                    .
                                    
                                      any
                                      
                                        (
                                        
                                          axis
                                          
                                            =
                                            
                                              1
                                              
                                                ) 
                                              
                                            
                                          
                                        
                                      
                                    
                                  
                                
                              
                            
                          
                        
                      
                    
                  
In?[29]:
                    
                      # 有了s1這個數據,可以獲得哪些數據為空

                      
                        df
                        
                          [
                          
                            s1
                            
                              ]

                            
                          
                        
                      
                    
                  
Out[29]:
? age salary work
張三 20 10000 NaN
小齊 22 15000 NaN
In?[33]:
                    
                      # 保留非空數據 

                      
                        # .all()判斷軸中所有數據都不為空,返回True

                        
                          s2 
                          
                            = 
                            
                              df
                              
                                .
                                
                                  notnull
                                  
                                    ()
                                    
                                      .
                                      
                                        all
                                        
                                          (
                                          
                                            axis
                                            
                                              =
                                              
                                                1
                                                
                                                  ) 
                                                
                                              
                                            
                                          
                                        
                                      
                                    
                                  
                                
                              
                            
                          
                        
                      
                    
                  
In?[34]:
                    
                      df
                      
                        [
                        
                          s2
                          
                            ]

                          
                        
                      
                    
                  
Out[34]:
? age salary work
李四 21 11000 python
小昭 23 9900 python
小郭 19 8500 python
?

(2) 過濾函數

  • dropna()
?

可以選擇過濾的是行還是列(默認為行)

In?[38]:
                    
                      df
                      
                        .
                        
                          dropna
                          
                            ()

                          
                        
                      
                    
                  
Out[38]:
? age salary work
李四 21 11000 python
小昭 23 9900 python
小郭 19 8500 python
In?[37]:
                    
                      df
                      
                        .
                        
                          dropna
                          
                            (
                            
                              axis 
                              
                                = 
                                
                                  1
                                  
                                    ) 
                                  
                                
                              
                            
                          
                        
                      
                    
                  
Out[37]:
? age salary
張三 20 10000
李四 21 11000
小昭 23 9900
小郭 19 8500
小齊 22 15000
?

也可以選擇過濾的方式 how = 'all',一行中所有數據為空才刪除

In?[39]:
                    
                      df
                      
                        .
                        
                          dropna
                          
                            (
                            
                              how
                              
                                =
                                
                                  'all'
                                  
                                    ) 
                                  
                                
                              
                            
                          
                        
                      
                    
                  
Out[39]:
? age salary work
張三 20 10000 NaN
李四 21 11000 python
小昭 23 9900 python
小郭 19 8500 python
小齊 22 15000 NaN
In?[42]:
                    
                      df
                      
                        .
                        
                          loc
                          
                            [
                            
                              '張三'
                              
                                ] 
                                
                                  = 
                                  
                                    np
                                    
                                      .
                                      
                                        nan 
                                        
                                          df 
                                        
                                      
                                    
                                  
                                
                              
                            
                          
                        
                      
                    
                  
Out[42]:
? age salary work
張三 NaN NaN NaN
李四 21.0 11000.0 python
小昭 23.0 9900.0 python
小郭 19.0 8500.0 python
小齊 22.0 15000.0 NaN
In?[43]:
                    
                      df
                      
                        .
                        
                          dropna
                          
                            (
                            
                              how
                              
                                =
                                
                                  'all'
                                  
                                    ) 
                                  
                                
                              
                            
                          
                        
                      
                    
                  
Out[43]:
? age salary work
李四 21.0 11000.0 python
小昭 23.0 9900.0 python
小郭 19.0 8500.0 python
小齊 22.0 15000.0 NaN
?

(3) 填充函數 Series/DataFrame

  • fillna()
In?[47]:
                    
                      # 對多有的空數據進行替換

                      
                        df
                        
                          .
                          
                            fillna
                            
                              (
                              
                                value
                                
                                  =
                                  
                                    'Java'
                                    
                                      ) 
                                    
                                  
                                
                              
                            
                          
                        
                      
                    
                  
Out[47]:
? age salary work
張三 Java Java Java
李四 21 11000 python
小昭 23 9900 python
小郭 19 8500 python
小齊 22 15000 Java
?

可以選擇前向填充還是后向填充

In?[49]:
                    
                      df
                      
                        .
                        
                          fillna
                          
                            (
                            
                              method
                              
                                =
                                
                                  'bfill'
                                  
                                    ) 
                                  
                                
                              
                            
                          
                        
                      
                    
                  
Out[49]:
? age salary work
張三 21.0 11000.0 python
李四 21.0 11000.0 python
小昭 23.0 9900.0 python
小郭 19.0 8500.0 python
小齊 22.0 15000.0 NaN
In?[50]:
                    
                      df
                      
                        .
                        
                          fillna
                          
                            (
                            
                              method
                              
                                =
                                
                                  'ffill'
                                  
                                    ) 
                                  
                                
                              
                            
                          
                        
                      
                    
                  
Out[50]:
? age salary work
張三 NaN NaN NaN
李四 21.0 11000.0 python
小昭 23.0 9900.0 python
小郭 19.0 8500.0 python
小齊 22.0 15000.0 python
?

對于DataFrame來說,還要選擇填充的軸axis。記住,對于DataFrame來說:

  • axis=0:index/行
  • axis=1:columns/列
In?[51]:
                    
                      #{'backfill', 'bfill', 'pad', 'ffill'

                      
                        df
                        
                          .
                          
                            fillna
                            
                              (
                              
                                method
                                
                                  =
                                  
                                    'ffill'
                                    
                                      ) 
                                    
                                  
                                
                              
                            
                          
                        
                      
                    
                  
Out[51]:
? age salary work
張三 NaN NaN NaN
李四 21.0 11000.0 python
小昭 23.0 9900.0 python
小郭 19.0 8500.0 python
小齊 22.0 15000.0 python
In?[?]:
?
?

============================================

練習7:

  1. 簡述None與NaN的區別

  2. 假設張三李四參加模擬考試,但張三因為突然想明白人生放棄了英語考試,因此記為None,請據此創建一個DataFrame,命名為ddd3

  3. 老師決定根據用數學的分數填充張三的英語成績,如何實現? 用李四的英語成績填充張三的英語成績?

============================================


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久草在线视频免费 | 美女污污视频在线观看 | 亚洲一区二区三区四区在线观看 | 91网址在线 | 一级片视频免费 | 国产网站大全 | 国产成人综合欧美精品久久 | 丁香婷婷六月天 | 91视频网 | 久操免费在线视频 | 美日韩免费视频 | 成人免费视频网站在线观看 | 亚洲性在线观看 | 久草网在线观看 | 欧美成人免费午夜全 | 超级碰碰碰视频在线观看 | 日本在线综合 | 中文字幕在线第一页 | 国产成人在线免费视频 | 伊人久久大杳蕉综合大象 | 欧美黑人激情 | 亚洲人成在线播放 | 成人毛片网站 | 久草在线观看首页 | 波多野结衣全部系列在线观看 | 日本一区二区三区不卡在线看 | 你下面好大好硬好想要 | 自拍偷拍视频网站 | 小明成人免费视频 | 五月婷婷丁香六月 | 国产在线视频网 | 99国产在线视频有精品视频 | 成人精品鲁一区一区二区 | 韩国午夜电影 | 国产精品成人国产乱一区 | 九九99国产精品视频 | 日本黄在线观看免费播放 | 久久久精 | 91精品天美精东蜜桃传媒免费 | 婷婷久久无码欧美人妻 | 国产精品福利视频手机免费观看 |