#!/usr/bin/env python
# coding: utf-8
from __future__ import unicode_literals
import os
import unittest
import numpy as np
import pandas as pd
import pandas.util.testing as tm
import japandas as jpd
[docs]class TestEstat(unittest.TestCase):
[docs] def test_data_estat_error(self):
with self.assertRaises(ValueError):
# no app ID
jpd.DataReader('00200521', 'estat', appid=None)
ESTAT_KEY = os.environ['ESTAT']
with self.assertRaises(ValueError):
# blank list
jpd.DataReader([], 'estat', appid=ESTAT_KEY)
with self.assertRaises(ValueError):
# invalid type
jpd.DataReader(1, 'estat', appid=ESTAT_KEY)
[docs] def test_data_estat_list(self):
ESTAT_KEY = os.environ['ESTAT']
df = jpd.DataReader('00200521', 'estat', appid=ESTAT_KEY)
exp_columns = pd.Index(['統計表ID', '政府統計名',
'作成機関名', '提供統計名及び提供分類名',
'統計表題名及び表番号', '提供周期', '調査年月',
'公開日', '小地域属性フラグ', '統計大分野名',
'統計小分野名', '総件数', '最終更新日'],)
tm.assert_index_equal(df.columns, exp_columns)
target = df.head(n=3)
df = jpd.DataReader(target, 'estat', appid=ESTAT_KEY)
self.assertIsInstance(df, pd.DataFrame)
df = jpd.DataReader('00200523', 'estat', appid=ESTAT_KEY)
tm.assert_index_equal(df.columns, exp_columns)
[docs] def test_data_estat_list_all(self):
# 以下 すべての提供データをテスト
# http://www.e-stat.go.jp/api/api-data/
targets = ['00200521', '00200522', '00200523', '00200524', '00200531',
'00200532', '00200533', '00200541', '00200543', '00200544',
'00200545', '00200551', '00200552', '00200553', '00200561',
'00200563', '00200564', '00200565', '00200566', '00200571',
'00200572', '00200573', # '00200511', '00200502', (no data found)
'00250011']
for target in targets:
self._assert_target(target)
[docs] def test_data_estat_list_all2(self):
# Travis CI でのタイムアウトを防ぐため分割
targets = ['00350600', '00350620', '00351000', '00400001', '00400002',
'00400003', '00400004', '00400202', '00450011', '00450012',
'00450021', '00450022', '00450061', '00450071', '00450091',
'00450151', '00500201', '00500209', '00500215', '00500216',
'00500217', '00500225', '00550010', '00550020', '00550030',
'00550040', '00550100', '00550200', '00550210', '00551020',
'00551130', '00600330', '00600470', '00600480']
for target in targets:
self._assert_target(target)
def _assert_target(self, target):
ESTAT_KEY = os.environ['ESTAT']
df = jpd.DataReader(target, 'estat', appid=ESTAT_KEY)
exp_columns = pd.Index(['統計表ID', '政府統計名',
'作成機関名', '提供統計名及び提供分類名',
'統計表題名及び表番号', '提供周期', '調査年月',
'公開日', '小地域属性フラグ', '統計大分野名',
'統計小分野名', '総件数', '最終更新日'],)
tm.assert_index_equal(df.columns, exp_columns)
target = df.head(n=3)
df = jpd.DataReader(target, 'estat', appid=ESTAT_KEY)
self.assertIsInstance(df, pd.DataFrame)
[docs] def test_data_estat_data(self):
ESTAT_KEY = os.environ['ESTAT']
df = jpd.DataReader('0000030001', 'estat', appid=ESTAT_KEY)
exp = pd.DataFrame({'value': [117060396, 89187409, 27872987, 5575989, 1523907],
'全国都道府県030001': ['全国', '全国市部', '全国郡部', '北海道', '青森県'],
'全域・集中の別030002': ['全域'] * 5,
'年齢5歳階級A030002': ['総数'] * 5,
'男女A030001': ['男女総数'] * 5},
index=pd.DatetimeIndex(['1980-01-01'] * 5, name='時間軸(年次)'))
tm.assert_frame_equal(df.head(), exp)
df = jpd.DataReader(['0000030001', '0000030002'], 'estat', appid=ESTAT_KEY)
self.assertIsInstance(df, pd.DataFrame)
df = jpd.DataReader("0002180001", 'estat', appid=ESTAT_KEY)
exp = pd.DataFrame({'value': [445007, 194243, 199623, 203464, 190711],
'全国・都道府県・大都市': ['全国'] * 5,
'性別': ['総数'] * 5,
'表章項目': ['都道府県(自都市)内移動者数'] * 5},
index=pd.DatetimeIndex(['2009-03-01', '2009-02-01', '2009-01-01',
'2008-12-01', '2008-11-01'], name='時間軸(月次)'))
tm.assert_frame_equal(df.head(), exp)
[docs] def test_data_estat_data_numeric(self):
ESTAT_KEY = os.environ['ESTAT']
df = jpd.DataReader('0003109612', 'estat', appid=ESTAT_KEY)
self.assertEqual(df['value'].dtype, np.float64)
[docs] def test_data_limit(self):
ESTAT_KEY = os.environ['ESTAT']
df = jpd.DataReader('0003280394', 'estat', appid=ESTAT_KEY)
assert len(df) == 100000
self.assertEqual(df['value'].dtype, np.float64)
df = jpd.DataReader('0003280394', 'estat', appid=ESTAT_KEY,
limit=20)
assert len(df) == 20
self.assertEqual(df['value'].dtype, np.float64)
[docs] def test_data_position(self):
ESTAT_KEY = os.environ['ESTAT']
df = jpd.DataReader('0003280394', 'estat', appid=ESTAT_KEY, limit=100)
assert len(df) == 100
self.assertEqual(df['value'].dtype, np.float64)
df2 = jpd.DataReader('0003280394', 'estat', appid=ESTAT_KEY,
startPosition=11, limit=90)
tm.assert_frame_equal(df.iloc[10:], df2)
self.assertEqual(df2['value'].dtype, np.float64)
if __name__ == '__main__':
import nose
nose.runmodule(argv=[__file__, '-vvs', '-x', '--pdb', '--pdb-failure'],
exit=False)