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 ):
@@ -393,9 +397,7 @@ def y_fitted(self):
393
397
def _unstack_vector (self , vec , index = None ):
394
398
if index is None :
395
399
index = self ._y_trans .index
396
- panel = LongPanel (vec .reshape ((len (vec ), 1 )), index = index ,
397
- columns = ['dummy' ])
398
-
400
+ panel = DataFrame (vec , index = index , columns = ['dummy' ])
399
401
return panel .to_panel ()['dummy' ]
400
402
401
403
def _unstack_y (self , vec ):
@@ -417,7 +419,7 @@ def _nobs(self):
417
419
def _convertDummies (dummies , mapping ):
418
420
# cleans up the names of the generated dummies
419
421
new_items = []
420
- for item in dummies .items :
422
+ for item in dummies .columns :
421
423
if not mapping :
422
424
var = str (item )
423
425
if isinstance (item , float ):
@@ -428,7 +430,7 @@ def _convertDummies(dummies, mapping):
428
430
# renames the dummies if a conversion dict is provided
429
431
new_items .append (mapping [int (item )])
430
432
431
- dummies = LongPanel (dummies .values , index = dummies .index ,
433
+ dummies = DataFrame (dummies .values , index = dummies .index ,
432
434
columns = new_items )
433
435
434
436
return dummies
@@ -748,8 +750,8 @@ def _var_beta_panel(y, x, beta, xx, rmse, cluster_axis,
748
750
columns = ['resid' ])
749
751
750
752
if cluster_axis == 1 :
751
- x = x .swapaxes ( )
752
- resid = resid .swapaxes ( )
753
+ x = x .swaplevel ( 0 , 1 ). sortlevel ( 0 )
754
+ resid = resid .swaplevel ( 0 , 1 ). sortlevel ( 0 )
753
755
754
756
m = group_agg (x .values * resid .values , x .index ._bounds ,
755
757
lambda x : np .sum (x , axis = 0 ))
0 commit comments