| 1 |  |  | import numpy as np | 
            
                                                                                                            
                            
            
                                    
            
            
                | 2 |  |  | import pandas as pd | 
            
                                                                                                            
                            
            
                                    
            
            
                | 3 |  |  | import unittest | 
            
                                                                                                            
                            
            
                                    
            
            
                | 4 |  |  | from klib.describe import _missing_vals | 
            
                                                                                                            
                            
            
                                    
            
            
                | 5 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 6 |  |  | if __name__ == '__main__': | 
            
                                                                                                            
                            
            
                                    
            
            
                | 7 |  |  |     unittest.main() | 
            
                                                                                                            
                            
            
                                    
            
            
                | 8 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 9 |  |  | data_mv = pd.DataFrame([[1, np.nan, 3, 4], | 
            
                                                                                                            
                            
            
                                    
            
            
                | 10 |  |  |                         [None, 4, 5, ], | 
            
                                                                                                            
                            
            
                                    
            
            
                | 11 |  |  |                         ['a', 'b', pd.NA, 'd'], | 
            
                                                                                                            
                            
            
                                    
            
            
                | 12 |  |  |                         [True, False, 7, pd.NaT]], | 
            
                                                                                                            
                            
            
                                    
            
            
                | 13 |  |  |                        columns=['Col1', 'Col2', 'Col3', 'Col4']) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 14 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 15 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 16 |  |  | class Test__missing_vals(unittest.TestCase): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 17 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 18 |  |  |     def test_mv_total(self): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 19 |  |  |         # Test total missing values | 
            
                                                                                                            
                            
            
                                    
            
            
                | 20 |  |  |         self.assertAlmostEqual(_missing_vals(data_mv)['mv_total'], 5) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 21 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 22 |  |  |     def test_mv_rows(self): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 23 |  |  |         # Test missing values for each row | 
            
                                                                                                            
                            
            
                                    
            
            
                | 24 |  |  |         self.assertAlmostEqual(_missing_vals(data_mv)['mv_rows'][0], 1) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 25 |  |  |         self.assertAlmostEqual(_missing_vals(data_mv)['mv_rows'][1], 2) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 26 |  |  |         self.assertAlmostEqual(_missing_vals(data_mv)['mv_rows'][2], 1) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 27 |  |  |         self.assertAlmostEqual(_missing_vals(data_mv)['mv_rows'][2], 1) | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 28 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 29 |  |  |     def test_mv_cols(self): | 
            
                                                                        
                            
            
                                    
            
            
                | 30 |  |  |         # Test missing values for each column | 
            
                                                                        
                            
            
                                    
            
            
                | 31 |  |  |         self.assertAlmostEqual(_missing_vals(data_mv)['mv_cols'][0], 1) | 
            
                                                                        
                            
            
                                    
            
            
                | 32 |  |  |         self.assertAlmostEqual(_missing_vals(data_mv)['mv_cols'][1], 1) | 
            
                                                                        
                            
            
                                    
            
            
                | 33 |  |  |         self.assertAlmostEqual(_missing_vals(data_mv)['mv_cols'][2], 1) | 
            
                                                                        
                            
            
                                    
            
            
                | 34 |  |  |         self.assertAlmostEqual(_missing_vals(data_mv)['mv_cols'][3], 2) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 35 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 36 |  |  |     def test_mv_rows_ratio(self): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 37 |  |  |         # Test missing values ratio for each row | 
            
                                                                                                            
                            
            
                                    
            
            
                | 38 |  |  |         self.assertAlmostEqual(_missing_vals(data_mv)['mv_rows_ratio'][0], 0.25) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 39 |  |  |         self.assertAlmostEqual(_missing_vals(data_mv)['mv_rows_ratio'][1], 0.5) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 40 |  |  |         self.assertAlmostEqual(_missing_vals(data_mv)['mv_rows_ratio'][2], 0.25) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 41 |  |  |         self.assertAlmostEqual(_missing_vals(data_mv)['mv_rows_ratio'][3], 0.25) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 42 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 43 |  |  |     def test_mv_cols_ratio(self): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 44 |  |  |         # Test missing values ratio for each row | 
            
                                                                                                            
                            
            
                                    
            
            
                | 45 |  |  |         self.assertAlmostEqual(_missing_vals(data_mv)['mv_cols_ratio'][0], 0.25) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 46 |  |  |         self.assertAlmostEqual(_missing_vals(data_mv)['mv_cols_ratio'][1], 0.25) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 47 |  |  |         self.assertAlmostEqual(_missing_vals(data_mv)['mv_cols_ratio'][2], 0.25) | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 48 |  |  |         self.assertAlmostEqual(_missing_vals(data_mv)['mv_cols_ratio'][3], 0.5) | 
            
                                                        
            
                                    
            
            
                | 49 |  |  |  |