Esempio n. 1
0
    def test_wdi_download_str(self):

        # These are the expected results, rounded (robust against
        # data revisions in the future).
        expected = {
            "NY.GDP.PCAP.CD": {
                ("Japan", "2004"): 38000.0,
                ("Japan", "2003"): 35000.0,
                ("Japan", "2002"): 32000.0,
                ("Japan", "2001"): 34000.0,
                ("Japan", "2000"): 39000.0,
            }
        }
        expected = pd.DataFrame(expected)
        expected = expected.sort_index()

        cntry_codes = "JP"
        inds = "NY.GDP.PCAP.CD"
        result = download(
            country=cntry_codes, indicator=inds, start=2000, end=2004, errors="ignore"
        )
        result = result.sort_index()
        result = np.round(result, decimals=-3)

        expected.index.names = ["country", "year"]
        tm.assert_frame_equal(result, expected)

        result = WorldBankReader(
            inds, countries=cntry_codes, start=2000, end=2004, errors="ignore"
        ).read()
        result = result.sort_index()
        result = np.round(result, decimals=-3)
        tm.assert_frame_equal(result, expected)
Esempio n. 2
0
    def test_wdi_download_str(self):

        expected = {
            'NY.GDP.PCAP.CD': {
                ('Japan', '2004'): 36441.50449394,
                ('Japan', '2003'): 33690.93772972,
                ('Japan', '2002'): 31235.58818439,
                ('Japan', '2001'): 32716.41867489,
                ('Japan', '2000'): 37299.64412913
            }
        }
        expected = pd.DataFrame(expected)
        # Round, to ignore revisions to data.
        expected = np.round(expected, decimals=-3)
        if PANDAS_0170:
            expected = expected.sort_index()
        else:
            expected = expected.sort()

        cntry_codes = 'JP'
        inds = 'NY.GDP.PCAP.CD'
        result = download(country=cntry_codes,
                          indicator=inds,
                          start=2000,
                          end=2004,
                          errors='ignore')
        if PANDAS_0170:
            result = result.sort_index()
        else:
            result = result.sort()
        result = np.round(result, decimals=-3)

        if PANDAS_0140:
            expected.index.names = ['country', 'year']
        else:
            # prior versions doesn't allow to set multiple names to MultiIndex
            # Thus overwrite it with the result
            expected.index = result.index

        tm.assert_frame_equal(result, expected)

        result = WorldBankReader(inds,
                                 countries=cntry_codes,
                                 start=2000,
                                 end=2004,
                                 errors='ignore').read()
        if PANDAS_0170:
            result = result.sort_index()
        else:
            result = result.sort()
        result = np.round(result, decimals=-3)
        tm.assert_frame_equal(result, expected)
Esempio n. 3
0
    def test_wdi_get_countries(self):
        result1 = get_countries()
        result2 = WorldBankReader().get_countries()

        session = requests.Session()
        result3 = get_countries(session=session)
        result4 = WorldBankReader(session=session).get_countries()

        for result in [result1, result2, result3, result4]:
            assert 'Zimbabwe' in list(result['name'])
            assert len(result) > 100
            assert pd.notnull(result.latitude.mean())
            assert pd.notnull(result.longitude.mean())
Esempio n. 4
0
    def test_wdi_get_indicators(self):
        result1 = get_indicators()
        result2 = WorldBankReader().get_indicators()

        session = requests.Session()
        result3 = get_indicators(session=session)
        result4 = WorldBankReader(session=session).get_indicators()

        for result in [result1, result2, result3, result4]:
            exp_col = pd.Index(['id', 'name', 'source', 'sourceNote', 'sourceOrganization', 'topics'])
            # assert_index_equal doesn't exists
            self.assertTrue(result.columns.equals(exp_col))
            self.assertTrue(len(result) > 10000)
Esempio n. 5
0
    def test_wdi_download_monthly(self):
        expected = {'COPPER': {('World', '2012M01'): 8040.47,
                               ('World', '2011M12'): 7565.48,
                               ('World', '2011M11'): 7581.02,
                               ('World', '2011M10'): 7394.19,
                               ('World', '2011M09'): 8300.14,
                               ('World', '2011M08'): 9000.76,
                               ('World', '2011M07'): 9650.46,
                               ('World', '2011M06'): 9066.85,
                               ('World', '2011M05'): 8959.90,
                               ('World', '2011M04'): 9492.79,
                               ('World', '2011M03'): 9503.36,
                               ('World', '2011M02'): 9867.60,
                               ('World', '2011M01'): 9555.70}}
        expected = pd.DataFrame(expected)
        # Round, to ignore revisions to data.
        expected = np.round(expected, decimals=-3)
        if PANDAS_0170:
            expected = expected.sort_index()
        else:
            expected = expected.sort()

        cntry_codes = 'ALL'
        inds = 'COPPER'
        result = download(country=cntry_codes, indicator=inds,
                          start=2011, end=2012, freq='M',errors='ignore')
        if PANDAS_0170:
            result = result.sort_index()
        else:
            result = result.sort()
        result = np.round(result, decimals=-3)

        if PANDAS_0140:
            expected.index.names = ['country', 'year']
        else:
            # prior versions doesn't allow to set multiple names to MultiIndex
            # Thus overwrite it with the result
            expected.index = result.index

        tm.assert_frame_equal(result, expected)

        result = WorldBankReader(inds, countries=cntry_codes,
                                 start=2011, end=2012, freq='M', errors='ignore').read()
        if PANDAS_0170:
            result = result.sort_index()
        else:
            result = result.sort()
        result = np.round(result, decimals=-3)
        tm.assert_frame_equal(result, expected)
    def test_wdi_download_monthly(self):
        expected = {
            "COPPER": {
                ("World", "2012M01"): 8040.47,
                ("World", "2011M12"): 7565.48,
                ("World", "2011M11"): 7581.02,
                ("World", "2011M10"): 7394.19,
                ("World", "2011M09"): 8300.14,
                ("World", "2011M08"): 9000.76,
                ("World", "2011M07"): 9650.46,
                ("World", "2011M06"): 9066.85,
                ("World", "2011M05"): 8959.90,
                ("World", "2011M04"): 9492.79,
                ("World", "2011M03"): 9503.36,
                ("World", "2011M02"): 9867.60,
                ("World", "2011M01"): 9555.70,
            }
        }
        expected = pd.DataFrame(expected)
        # Round, to ignore revisions to data.
        expected = np.round(expected, decimals=-3)
        expected = expected.sort_index()
        cntry_codes = "ALL"
        inds = "COPPER"
        result = download(
            country=cntry_codes,
            indicator=inds,
            start=2011,
            end=2012,
            freq="M",
            errors="ignore",
        )
        result = result.sort_index()
        result = np.round(result, decimals=-3)

        expected.index.names = ["country", "year"]
        tm.assert_frame_equal(result, expected)

        result = WorldBankReader(inds,
                                 countries=cntry_codes,
                                 start=2011,
                                 end=2012,
                                 freq="M",
                                 errors="ignore").read()
        result = result.sort_index()
        result = np.round(result, decimals=-3)
        tm.assert_frame_equal(result, expected)
Esempio n. 7
0
    def test_wdi_download_monthly(self):
        expected = {
            'COPPER': {
                ('World', '2012M01'): 8040.47,
                ('World', '2011M12'): 7565.48,
                ('World', '2011M11'): 7581.02,
                ('World', '2011M10'): 7394.19,
                ('World', '2011M09'): 8300.14,
                ('World', '2011M08'): 9000.76,
                ('World', '2011M07'): 9650.46,
                ('World', '2011M06'): 9066.85,
                ('World', '2011M05'): 8959.90,
                ('World', '2011M04'): 9492.79,
                ('World', '2011M03'): 9503.36,
                ('World', '2011M02'): 9867.60,
                ('World', '2011M01'): 9555.70
            }
        }
        expected = pd.DataFrame(expected)
        # Round, to ignore revisions to data.
        expected = np.round(expected, decimals=-3)
        expected = expected.sort_index()
        cntry_codes = 'ALL'
        inds = 'COPPER'
        result = download(country=cntry_codes,
                          indicator=inds,
                          start=2011,
                          end=2012,
                          freq='M',
                          errors='ignore')
        result = result.sort_index()
        result = np.round(result, decimals=-3)

        expected.index.names = ['country', 'year']
        tm.assert_frame_equal(result, expected)

        result = WorldBankReader(inds,
                                 countries=cntry_codes,
                                 start=2011,
                                 end=2012,
                                 freq='M',
                                 errors='ignore').read()
        result = result.sort_index()
        result = np.round(result, decimals=-3)
        tm.assert_frame_equal(result, expected)
Esempio n. 8
0
    def test_wdi_download_str(self):

        expected = {'NY.GDP.PCAP.CD': {('Japan', '2004'): 36441.50449394,
                                       ('Japan', '2003'): 33690.93772972,
                                       ('Japan', '2002'): 31235.58818439,
                                       ('Japan', '2001'): 32716.41867489,
                                       ('Japan', '2000'): 37299.64412913}}
        expected = pd.DataFrame(expected)
        # Round, to ignore revisions to data.
        expected = np.round(expected, decimals=-3)
        if PANDAS_0170:
            expected = expected.sort_index()
        else:
            expected = expected.sort()

        cntry_codes = 'JP'
        inds = 'NY.GDP.PCAP.CD'
        result = download(country=cntry_codes, indicator=inds,
                          start=2000, end=2004, errors='ignore')
        if PANDAS_0170:
            result = result.sort_index()
        else:
            result = result.sort()
        result = np.round(result, decimals=-3)

        if PANDAS_0140:
            expected.index.names = ['country', 'year']
        else:
            # prior versions doesn't allow to set multiple names to MultiIndex
            # Thus overwrite it with the result
            expected.index = result.index

        tm.assert_frame_equal(result, expected)

        result = WorldBankReader(inds, countries=cntry_codes,
                                 start=2000, end=2004, errors='ignore').read()
        if PANDAS_0170:
            result = result.sort_index()
        else:
            result = result.sort()
        result = np.round(result, decimals=-3)
        tm.assert_frame_equal(result, expected)
Esempio n. 9
0
    def test_wdi_download_quarterly(self):
        expected = {'DT.DOD.PUBS.CD.US': {('Albania', '2012Q1'): 3240539817.18,
                                          ('Albania', '2011Q4'): 3213979715.15,
                                          ('Albania', '2011Q3'): 3187681048.95,
                                          ('Albania', '2011Q2'): 3248041513.86,
                                          ('Albania', '2011Q1'): 3137210567.92}}
        expected = pd.DataFrame(expected)
        # Round, to ignore revisions to data.
        expected = np.round(expected, decimals=-3)
        if PANDAS_0170:
            expected = expected.sort_index()
        else:
            expected = expected.sort()

        cntry_codes = 'ALB'
        inds = 'DT.DOD.PUBS.CD.US'
        result = download(country=cntry_codes, indicator=inds,
                          start=2011, end=2012, freq='Q', errors='ignore')
        if PANDAS_0170:
            result = result.sort_index()
        else:
            result = result.sort()
        result = np.round(result, decimals=-3)

        if PANDAS_0140:
            expected.index.names = ['country', 'year']
        else:
            # prior versions doesn't allow to set multiple names to MultiIndex
            # Thus overwrite it with the result
            expected.index = result.index

        tm.assert_frame_equal(result, expected)

        result = WorldBankReader(inds, countries=cntry_codes,
                                 start=2011, end=2012, freq='Q', errors='ignore').read()
        if PANDAS_0170:
            result = result.sort_index()
        else:
            result = result.sort()
        result = np.round(result, decimals=-1)
        tm.assert_frame_equal(result, expected)
Esempio n. 10
0
    def test_wdi_search(self):

        # Test that a name column exists, and that some results were returned
        # ...without being too strict about what the actual contents of the
        # results actually are.  The fact that there are some, is good enough.

        result = search('gdp.*capita.*constant')
        self.assertTrue(result.name.str.contains('GDP').any())

        # check cache returns the results within 0.5 sec
        current_time = time.time()
        result = search('gdp.*capita.*constant')
        self.assertTrue(result.name.str.contains('GDP').any())
        self.assertTrue(time.time() - current_time < 0.5)

        result2 = WorldBankReader().search('gdp.*capita.*constant')
        session = requests.Session()
        result3 = search('gdp.*capita.*constant', session=session)
        result4 = WorldBankReader(session=session).search('gdp.*capita.*constant')
        for result in [result2, result3, result4]:
            self.assertTrue(result.name.str.contains('GDP').any())
Esempio n. 11
0
    def test_wdi_get_indicators(self):
        result1 = get_indicators()
        result2 = WorldBankReader().get_indicators()

        session = requests.Session()
        result3 = get_indicators(session=session)
        result4 = WorldBankReader(session=session).get_indicators()

        for result in [result1, result2, result3, result4]:
            exp_col = pd.Index([
                "id",
                "name",
                "unit",
                "source",
                "sourceNote",
                "sourceOrganization",
                "topics",
            ])
            # Column order is version dependent, so check columns are present
            assert sorted(result.columns) == sorted(exp_col)
            assert len(result) > 10000
Esempio n. 12
0
    def test_wdi_download_quarterly(self):
        code = "DT.DOD.PUBS.CD.US"
        expected = {
            code: {
                ("Albania", "2012Q1"): 3240539817.18,
                ("Albania", "2011Q4"): 3213979715.15,
                ("Albania", "2011Q3"): 3187681048.95,
                ("Albania", "2011Q2"): 3248041513.86,
                ("Albania", "2011Q1"): 3137210567.92,
            }
        }
        expected = pd.DataFrame(expected)
        # Round, to ignore revisions to data.
        expected = np.round(expected, decimals=-3)
        expected = expected.sort_index()
        cntry_codes = "ALB"
        inds = "DT.DOD.PUBS.CD.US"
        result = download(
            country=cntry_codes,
            indicator=inds,
            start=2011,
            end=2012,
            freq="Q",
            errors="ignore",
        )
        result = result.sort_index()
        result = np.round(result, decimals=-3)

        expected.index.names = ["country", "year"]
        tm.assert_frame_equal(result, expected)

        result = WorldBankReader(inds,
                                 countries=cntry_codes,
                                 start=2011,
                                 end=2012,
                                 freq="Q",
                                 errors="ignore").read()
        result = result.sort_index()
        result = np.round(result, decimals=-1)
        tm.assert_frame_equal(result, expected)
Esempio n. 13
0
    def test_wdi_download_quarterly(self):
        code = 'DT.DOD.PUBS.CD.US'
        expected = {
            code: {
                ('Albania', '2012Q1'): 3240539817.18,
                ('Albania', '2011Q4'): 3213979715.15,
                ('Albania', '2011Q3'): 3187681048.95,
                ('Albania', '2011Q2'): 3248041513.86,
                ('Albania', '2011Q1'): 3137210567.92
            }
        }
        expected = pd.DataFrame(expected)
        # Round, to ignore revisions to data.
        expected = np.round(expected, decimals=-3)
        expected = expected.sort_index()
        cntry_codes = 'ALB'
        inds = 'DT.DOD.PUBS.CD.US'
        result = download(country=cntry_codes,
                          indicator=inds,
                          start=2011,
                          end=2012,
                          freq='Q',
                          errors='ignore')
        result = result.sort_index()
        result = np.round(result, decimals=-3)

        expected.index.names = ['country', 'year']
        tm.assert_frame_equal(result, expected)

        result = WorldBankReader(inds,
                                 countries=cntry_codes,
                                 start=2011,
                                 end=2012,
                                 freq='Q',
                                 errors='ignore').read()
        result = result.sort_index()
        result = np.round(result, decimals=-1)
        tm.assert_frame_equal(result, expected)
Esempio n. 14
0
    def test_wdi_download_str(self):

        # These are the expected results, rounded (robust against
        # data revisions in the future).
        expected = {
            'NY.GDP.PCAP.CD': {
                ('Japan', '2004'): 38000.0,
                ('Japan', '2003'): 35000.0,
                ('Japan', '2002'): 32000.0,
                ('Japan', '2001'): 34000.0,
                ('Japan', '2000'): 39000.0
            }
        }
        expected = pd.DataFrame(expected)
        expected = expected.sort_index()

        cntry_codes = 'JP'
        inds = 'NY.GDP.PCAP.CD'
        result = download(country=cntry_codes,
                          indicator=inds,
                          start=2000,
                          end=2004,
                          errors='ignore')
        result = result.sort_index()
        result = np.round(result, decimals=-3)

        expected.index.names = ['country', 'year']
        tm.assert_frame_equal(result, expected)

        result = WorldBankReader(inds,
                                 countries=cntry_codes,
                                 start=2000,
                                 end=2004,
                                 errors='ignore').read()
        result = result.sort_index()
        result = np.round(result, decimals=-3)
        tm.assert_frame_equal(result, expected)