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  0.015180
1     0.580734 NaN       NaN  1.564946       NaN       NaN  0.779736
2          NaN NaN  0.396652       NaN  0.776439       NaN       NaN
3          NaN NaN       NaN -0.585224 -0.640082       NaN       NaN
4          NaN NaN       NaN       NaN       NaN -0.506054       NaN
...        ...  ..       ...       ...       ...       ...       ...
1995       NaN NaN       NaN       NaN       NaN       NaN -0.135976
1996  1.094169 NaN -0.267562 -0.422022  0.369266 -0.326363       NaN
1997  0.092511 NaN       NaN       NaN       NaN  0.516817       NaN
1998       NaN NaN -1.935702       NaN       NaN       NaN       NaN
1999       NaN NaN       NaN       NaN -0.419821 -1.231021       NaN

[2000 rows x 7 columns]

SimpleImputer()
             0         1         2         3         4         5         6
0     0.108353  0.041668 -0.073210  0.008829  0.031561  0.004044  0.015180
1     0.580734  0.041668 -0.073210  1.564946  0.031561  0.004044  0.779736
2     0.108353  0.041668  0.396652  0.008829  0.776439  0.004044  0.022744
3     0.108353  0.041668 -0.073210 -0.585224 -0.640082  0.004044  0.022744
4     0.108353  0.041668 -0.073210  0.008829  0.031561 -0.506054  0.022744
...        ...       ...       ...       ...       ...       ...       ...
1995  0.108353  0.041668 -0.073210  0.008829  0.031561  0.004044 -0.135976
1996  1.094169  0.041668 -0.267562 -0.422022  0.369266 -0.326363  0.022744
1997  0.092511  0.041668 -0.073210  0.008829  0.031561  0.516817  0.022744
1998  0.108353  0.041668 -1.935702  0.008829  0.031561  0.004044  0.022744
1999  0.108353  0.041668 -0.073210  0.008829 -0.419821 -1.231021  0.022744

[2000 rows x 7 columns]

SimpleImputer(strategy='median')
             0         1         2         3         4         5         6
0     0.082040  0.001391 -0.048016  0.028946  0.034275  0.030538  0.015180
1     0.580734  0.001391 -0.048016  1.564946  0.034275  0.030538  0.779736
2     0.082040  0.001391  0.396652  0.028946  0.776439  0.030538  0.070572
3     0.082040  0.001391 -0.048016 -0.585224 -0.640082  0.030538  0.070572
4     0.082040  0.001391 -0.048016  0.028946  0.034275 -0.506054  0.070572
...        ...       ...       ...       ...       ...       ...       ...
1995  0.082040  0.001391 -0.048016  0.028946  0.034275  0.030538 -0.135976
1996  1.094169  0.001391 -0.267562 -0.422022  0.369266 -0.326363  0.070572
1997  0.092511  0.001391 -0.048016  0.028946  0.034275  0.516817  0.070572
1998  0.082040  0.001391 -1.935702  0.028946  0.034275  0.030538  0.070572
1999  0.082040  0.001391 -0.048016  0.028946 -0.419821 -1.231021  0.070572

[2000 rows x 7 columns]

StandardScaler()
             0   1         2         3         4         5         6
0          NaN NaN       NaN       NaN       NaN       NaN -0.007728
1     0.484713 NaN       NaN  1.541448       NaN       NaN  0.773445
2          NaN NaN  0.467491       NaN  0.761388       NaN       NaN
3          NaN NaN       NaN -0.588452 -0.686530       NaN       NaN
4          NaN NaN       NaN       NaN       NaN -0.535019       NaN
...        ...  ..       ...       ...       ...       ...       ...
1995       NaN NaN       NaN       NaN       NaN       NaN -0.162170
1996  1.011552 NaN -0.193371 -0.426789  0.345191 -0.346549       NaN
1997 -0.016255 NaN       NaN       NaN       NaN  0.537824       NaN
1998       NaN NaN -1.853094       NaN       NaN       NaN       NaN
1999       NaN NaN       NaN       NaN -0.461387 -1.295403       NaN

[2000 rows x 7 columns]

MinMaxScaler()
             0   1         2         3         4         5         6
0          NaN NaN       NaN       NaN       NaN       NaN  0.506827
1     0.487361 NaN       NaN  0.774370       NaN       NaN  0.637657
2          NaN NaN  0.654644       NaN  0.597190       NaN       NaN
3          NaN NaN       NaN  0.418625  0.346324       NaN       NaN
4          NaN NaN       NaN       NaN       NaN  0.355317       NaN
...        ...  ..       ...       ...       ...       ...       ...
1995       NaN NaN       NaN       NaN       NaN       NaN  0.480962
1996  0.564685 NaN  0.562043  0.445627  0.525080  0.380377       NaN
1997  0.413834 NaN       NaN       NaN       NaN  0.497968       NaN
1998       NaN NaN  0.329481       NaN       NaN       NaN       NaN
1999       NaN NaN       NaN       NaN  0.385333  0.254212       NaN

[2000 rows x 7 columns]

RobustScaler()
             0   1         2         3         4         5         6
0          NaN NaN       NaN       NaN       NaN       NaN -0.041746
1     0.399006 NaN       NaN  1.160497       NaN       NaN  0.534462
2          NaN NaN  0.329547       NaN  0.566090       NaN       NaN
3          NaN NaN       NaN -0.464025 -0.514371       NaN       NaN
4          NaN NaN       NaN       NaN       NaN -0.430930       NaN
...        ...  ..       ...       ...       ...       ...       ...
1995       NaN NaN       NaN       NaN       NaN       NaN -0.155665
1996  0.809806 NaN -0.162707 -0.340721  0.255517 -0.286623       NaN
1997  0.008378 NaN       NaN       NaN       NaN  0.390524       NaN
1998       NaN NaN -1.398980       NaN       NaN       NaN       NaN
1999       NaN NaN       NaN       NaN -0.346365 -1.013141       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.063 seconds)

Gallery generated by Sphinx-Gallery