In [1]:
import numpy as np
import pandas as pd

In [2]:
import sys
sys.path.insert(0, '/Users/wbcha/Desktop/project/Imputer.py/src/imputer/')

In [3]:
from imputer import Imputer

Load data


In [4]:
data = pd.read_csv("/Users/wbcha/Downloads/train", header=None)
data.head(2)


Out[4]:
0 1 2 3 4 5 6 7 8 9 10 11 12 13
0 12.414 92.0 20.0 NaN 65.0 14.0 68.0 101.0 59.0 692.01 NaN NaN NaN 0
1 NaN 88.0 NaN NaN 61.0 NaN 49.0 101.0 59.0 0.00 0.0 4.138 98.0 0

In [5]:
impute = Imputer()

Impute first column


In [6]:
imputed_column_0 = impute.knn(data, 0, k=10)

Impute second column


In [7]:
imputed_column_01 = impute.knn(imputed_column_0, 1, k=10)

Impute a categorical column


In [9]:
impute_column_8 = impute.knn(X=data,column=8,k=10,is_categorical=True)

In [12]:
cols=['age','work_class','education','num_edu_years','marital_status','occupation',
      'relationship','race','sex','income_from_invest','losses_from_invest',
      'working_hour_week','native_country','label']
data = pd.read_csv("/Users/wbcha/Downloads/train",names=cols,header=None)
data.head(2)


Out[12]:
age work_class education num_edu_years marital_status occupation relationship race sex income_from_invest losses_from_invest working_hour_week native_country label
0 12.414 92.0 20.0 NaN 65.0 14.0 68.0 101.0 59.0 692.01 NaN NaN NaN 0
1 NaN 88.0 NaN NaN 61.0 NaN 49.0 101.0 59.0 0.00 0.0 4.138 98.0 0

In [14]:
impute_column_0 = impute.knn(data,'age')

In [15]:
impute_column_0


Out[15]:
age work_class education num_edu_years marital_status occupation relationship race sex income_from_invest losses_from_invest working_hour_week native_country label
0 12.41400 92.0 20.0 NaN 65.0 14.0 68.0 101.0 59.0 692.01 NaN NaN NaN 0
1 16.87047 88.0 NaN NaN 61.0 NaN 49.0 101.0 59.0 0.00 0.00 4.1380 98.0 0
2 12.09600 80.0 42.0 NaN 28.0 44.0 68.0 101.0 NaN 0.00 0.00 12.7320 NaN 0
3 14.32396 80.0 3.0 NaN NaN 44.0 49.0 NaN 59.0 NaN 0.00 12.7320 98.0 0
4 8.91270 80.0 NaN 4.1380 61.0 82.0 103.0 21.0 NaN NaN 0.00 12.7320 27.0 0
5 11.77700 NaN 63.0 4.4563 NaN NaN 103.0 101.0 37.0 0.00 0.00 12.7320 98.0 0
6 15.59700 80.0 8.0 1.5915 NaN NaN 68.0 21.0 37.0 0.00 0.00 NaN 54.0 0
7 7.32110 80.0 20.0 4.1380 65.0 14.0 73.0 101.0 NaN 0.00 0.00 9.5493 98.0 0
8 10.18600 80.0 18.0 3.8197 65.0 NaN 68.0 21.0 59.0 0.00 0.00 15.9150 98.0 0
9 10.82300 80.0 7.0 1.2732 61.0 NaN 49.0 15.0 NaN 0.00 0.00 14.3240 64.0 0
10 7.95770 88.0 42.0 2.8648 65.0 NaN 73.0 101.0 NaN 0.00 0.00 11.1410 98.0 0
11 10.18600 80.0 NaN NaN 65.0 58.0 99.0 NaN NaN 0.00 0.00 12.7320 98.0 0
12 12.09600 NaN 3.0 2.2282 61.0 NaN NaN 101.0 59.0 0.00 0.00 15.9150 98.0 0
13 17.18900 NaN 42.0 2.8648 89.0 71.0 99.0 21.0 37.0 NaN 0.00 6.3662 NaN 0
14 11.14100 36.0 8.0 1.5915 61.0 35.0 49.0 NaN 59.0 0.00 0.00 12.7320 98.0 0
15 13.68700 80.0 3.0 NaN 61.0 96.0 49.0 101.0 59.0 0.00 649.99 12.7320 NaN 0
16 18.78000 NaN 42.0 2.8648 28.0 94.0 99.0 101.0 37.0 0.00 0.00 12.7320 98.0 0
17 9.26277 80.0 NaN NaN 65.0 26.0 73.0 101.0 59.0 0.00 0.00 12.7320 98.0 0
18 10.50421 NaN 42.0 NaN 28.0 34.0 68.0 101.0 59.0 0.00 0.00 25.4650 98.0 0
19 10.12225 NaN NaN 2.8648 61.0 26.0 NaN 101.0 59.0 0.00 NaN 12.7320 98.0 0
20 7.32110 NaN 18.0 3.8197 65.0 83.0 68.0 101.0 59.0 0.00 NaN 16.5520 98.0 0
21 11.33182 NaN 90.0 3.1831 NaN 85.0 73.0 21.0 59.0 NaN NaN 14.0060 98.0 0
22 14.32400 80.0 20.0 NaN 28.0 34.0 73.0 101.0 NaN 0.00 448.18 12.7320 98.0 0
23 9.54930 36.0 NaN NaN 61.0 NaN 73.0 101.0 59.0 NaN 0.00 12.7320 98.0 0
24 7.00280 NaN 90.0 3.1831 61.0 71.0 49.0 NaN 59.0 0.00 0.00 4.7746 NaN 0
25 15.27900 NaN 3.0 2.2282 65.0 58.0 99.0 101.0 59.0 0.00 0.00 NaN 84.0 0
26 8.37149 80.0 90.0 3.1831 NaN 58.0 73.0 NaN 59.0 0.00 0.00 12.7320 98.0 0
27 6.04790 80.0 42.0 2.8648 60.0 NaN NaN 101.0 37.0 0.00 NaN 7.9577 98.0 0
28 15.27900 88.0 18.0 3.8197 61.0 82.0 NaN 101.0 59.0 0.00 0.00 12.7320 98.0 0
29 9.07181 80.0 8.0 1.5915 61.0 58.0 NaN 101.0 59.0 0.00 NaN 13.6870 NaN 0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
10470 12.41400 80.0 NaN 4.1380 61.0 34.0 49.0 101.0 59.0 0.00 0.00 12.7320 NaN 1
10471 15.27900 NaN 42.0 2.8648 61.0 14.0 103.0 101.0 37.0 0.00 0.00 12.7320 NaN 1
10472 16.23400 80.0 90.0 3.1831 28.0 26.0 68.0 101.0 59.0 0.00 0.00 NaN NaN 1
10473 12.92334 87.0 20.0 4.1380 61.0 NaN 49.0 101.0 59.0 0.00 0.00 15.9150 98.0 1
10474 11.96840 88.0 NaN 4.1380 61.0 34.0 49.0 101.0 59.0 0.00 0.00 12.7320 53.0 1
10475 7.63940 87.0 20.0 4.1380 61.0 34.0 49.0 101.0 59.0 0.00 0.00 NaN NaN 1
10476 20.05400 87.0 NaN 4.1380 61.0 35.0 49.0 101.0 59.0 NaN 0.00 12.7320 98.0 1
10477 8.91270 57.0 20.0 4.1380 61.0 44.0 49.0 101.0 59.0 NaN NaN NaN NaN 1
10478 16.23400 36.0 NaN NaN 61.0 82.0 49.0 101.0 59.0 0.00 0.00 15.9150 NaN 1
10479 15.27900 88.0 20.0 4.1380 62.0 85.0 NaN 101.0 59.0 NaN 0.00 NaN 98.0 1
10480 20.69000 80.0 81.0 4.7746 61.0 82.0 49.0 101.0 59.0 6382.40 0.00 19.0990 98.0 1
10481 16.23400 88.0 90.0 3.1831 28.0 26.0 68.0 NaN 59.0 0.00 0.00 2.5465 84.0 1
10482 15.59700 80.0 63.0 4.4563 61.0 34.0 49.0 101.0 59.0 0.00 0.00 14.3240 98.0 1
10483 11.45900 80.0 20.0 4.1380 61.0 85.0 49.0 101.0 NaN 0.00 605.43 14.3240 98.0 1
10484 20.05400 80.0 3.0 2.2282 61.0 NaN 49.0 101.0 59.0 1396.10 0.00 NaN 98.0 1
10485 17.82500 80.0 NaN 3.1831 61.0 35.0 49.0 101.0 59.0 NaN 0.00 19.0990 98.0 1
10486 12.41400 80.0 NaN 4.4563 61.0 34.0 NaN NaN 59.0 0.00 0.00 15.9150 NaN 1
10487 13.36900 87.0 20.0 4.1380 61.0 82.0 49.0 101.0 NaN 0.00 629.30 12.7320 98.0 1
10488 16.87000 NaN NaN 2.8648 61.0 NaN 49.0 101.0 59.0 0.00 0.00 NaN 98.0 1
10489 8.59440 80.0 42.0 NaN 61.0 82.0 49.0 NaN 59.0 0.00 NaN 14.3240 NaN 1
10490 15.27900 57.0 63.0 4.4563 61.0 82.0 49.0 101.0 59.0 0.00 0.00 NaN 98.0 1
10491 13.46443 NaN 90.0 3.1831 61.0 26.0 49.0 101.0 NaN 0.00 0.00 12.7320 98.0 1
10492 15.59700 80.0 42.0 2.8648 NaN 34.0 49.0 NaN 59.0 2447.20 0.00 17.5070 NaN 1
10493 11.33185 88.0 6.0 NaN 61.0 34.0 49.0 101.0 NaN 0.00 600.65 21.3270 98.0 1
10494 9.23100 80.0 20.0 4.1380 65.0 34.0 NaN NaN 37.0 0.00 718.74 NaN 98.0 1
10495 14.92871 80.0 42.0 NaN 61.0 NaN 49.0 101.0 59.0 0.00 0.00 14.3240 98.0 1
10496 11.14100 NaN 90.0 3.1831 61.0 NaN 103.0 101.0 37.0 2447.20 0.00 6.3662 98.0 1
10497 11.77700 NaN 42.0 2.8648 61.0 26.0 49.0 101.0 59.0 0.00 0.00 12.7320 NaN 1
10498 8.27610 80.0 20.0 4.1380 NaN NaN NaN NaN NaN 0.00 NaN 12.7320 NaN 1
10499 12.12756 80.0 20.0 NaN 61.0 34.0 49.0 NaN 59.0 0.00 0.00 15.9150 98.0 1

10500 rows × 14 columns


In [ ]: