10
10
11
11
import numpy as np
12
12
13
- from pandas .core .panel import Panel , LongPanel
13
+ from pandas .core .panel import Panel
14
14
from pandas .core .frame import DataFrame
15
15
from pandas .core .series import Series
16
16
from pandas .core .sparse import SparsePanel
@@ -57,7 +57,7 @@ def log(self, msg):
57
57
print msg
58
58
59
59
def _prepare_data (self ):
60
- """Cleans and converts input data into LongPanel classes.
60
+ """Cleans and stacks input data into DataFrame objects
61
61
62
62
If time effects is True, then we turn off intercepts and omit an item
63
63
from every (entity and x) fixed effect.
@@ -77,8 +77,8 @@ def _prepare_data(self):
77
77
x_filtered = self ._add_dummies (x_filtered , cat_mapping )
78
78
79
79
if self ._x_effects :
80
- x = x .filter ( x . items - self ._x_effects )
81
- x_filtered = x_filtered .filter ( x_filtered . items - self ._x_effects )
80
+ x = x .drop ( self ._x_effects , axis = 1 )
81
+ x_filtered = x_filtered .drop ( self ._x_effects , axis = 1 )
82
82
83
83
if self ._time_effects :
84
84
x_regressor = x .sub (x .mean (level = 1 ), level = 1 )
@@ -115,7 +115,7 @@ def _filter_data(self):
115
115
data = self ._x_orig
116
116
cat_mapping = {}
117
117
118
- if isinstance (data , LongPanel ):
118
+ if isinstance (data , DataFrame ):
119
119
data = data .to_panel ()
120
120
else :
121
121
if isinstance (data , Panel ):
@@ -208,26 +208,28 @@ def _add_entity_effects(self, panel):
208
208
-------
209
209
LongPanel
210
210
"""
211
+ from pandas .core .panel import make_axis_dummies
212
+
211
213
if not self ._entity_effects :
212
214
return panel
213
215
214
216
self .log ('-- Adding entity fixed effect dummies' )
215
217
216
- dummies = panel . get_axis_dummies ( axis = 'minor' )
218
+ dummies = make_axis_dummies ( panel , 'minor' )
217
219
218
220
if not self ._use_all_dummies :
219
221
if 'entity' in self ._dropped_dummies :
220
222
to_exclude = str (self ._dropped_dummies .get ('entity' ))
221
223
else :
222
- to_exclude = dummies .items [0 ]
224
+ to_exclude = dummies .columns [0 ]
223
225
224
- if to_exclude not in dummies .items :
226
+ if to_exclude not in dummies .columns :
225
227
raise Exception ('%s not in %s' % (to_exclude ,
226
- dummies .items ))
228
+ dummies .columns ))
227
229
228
230
self .log ('-- Excluding dummy for entity: %s' % to_exclude )
229
231
230
- dummies = dummies .filter (dummies .items - [to_exclude ])
232
+ dummies = dummies .filter (dummies .columns - [to_exclude ])
231
233
232
234
dummies = dummies .add_prefix ('FE_' )
233
235
panel = panel .join (dummies )
@@ -242,6 +244,8 @@ def _add_categorical_dummies(self, panel, cat_mappings):
242
244
-------
243
245
LongPanel
244
246
"""
247
+ from pandas .core .panel import make_dummies
248
+
245
249
if not self ._x_effects :
246
250
return panel
247
251
@@ -250,7 +254,7 @@ def _add_categorical_dummies(self, panel, cat_mappings):
250
254
for effect in self ._x_effects :
251
255
self .log ('-- Adding fixed effect dummies for %s' % effect )
252
256
253
- dummies = panel . get_dummies ( effect )
257
+ dummies = make_dummies ( panel , effect )
254
258
255
259
val_map = cat_mappings .get (effect )
256
260
if val_map :
@@ -263,15 +267,15 @@ def _add_categorical_dummies(self, panel, cat_mappings):
263
267
if val_map :
264
268
mapped_name = val_map [to_exclude ]
265
269
else :
266
- to_exclude = mapped_name = dummies .items [0 ]
270
+ to_exclude = mapped_name = dummies .columns [0 ]
267
271
268
- if mapped_name not in dummies .items : # pragma: no cover
272
+ if mapped_name not in dummies .columns : # pragma: no cover
269
273
raise Exception ('%s not in %s' % (to_exclude ,
270
- dummies .items ))
274
+ dummies .columns ))
271
275
272
276
self .log ('-- Excluding dummy for %s: %s' % (effect , to_exclude ))
273
277
274
- dummies = dummies .filter (dummies .items - [mapped_name ])
278
+ dummies = dummies .filter (dummies .columns - [mapped_name ])
275
279
dropped_dummy = True
276
280
277
281
dummies = _convertDummies (dummies , cat_mappings .get (effect ))
@@ -301,7 +305,7 @@ def _beta_raw(self):
301
305
302
306
@cache_readonly
303
307
def beta (self ):
304
- return Series (self ._beta_raw , index = self ._x .items )
308
+ return Series (self ._beta_raw , index = self ._x .columns )
305
309
306
310
@cache_readonly
307
311
def _df_model_raw (self ):
@@ -402,9 +406,7 @@ def y_fitted(self):
402
406
def _unstack_vector (self , vec , index = None ):
403
407
if index is None :
404
408
index = self ._y_trans .index
405
- panel = LongPanel (vec .reshape ((len (vec ), 1 )), index = index ,
406
- columns = ['dummy' ])
407
-
409
+ panel = DataFrame (vec , index = index , columns = ['dummy' ])
408
410
return panel .to_panel ()['dummy' ]
409
411
410
412
def _unstack_y (self , vec ):
@@ -426,7 +428,7 @@ def _nobs(self):
426
428
def _convertDummies (dummies , mapping ):
427
429
# cleans up the names of the generated dummies
428
430
new_items = []
429
- for item in dummies .items :
431
+ for item in dummies .columns :
430
432
if not mapping :
431
433
var = str (item )
432
434
if isinstance (item , float ):
@@ -437,7 +439,7 @@ def _convertDummies(dummies, mapping):
437
439
# renames the dummies if a conversion dict is provided
438
440
new_items .append (mapping [int (item )])
439
441
440
- dummies = LongPanel (dummies .values , index = dummies .index ,
442
+ dummies = DataFrame (dummies .values , index = dummies .index ,
441
443
columns = new_items )
442
444
443
445
return dummies
@@ -757,8 +759,8 @@ def _var_beta_panel(y, x, beta, xx, rmse, cluster_axis,
757
759
columns = ['resid' ])
758
760
759
761
if cluster_axis == 1 :
760
- x = x .swapaxes ( )
761
- resid = resid .swapaxes ( )
762
+ x = x .swaplevel ( 0 , 1 ). sortlevel ( 0 )
763
+ resid = resid .swaplevel ( 0 , 1 ). sortlevel ( 0 )
762
764
763
765
m = group_agg (x .values * resid .values , x .index ._bounds ,
764
766
lambda x : np .sum (x , axis = 0 ))
0 commit comments