Exemple #1
0
def test_count(data):
    xpd = PanelData(data.x)
    xpd.drop(xpd.isnull)
    entity_mean = xpd.count("entity")
    expected = xpd.dataframe.groupby(level=0).count()
    expected = expected.loc[xpd.entities]
    expected.columns.name = None
    expected = expected.astype(np.int64)
    assert_frame_equal(entity_mean, expected)

    time_mean = xpd.count("time")
    expected = xpd.dataframe.groupby(level=1).count()
    expected = expected.loc[xpd.time]
    expected.columns.name = None
    expected = expected.astype(np.int64)
    assert_frame_equal(time_mean, expected)
Exemple #2
0
$$

dfp.shape

* 変数の数:4(列にある変数)
* 期間数:3(年)
* 観察単位の数:3(国)

---
データセットには欠損値がある場合がある。観察単位数が$N$で期間数が$T$の場合,観測値の数は$n=N\times T$となるが,次の2つを区別する。
* balanced panel data:$n=N\times T$(観察単位に対して全ての期間の全ての変数に欠損値がない)
* unbalanced panel data:$n<N\times T$(欠損値がある)

balanced か unbalancedかは以下のコードで確認できる。まず,メソッド`count()`を使う。

dfp.count()

観察単位(国)に対して,それぞれの変数に欠損値ではない観測値がいくつ存在するかを`DataFrame`として返す。期間数は3なので,3より低い数字があれば欠損値の存在を表す。例えば,Australiaの`inv`には欠損値がある。

次のコードは,欠損値がある場合には`True`を返す。ここで`nobs`は期間数(この場合3)を返す属性である。

dfp.count() == dfp.nobs

`all()`は,列に対して全ての要素が`True`の場合のみ`True`を返すので,これを使い確認できる。

(dfp.count() == dfp.nobs).all()

`( )`はその中を先に評価する,という意味(数学と同じ)。変数が多い場合,`all()`を2回使うと全ての変数に対して評価するので便利である。

(dfp.count() == dfp.nobs).all().all()