03. Dummy Data Wrapper

Dummy data wrapper

Warning

Non sense!

Out:

Features:
             0         1         2         3         4         5         6
0          NaN       NaN       NaN       NaN       NaN       NaN       NaN
1     0.431650       NaN  1.494026       NaN       NaN       NaN       NaN
2          NaN       NaN  1.276648       NaN       NaN       NaN       NaN
3    -2.151832 -0.911728       NaN       NaN       NaN       NaN       NaN
4    -0.344984       NaN  0.567442       NaN       NaN  0.046889       NaN
...        ...       ...       ...       ...       ...       ...       ...
1995  0.114631       NaN  0.499642       NaN       NaN       NaN  0.842285
1996       NaN       NaN -1.025954 -0.457557       NaN       NaN  0.099235
1997       NaN       NaN -0.011799       NaN       NaN  1.386205  0.941873
1998       NaN       NaN       NaN       NaN       NaN       NaN       NaN
1999  0.321509  0.865638  0.410198       NaN -0.496402       NaN       NaN

[2000 rows x 7 columns]

SimpleImputer()
             0         1         2         3         4         5         6
0     0.008945 -0.075735  0.014617  0.034992 -0.017233 -0.099410  0.053082
1     0.431650 -0.075735  1.494026  0.034992 -0.017233 -0.099410  0.053082
2     0.008945 -0.075735  1.276648  0.034992 -0.017233 -0.099410  0.053082
3    -2.151832 -0.911728  0.014617  0.034992 -0.017233 -0.099410  0.053082
4    -0.344984 -0.075735  0.567442  0.034992 -0.017233  0.046889  0.053082
...        ...       ...       ...       ...       ...       ...       ...
1995  0.114631 -0.075735  0.499642  0.034992 -0.017233 -0.099410  0.842285
1996  0.008945 -0.075735 -1.025954 -0.457557 -0.017233 -0.099410  0.099235
1997  0.008945 -0.075735 -0.011799  0.034992 -0.017233  1.386205  0.941873
1998  0.008945 -0.075735  0.014617  0.034992 -0.017233 -0.099410  0.053082
1999  0.321509  0.865638  0.410198  0.034992 -0.496402 -0.099410  0.053082

[2000 rows x 7 columns]

SimpleImputer(strategy='median')
             0         1         2         3         4         5         6
0     0.032924 -0.104899  0.022030 -0.017016 -0.057768 -0.083552  0.073601
1     0.431650 -0.104899  1.494026 -0.017016 -0.057768 -0.083552  0.073601
2     0.032924 -0.104899  1.276648 -0.017016 -0.057768 -0.083552  0.073601
3    -2.151832 -0.911728  0.022030 -0.017016 -0.057768 -0.083552  0.073601
4    -0.344984 -0.104899  0.567442 -0.017016 -0.057768  0.046889  0.073601
...        ...       ...       ...       ...       ...       ...       ...
1995  0.114631 -0.104899  0.499642 -0.017016 -0.057768 -0.083552  0.842285
1996  0.032924 -0.104899 -1.025954 -0.457557 -0.057768 -0.083552  0.099235
1997  0.032924 -0.104899 -0.011799 -0.017016 -0.057768  1.386205  0.941873
1998  0.032924 -0.104899  0.022030 -0.017016 -0.057768 -0.083552  0.073601
1999  0.321509  0.865638  0.410198 -0.017016 -0.496402 -0.083552  0.073601

[2000 rows x 7 columns]

StandardScaler()
             0         1         2         3         4         5         6
0          NaN       NaN       NaN       NaN       NaN       NaN       NaN
1     0.438394       NaN  1.486817       NaN       NaN       NaN       NaN
2          NaN       NaN  1.268350       NaN       NaN       NaN       NaN
3    -2.240981 -0.890658       NaN       NaN       NaN       NaN       NaN
4    -0.367067       NaN  0.555593       NaN       NaN  0.156534       NaN
...        ...       ...       ...       ...       ...       ...       ...
1995  0.109608       NaN  0.487454       NaN       NaN       NaN  0.805312
1996       NaN       NaN -1.045781 -0.485475       NaN       NaN  0.047095
1997       NaN       NaN -0.026548       NaN       NaN  1.589554  0.906933
1998       NaN       NaN       NaN       NaN       NaN       NaN       NaN
1999  0.324165  1.002927  0.397562       NaN -0.461021       NaN       NaN

[2000 rows x 7 columns]

MinMaxScaler()
             0         1         2         3         4         5         6
0          NaN       NaN       NaN       NaN       NaN       NaN       NaN
1     0.618881       NaN  0.672468       NaN       NaN       NaN       NaN
2          NaN       NaN  0.639448       NaN       NaN       NaN       NaN
3     0.158435  0.342128       NaN       NaN       NaN       NaN       NaN
4     0.480464       NaN  0.531720       NaN       NaN  0.555894       NaN
...        ...       ...       ...       ...       ...       ...       ...
1995  0.562380       NaN  0.521421       NaN       NaN       NaN  0.614038
1996       NaN       NaN  0.289683  0.431244       NaN       NaN  0.477975
1997       NaN       NaN  0.443733       NaN       NaN  0.772594  0.632273
1998       NaN       NaN       NaN       NaN       NaN       NaN       NaN
1999  0.599251  0.673000  0.507834       NaN  0.497717       NaN       NaN

[2000 rows x 7 columns]

RobustScaler()
             0         1         2         3         4         5         6
0          NaN       NaN       NaN       NaN       NaN       NaN       NaN
1     0.309086       NaN  1.204426       NaN       NaN       NaN       NaN
2          NaN       NaN  1.026561       NaN       NaN       NaN       NaN
3    -1.693589 -0.611088       NaN       NaN       NaN       NaN       NaN
4    -0.292949       NaN  0.446270       NaN       NaN  0.101739       NaN
...        ...       ...       ...       ...       ...       ...       ...
1995  0.063337       NaN  0.390795       NaN       NaN       NaN  0.568552
1996       NaN       NaN -0.857488 -0.327481       NaN       NaN  0.018960
1997       NaN       NaN -0.027680       NaN       NaN  1.146353  0.642211
1998       NaN       NaN       NaN       NaN       NaN       NaN       NaN
1999  0.223706  0.735080  0.317609       NaN -0.287626       NaN       NaN

[2000 rows x 7 columns]

 11 # Libraries
 12 import pandas as pd
 13
 14 # Libraries specific
 15 from sklearn.preprocessing import StandardScaler
 16 from sklearn.preprocessing import MinMaxScaler
 17 from sklearn.preprocessing import RobustScaler
 18 from sklearn.preprocessing import Normalizer
 19 from sklearn.impute import SimpleImputer
 20
 21
 22 class DataframeXYWrapper():
 23
 24     def __init__(self, dataframe, X_columns, y_columns):
 25         """
 26         """
 27         self.dataframe = dataframe
 28         self.X_cols = X_columns
 29         self.y_cols = y_columns
 30
 31     def get_X(self):
 32         """Return..."""
 33         return self.dataframe[self.X_cols]
 34
 35     def get_y(self):
 36         """Return..."""
 37         return self.dataframe[self.y_cols]
 38
 39     def get_X_y(self):
 40         """Return...
 41         """
 42         return self.dataframe[self.X_cols + self.y_cols]
 43
 44     def apply(self, obj, func, requires_X=False,
 45                                requires_y=False,
 46                                argname_X='X',
 47                                argname_y='y',
 48                                inplace=True,
 49                                return_obj=True,
 50                                **kwargs):
 51         """
 52         """
 53         if requires_X:
 54             kwargs[argname_X] = self.get_X()
 55         if requires_y:
 56             kwargs[argname_y] = self.get_y()
 57
 58         # Output
 59         out = getattr(obj, func)(**kwargs)
 60
 61         # Inplace
 62         if inplace:
 63             self.dataframe[self.X_cols] = out
 64
 65         # Return
 66         if return_obj:
 67             return obj, out
 68         return out
 69
 70
 71
 72 # --------------------------------------------------
 73 # Main
 74 # --------------------------------------------------
 75 # Libraries
 76 import numpy as np
 77
 78 N = 2000 # number of observations
 79 F = 7    # number of features
 80 P = 70   # percent of cells with nan
 81
 82 # Create dataset
 83 X = np.random.randn(N, F)
 84 y = (np.random.rand(N) > 0.1).astype(int)
 85
 86 # Include NaN
 87 idxs = np.random.choice(X.size, int(N*F*P/100), replace=False)
 88 X.ravel()[idxs] = np.nan
 89
 90 # Create dataframe
 91 dataframe = pd.DataFrame(X)
 92 dataframe['y'] = y
 93
 94 # Create wrapper
 95 wrapper = DataframeXYWrapper(dataframe=dataframe,
 96                              X_columns=list(range(F)),
 97                              y_columns=['y'])
 98 # Show
 99 print("Features:")
100 print(wrapper.get_X())
101
102 # ------------------------------
103 # Imputers
104 # ------------------------------
105 # Loop
106 for name, imputer in [
107             ('mean', SimpleImputer(strategy='mean')),
108             ('median', SimpleImputer(strategy='median'))]:
109     # Apply imputer
110     obj, out = wrapper.apply(imputer, 'fit_transform',
111             requires_X=True, inplace=False)
112     # Display
113     print("\n%s" % imputer)
114     print(pd.DataFrame(out))
115
116
117 # ------------------------------
118 # Scalers
119 # ------------------------------
120 # Loop
121 for name, scaler in [('std', StandardScaler()),
122                      ('mmx', MinMaxScaler()),
123                      ('rbs', RobustScaler())]:
124     # Apply scaler
125     obj, out = wrapper.apply(scaler, 'fit_transform',
126             requires_X=True, inplace=False)
127     # Display
128     print("\n%s" % scaler)
129     print(pd.DataFrame(out))

Total running time of the script: ( 0 minutes 0.075 seconds)

Gallery generated by Sphinx-Gallery