diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 0687aa4fc..75f077e62 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,5 +1,7 @@ # Next Release +- [#738](https://github.com/IAMconsortium/pyam/pull/738) Ensure compatibility with **pandas v2.0** + # Release v1.8.0 ## Highlights diff --git a/docs/tutorials/quantiles.ipynb b/docs/tutorials/quantiles.ipynb index d5cc82244..6a441c42c 100644 --- a/docs/tutorials/quantiles.ipynb +++ b/docs/tutorials/quantiles.ipynb @@ -11,7 +11,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -37,235 +37,9 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "pyam.core - INFO: Reading file tutorial_data.csv\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
2010202020302040205020602070208020902100
modelscenarioregionvariableunit
AIM/CGE 2.1CD-LINKS_INDCiR5ASIAEmissions|CO2Mt CO2/yr11231.088014359.280114873.596715238.908115180.185415513.176016003.206016343.312417097.868117722.1245
Primary EnergyEJ/yr145.7409191.0565216.2135234.2793245.9771258.3201268.7644275.0764283.1479288.6838
Primary Energy|BiomassEJ/yr23.664724.075125.926227.364629.693829.810230.117830.010929.616629.5846
Primary Energy|FossilEJ/yr116.1932155.0735168.2376179.0562185.2168195.6202203.4916207.3614214.7828217.7714
Primary Energy|Non-Biomass RenewablesEJ/yr4.51399.264117.076722.096725.321126.658927.949029.325929.394230.6799
\n", - "
" - ], - "text/plain": [ - " 2010 \\\n", - "model scenario region variable unit \n", - "AIM/CGE 2.1 CD-LINKS_INDCi R5ASIA Emissions|CO2 Mt CO2/yr 11231.0880 \n", - " Primary Energy EJ/yr 145.7409 \n", - " Primary Energy|Biomass EJ/yr 23.6647 \n", - " Primary Energy|Fossil EJ/yr 116.1932 \n", - " Primary Energy|Non-Biomass Renewables EJ/yr 4.5139 \n", - "\n", - " 2020 \\\n", - "model scenario region variable unit \n", - "AIM/CGE 2.1 CD-LINKS_INDCi R5ASIA Emissions|CO2 Mt CO2/yr 14359.2801 \n", - " Primary Energy EJ/yr 191.0565 \n", - " Primary Energy|Biomass EJ/yr 24.0751 \n", - " Primary Energy|Fossil EJ/yr 155.0735 \n", - " Primary Energy|Non-Biomass Renewables EJ/yr 9.2641 \n", - "\n", - " 2030 \\\n", - "model scenario region variable unit \n", - "AIM/CGE 2.1 CD-LINKS_INDCi R5ASIA Emissions|CO2 Mt CO2/yr 14873.5967 \n", - " Primary Energy EJ/yr 216.2135 \n", - " Primary Energy|Biomass EJ/yr 25.9262 \n", - " Primary Energy|Fossil EJ/yr 168.2376 \n", - " Primary Energy|Non-Biomass Renewables EJ/yr 17.0767 \n", - "\n", - " 2040 \\\n", - "model scenario region variable unit \n", - "AIM/CGE 2.1 CD-LINKS_INDCi R5ASIA Emissions|CO2 Mt CO2/yr 15238.9081 \n", - " Primary Energy EJ/yr 234.2793 \n", - " Primary Energy|Biomass EJ/yr 27.3646 \n", - " Primary Energy|Fossil EJ/yr 179.0562 \n", - " Primary Energy|Non-Biomass Renewables EJ/yr 22.0967 \n", - "\n", - " 2050 \\\n", - "model scenario region variable unit \n", - "AIM/CGE 2.1 CD-LINKS_INDCi R5ASIA Emissions|CO2 Mt CO2/yr 15180.1854 \n", - " Primary Energy EJ/yr 245.9771 \n", - " Primary Energy|Biomass EJ/yr 29.6938 \n", - " Primary Energy|Fossil EJ/yr 185.2168 \n", - " Primary Energy|Non-Biomass Renewables EJ/yr 25.3211 \n", - "\n", - " 2060 \\\n", - "model scenario region variable unit \n", - "AIM/CGE 2.1 CD-LINKS_INDCi R5ASIA Emissions|CO2 Mt CO2/yr 15513.1760 \n", - " Primary Energy EJ/yr 258.3201 \n", - " Primary Energy|Biomass EJ/yr 29.8102 \n", - " Primary Energy|Fossil EJ/yr 195.6202 \n", - " Primary Energy|Non-Biomass Renewables EJ/yr 26.6589 \n", - "\n", - " 2070 \\\n", - "model scenario region variable unit \n", - "AIM/CGE 2.1 CD-LINKS_INDCi R5ASIA Emissions|CO2 Mt CO2/yr 16003.2060 \n", - " Primary Energy EJ/yr 268.7644 \n", - " Primary Energy|Biomass EJ/yr 30.1178 \n", - " Primary Energy|Fossil EJ/yr 203.4916 \n", - " Primary Energy|Non-Biomass Renewables EJ/yr 27.9490 \n", - "\n", - " 2080 \\\n", - "model scenario region variable unit \n", - "AIM/CGE 2.1 CD-LINKS_INDCi R5ASIA Emissions|CO2 Mt CO2/yr 16343.3124 \n", - " Primary Energy EJ/yr 275.0764 \n", - " Primary Energy|Biomass EJ/yr 30.0109 \n", - " Primary Energy|Fossil EJ/yr 207.3614 \n", - " Primary Energy|Non-Biomass Renewables EJ/yr 29.3259 \n", - "\n", - " 2090 \\\n", - "model scenario region variable unit \n", - "AIM/CGE 2.1 CD-LINKS_INDCi R5ASIA Emissions|CO2 Mt CO2/yr 17097.8681 \n", - " Primary Energy EJ/yr 283.1479 \n", - " Primary Energy|Biomass EJ/yr 29.6166 \n", - " Primary Energy|Fossil EJ/yr 214.7828 \n", - " Primary Energy|Non-Biomass Renewables EJ/yr 29.3942 \n", - "\n", - " 2100 \n", - "model scenario region variable unit \n", - "AIM/CGE 2.1 CD-LINKS_INDCi R5ASIA Emissions|CO2 Mt CO2/yr 17722.1245 \n", - " Primary Energy EJ/yr 288.6838 \n", - " Primary Energy|Biomass EJ/yr 29.5846 \n", - " Primary Energy|Fossil EJ/yr 217.7714 \n", - " Primary Energy|Non-Biomass Renewables EJ/yr 30.6799 " - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "df = pyam.IamDataFrame(data='tutorial_data.csv')\n", "df.timeseries().head()" @@ -280,27 +54,9 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['1.0',\n", - " 'CD-LINKS_INDCi',\n", - " 'CD-LINKS_NPi',\n", - " 'CD-LINKS_NPi2020_1000',\n", - " 'CD-LINKS_NPi2020_1600',\n", - " 'CD-LINKS_NPi2020_400',\n", - " 'CD-LINKS_NoPolicy',\n", - " 'Faster Transition Scenario']" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "df.filter(variable='Emissions|CO2', region='World').scenario" ] @@ -316,32 +72,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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qlUH5GPNmjWceuqpJBKJQcctX768X1pTUxPz5s1j3bp1/dK///3v8/KXv5yamprCNqTIOJTMZNnV3ssLOzt4dGMrT29tZ0trDx29GVxXIMY9XaqQQR3sUsWb3/xmAE4++WQ6OztpbGyksbGRmpoa2tra+k37yle+kr//+79ny5YtXHzxxSxevJiTTz6Zj33sY1xzzTVcdNFFvOY1r+k3zyOPPMLZZ59Nc3P01NxLLrmE3/zmN7zlLW+hurqaiy66CIDly5dz3333AXDWWWdx+eWX87a3vY2LL754BLfEfmvWrOGaa67hF7/4xagsX6RU5XJOe2906aGtO013KlvsLEkRqcZBhi1/tl1RUdHvzLuiooJMpn9L6Xe9612sWrWKCRMmcMEFF3D//fdz/PHH89hjj3HyySfzqU99ihtuuKHg766qqurrMyGRSPR939e+9jVuvPFGNm/ezPLly2lpaek330knncQTTzxBNnvgAW/JkiU8+uij/dLa29vZtGkTixYtAqLGk3/yJ3/CrbfeysKFCwvOr8hYNbBR49rtHWxr61XQIAocZHStX7+e4447jo985COsXLmSJ598km3btlFXV8e73/1uPv7xj/PYY4/1m+f000/nwQcfZM+ePWSzWW677TZe97rXHfR7XnzxRc444wxuuOEGmpub2bx5c7/xCxcuZMWKFVx//fV4qEvdsGEDP/nJTzjnnHPo7u7m1ltvBSCbzfKxj32Myy+/nLq6Otra2rjwwgu56aabOOuss0Zw64iUjkw2R0tnkhd3d/LoxlYe39zGhj3dtHWnyenyg8QocJBBDWzjcO211x7Wcu68806WLl3KqaeeytNPP82ll17KU0891ddg8jOf+Qyf+tSn+s0za9YsbrrpJv7oj/6IZcuWsXz5clauXHnQ7/n4xz/e15jyVa96FcuWLTtgmltuuYWdO3eyaNEili5dyuWXX8706dMxM374wx9y1113sXjxYo4//nhqa2v53Oc+B8BXvvIV1q1bxw033NC3PXbt2nVY20OkVBysUWMqo0aNMjRztWQpqhUrVnj+ToK8tWvX8rKXvaxIORpf5s+fz4YNG47Kd+l3k1Ll7qSyOXrTOXrTWfaFWyWL2ZfCkllNTKw7vKfJmtmj7r5ihLMkBVLjSBGRcSCTzdGbyZFMZ0lmogAh/57K5HS5QUaMAgcZ1z76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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig, ax = plt.subplots()\n", "\n", @@ -372,32 +105,9 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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Fu3uUxRFUTIW7e7rQXl5uamtrU13MxRFUUYVb7zxRrMxpmK496si1YPa2lrWrFmT7mYoiqKMKkSkz0gxQ0G7+xRFUZSMRUVKURRFyVhUpBRFUZSMRcekBkAkEqGpqYlgMJjupigDJDc3l+rqalwuV7qboijKEFCRGgBNTU14PB5qa2vpHhBdyUSMMbS0tNDU1MS0adPS3RxFUYaAdvcNgGAwSFlZmQrUKEFEKCsrU8tXUcYAKlIDRAVqdKHfl6KMDVSkFEVRlIxFx6QURVHGMb5QlI6uCNlOBxWenHQ35xjUkholOJ1OFi9enHzdddddA952//79XHHFFSd8zOuvv55Nmzad8Hb9kRpyyufzceONNzJjxgyWLVvGeeedx6uvvgpYziqXXnops2bNYsaMGdx0002Ew2EAnn32WZYtW8aCBQtYtmwZzz//fG+HUhSlF8LROEe8IbYf9vLG7lbebupgT0uArnDs+BunAbWkRgl5eXmsW7duUNtWVlbyxBNPnPB2999//6CON1Cuv/56pk2bRkNDAw6Hg127drFp0yaMMVx++eV8+tOf5o9//COxWIwbbriBr371q9x9992Ul5fz5JNPUllZyYYNG1ixYgX79u0b0bYqymjFGENnMEpHIEJ7Vxh/KDPFqC/Ukhrl1NbWcuutt7J48WKWL1/O2rVrWbFiBTNmzOBnP/sZAI2NjdTX1wOwceNGTj31VBYvXszChQtpaGjA7/dz8cUXs2jRIurr6/nNb6zs3+edd14yjuEjjzzCggULqK+v5+abb04e3+1289WvfpVFixZx+umnc+jQIQAef/xx6uvrWbRoEeeee+4x7d6xYwevvvoqd9xxBw6HdRtOmzaNiy++mOeff57c3Fyuu+46wLIi77nnHn7xi18QCARYsmQJlZWVAMyfP5+uri5CoYFmtleUsU8wEuNgR5AtBzt5vbGNTfs72dfeNeoEClSkRg1dXV3duvsSQgJQU1PDunXrOOecc7j22mt54okneOWVV7jttmMzvf/sZz/jpptuYt26daxZs4bq6mqeeuopKisrWb9+PRs2bGDlypXdttm/fz8333wzzz//POvWreP111/nD3/4AwB+v5/TTz+d9evXc+655/Lzn/8cgG9961s8/fTTrF+/ntWrVx/Tjo0bN7J48WKcTmev65YtW9atrLCwkJqaGrZv396t/Le//S1Lly4lJyfz+tIV5WQRixta/WF2HvHx5p423tzTzq5mP23+CLH46M4ZqN19o4T+uvsuueQSABYsWIDP58Pj8eDxeMjJyaG9vb1b3TPOOIM777yTpqYmLr/8cmbNmsWCBQv4whe+wM0338x73vMezjnnnG7bvP7665x33nlUVFhR+K+66ipefvll3ve+95Gdnc173vMeAJYtW8azzz4LwFlnncW1117LBz/4QS6//PJhvBJH2bhxIzfffDPPPPPMiOxfUTKZhMNDeyCMNxhlrOavVUtqDJCwIhwORzeLwuFwEI1Gu9W98sorWb16NXl5eaxatYrnn3+e2bNns3btWhYsWMDXvvY1vvWtbw342C6XKzknyel0Jo/3s5/9jDvuuIO9e/eybNkyWlpaum03f/581q9fTyx2bPdDXV0db7zxRreyzs5O9uzZw8yZMwHLseKyyy7joYceYsaMGQNur6KMVvpyeOjsGrsCBSpS446dO3cyffp0Pv/5z3PppZfy1ltvsX//fvLz8/noRz/Kl770JdauXdttm1NPPZWXXnqJ5uZmYrEYjzzyCO94xzv6Pc6OHTs47bTT+Na3vkVFRQV79+7ttn7GjBksX76c2267DWP/whobG/m///s/LrjgAgKBAA899BAAsViML3zhC1x77bXk5+fT3t7OxRdfzF133cVZZ501jFdHUTIHYwwdXRH2tAR4q6mdN3a3sf2wjyPeMOHoGFalHqhIjRJ6jkndcsstg9rPY489Rn19PYsXL2bDhg187GMf4+233046U3zzm9/ka1/7WrdtJk+ezF133cX555/PokWLWLZsGZdeemm/x/nSl76UdLQ488wzWbRo0TF17r//fg4dOsTMmTOpr6/n2muvZcKECYgIv//973n88ceZNWsWs2fPJjc3l3//938H4N5772X79u1861vfSl6Pw4cPD+p6KEomMZYcHoYLMWPZThwEy5cvNz0z827evJl58+alqUVji9raWhobG0/KsfR7UzKZSCxOKBonGInR2RWhoytCMBJPW3uqivOoKcsf9PYi8oYxZvkwNglQxwlFUZQRIR43SREKReOEojGCkaPvo93r7mShIqWcVP71X/813U1QlGEjFI0dFaJIqhDFCUfTZxWNJVSklJOKipQymojaXXKpFlHSMorEUGNo5FGRUhRl3GKMsQUnTjDa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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig, ax = plt.subplots()\n", "\n", @@ -430,87 +140,9 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
excludeweight
modelscenario
AIM/CGE 2.1CD-LINKS_INDCiFalse0.602473
CD-LINKS_NPiFalse0.787914
CD-LINKS_NPi2020_1000False0.400528
CD-LINKS_NPi2020_1600False0.927644
CD-LINKS_NPi2020_400False0.691232
\n", - "
" - ], - "text/plain": [ - " exclude weight\n", - "model scenario \n", - "AIM/CGE 2.1 CD-LINKS_INDCi False 0.602473\n", - " CD-LINKS_NPi False 0.787914\n", - " CD-LINKS_NPi2020_1000 False 0.400528\n", - " CD-LINKS_NPi2020_1600 False 0.927644\n", - " CD-LINKS_NPi2020_400 False 0.691232" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "weights = df.meta.assign(weight=np.random.rand(len(df.meta)))\n", "weights.head()" @@ -518,32 +150,9 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig, ax = plt.subplots()\n", "\n", @@ -564,6 +173,13 @@ " .line(ax=ax)\n", ")" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -582,7 +198,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.13" + "version": "3.10.0" } }, "nbformat": 4, diff --git a/pyam/figures.py b/pyam/figures.py index cd6369242..3d31aa237 100755 --- a/pyam/figures.py +++ b/pyam/figures.py @@ -51,7 +51,10 @@ def sankey(df, mapping): mapping, orient="index", columns=["source", "target"] ).merge(df._data, how="left", left_index=True, right_on="variable") label_mapping = dict( - [(label, i) for i, label in enumerate(set(_df["source"].append(_df["target"])))] + [ + (label, i) + for i, label in enumerate(set(pd.concat([_df["source"], _df["target"]]))) + ] ) _df.replace(label_mapping, inplace=True) region = get_index_levels(_df, "region")[0] diff --git a/pyam/iiasa.py b/pyam/iiasa.py index 46b9017cb..d5eeb6950 100644 --- a/pyam/iiasa.py +++ b/pyam/iiasa.py @@ -526,7 +526,7 @@ def query(self, default_only=True, meta=True, **kwargs): if islistable(meta): # always merge 'version' (even if not requested explicitly) # 'run_id' is required to determine `_args`, dropped later - _meta = _meta[set(meta).union(["version", "run_id"])] + _meta = _meta[list(set(meta).union(["version", "run_id"]))] else: _meta = self._query_index(default_only=default_only).set_index(META_IDX) diff --git a/pyam/statistics.py b/pyam/statistics.py index b82f62314..d37cb5565 100644 --- a/pyam/statistics.py +++ b/pyam/statistics.py @@ -198,10 +198,11 @@ def add(self, data, header, row=None, subheader=None): else (levels + [[row]], [[0]] * (self.idx_depth + 1)) ) _stats_f.index = pd.MultiIndex(levels=lvls, codes=lbls) - _stats = _stats_f if _stats is None else _stats.append(_stats_f) + _stats = _stats_f if _stats is None else pd.concat([_stats, _stats_f]) # add header _stats = pd.concat([_stats], keys=[header], names=[""], axis=1) + _stats.index.names = [None] * len(_stats.index.names) subheader = _stats.columns.get_level_values(1).unique() self._add_to_header(header, subheader) @@ -272,15 +273,14 @@ def format_rows( legend = "{} ({})".format( center, "max, min" if fullrange is True else "interquartile range" ) - index = row.index.droplevel(2).drop_duplicates() - count_arg = dict(tuples=[("count", "")], names=[None, legend]) + + row_index = row.index.droplevel(2).drop_duplicates() + ret_index = pd.MultiIndex.from_tuples([("count", "")]).append(row_index) + ret_index.names = [None, legend] else: - msg = "displaying multiple range formats simultaneously not supported" - raise NotImplementedError(msg) + raise ValueError("Use either fullrange or interquartile range.") - ret = pd.Series( - index=pd.MultiIndex.from_tuples(**count_arg).append(index), dtype=float - ) + ret = pd.Series(index=ret_index, dtype=float) row = row.sort_index() center = "50%" if center == "median" else center @@ -295,7 +295,7 @@ def format_rows( upper, lower = ("max", "min") if fullrange is True else ("75%", "25%") # format `describe()` columns to string output - for i in index: + for i in row_index: x = row.loc[i] _count = x["count"] if np.isnan(_count) or _count == 0: diff --git a/pyam/utils.py b/pyam/utils.py index 7d46e2e1a..8d86677f6 100644 --- a/pyam/utils.py +++ b/pyam/utils.py @@ -401,7 +401,8 @@ def format_data(df, index, **kwargs): df = _format_from_legacy_database(df) # replace missing units by an empty string for user-friendly filtering - df = df.assign(unit=df["unit"].fillna("")) + if "unit" in df.columns: + df = df.assign(unit=df["unit"].fillna("")) df, time_col, extra_cols = _format_data_to_series(df, index) diff --git a/setup.cfg b/setup.cfg index b1d44be5a..9b3418036 100644 --- a/setup.cfg +++ b/setup.cfg @@ -66,7 +66,7 @@ optional_io_formats = tutorials = pypandoc nbformat - nbconvert + nbconvert >= 7.3 jupyter_client ipykernel docs = diff --git a/tests/test_core.py b/tests/test_core.py index c70b7d592..4f0b2431f 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -86,8 +86,8 @@ def test_init_df_with_float_cols_raises(test_pd_df): def test_init_df_with_duplicates_raises(test_df): - _df = test_df.timeseries() - _df = _df.append(_df.iloc[0]).reset_index() + _df = test_df.timeseries().reset_index() + _df = pd.concat([_df, _df.iloc[0].to_frame().T]) match = "0 model_a scen_a World Primary Energy EJ/yr" with pytest.raises(ValueError, match=match): IamDataFrame(_df) @@ -604,7 +604,7 @@ def test_interpolate_datetimes(test_df): test_df.interpolate(some_date, inplace=True) obs = test_df.filter(time=some_date).data["value"].reset_index(drop=True) exp = pd.Series([3, 1.5, 4], name="value") - pd.testing.assert_series_equal(obs, exp, check_less_precise=True) + pd.testing.assert_series_equal(obs, exp, rtol=0.01) # redo the interpolation and check that no duplicates are added test_df.interpolate(some_date, inplace=True) assert not test_df.filter()._data.index.duplicated().any() diff --git a/tests/test_filter.py b/tests/test_filter.py index c3cec9646..7028b8355 100644 --- a/tests/test_filter.py +++ b/tests/test_filter.py @@ -55,7 +55,8 @@ def test_filter_mixed_time_domain(test_df_mixed, arg_year, arg_time): assert obs.time_col == "year" assert obs.time_domain == "year" assert obs.year == [2005] - pdt.assert_index_equal(obs.time, pd.Int64Index([2005], name="time")) + pdt.assert_index_equal(obs.time, pd.Index([2005], name="time")) + assert obs.time.dtype == "int64" def test_filter_time_domain_raises(test_df_year): @@ -106,10 +107,12 @@ def test_filter_day(test_df, test_day): def test_filter_with_numpy_64_date_vals(test_df): dates = test_df[test_df.time_col].unique() - key = "year" if test_df.time_col == "year" else "time" - res_0 = test_df.filter(**{key: dates[0]}) - res = test_df.filter(**{key: dates}) - assert np.equal(res_0.data[res_0.time_col].values, dates[0]).all() + res_0 = test_df.filter(**{test_df.time_col: dates[0]}) + res = test_df.filter(**{test_df.time_col: dates}) + if test_df.time_col == "year": + assert res_0.data[res_0.time_col].values[0] == dates[0] + else: + assert res_0.data[res_0.time_col].values[0] == np.datetime64(dates[0]) assert res.equals(test_df) diff --git a/tests/test_statistics.py b/tests/test_statistics.py index 46e7959da..5a7f6874f 100644 --- a/tests/test_statistics.py +++ b/tests/test_statistics.py @@ -9,6 +9,7 @@ def stats_add(stats, plot_df): # test describing as pd.DataFrame primary = plot_df.filter(variable="Primary Energy", year=2005).timeseries() stats.add(data=primary, header="primary") + # test describing as unamed pd.Series with `subheader` arg coal = plot_df.filter(variable="Primary Energy|Coal").timeseries()[2010] coal.name = None @@ -48,7 +49,6 @@ def test_statistics(plot_df): idx = pd.MultiIndex( levels=[["category", "scen"], ["b", "a", "test"]], codes=[[0, 0, 1], [0, 1, 2]], - names=["", ""], ) cols = pd.MultiIndex( levels=[["count", "primary", "coal"], ["", 2005]], diff --git a/tests/test_time.py b/tests/test_time.py index ff7c26d78..8cb50cb75 100644 --- a/tests/test_time.py +++ b/tests/test_time.py @@ -39,7 +39,7 @@ def get_subannual_df(date1, date2): @pytest.mark.parametrize( "time, domain, index", [ - (TEST_YEARS, "year", pd.Int64Index([2005, 2010], name="time")), + (TEST_YEARS, "year", pd.Index([2005, 2010], name="time")), (TEST_DTS, "datetime", pd.DatetimeIndex(TEST_DTS, name="time")), (TEST_TIME_STR, "datetime", pd.DatetimeIndex(TEST_DTS, name="time")), (TEST_TIME_STR_HR, "datetime", pd.DatetimeIndex(TEST_TIME_STR_HR, name="time")), diff --git a/tests/test_tutorials.py b/tests/test_tutorials.py index 2ad9a4fe8..e8492f359 100644 --- a/tests/test_tutorials.py +++ b/tests/test_tutorials.py @@ -1,138 +1,46 @@ -import io -import os -import subprocess -import sys import pytest -from .conftest import here, IIASA_UNAVAILABLE - try: import nbformat -except: + from nbconvert.preprocessors import ExecutePreprocessor +except ModuleNotFoundError: pytest.skip( "Missing Jupyter Notebook and related dependencies", allow_module_level=True ) -tut_path = os.path.join(here, "..", "docs", "tutorials") - - -# taken from the excellent example here: -# https://blog.thedataincubator.com/2016/06/testing-jupyter-notebooks/ - - -def _notebook_run(path, kernel=None, timeout=60, capsys=None): - """Execute a notebook via nbconvert and collect output. - :returns (parsed nb object, execution errors) - """ - major_version = sys.version_info[0] - dirname, __ = os.path.split(path) - os.chdir(dirname) - fname = os.path.join(here, "test.ipynb") - args = [ - "jupyter", - "nbconvert", - "--to", - "notebook", - "--execute", - "--ExecutePreprocessor.timeout={}".format(timeout), - "--output", - fname, - path, - ] - subprocess.check_call(args) - - nb = nbformat.read(io.open(fname, encoding="utf-8"), nbformat.current_nbformat) - - errors = [ - output - for cell in nb.cells - if "outputs" in cell - for output in cell["outputs"] - if output.output_type == "error" - ] - - # removing files fails on CI (GitHub Actions) on Windows & py3.8 - try: - os.remove(fname) - except PermissionError: - pass - - return nb, errors - - -def test_pyam_first_steps(capsys): - fname = os.path.join(tut_path, "pyam_first_steps.ipynb") - nb, errors = _notebook_run(fname, capsys=capsys) - assert errors == [] - assert os.path.exists(os.path.join(tut_path, "tutorial_export.xlsx")) - - def has_log_output(cell): - return cell["cell_type"] == "code" and any( - "Running in a notebook" in output.get("text", "") - for output in cell["outputs"] - ) - - assert any(has_log_output(cell) for cell in nb["cells"]) - - -def test_data_table_formats(): - fname = os.path.join(tut_path, "data_table_formats.ipynb") - nb, errors = _notebook_run(fname) - assert errors == [] - - -def test_unit_conversion(): - fname = os.path.join(tut_path, "unit_conversion.ipynb") - nb, errors = _notebook_run(fname) - assert errors == [] - - -def test_aggregating_downscaling_consistency(): - fname = os.path.join(tut_path, "aggregating_downscaling_consistency.ipynb") - nb, errors = _notebook_run(fname) - assert errors == [] - - -def test_subannual_time_resolution(): - fname = os.path.join(tut_path, "subannual_time_resolution.ipynb") - nb, errors = _notebook_run(fname) - assert errors == [] - - -def test_pyam_logo(): - fname = os.path.join(tut_path, "pyam_logo.ipynb") - nb, errors = _notebook_run(fname) - assert errors == [] +from .conftest import here, IIASA_UNAVAILABLE +nb_path = here.parent / "docs" / "tutorials" -def test_ipcc_colors(): - fname = os.path.join(tut_path, "ipcc_colors.ipynb") - nb, errors = _notebook_run(fname) - assert errors == [] +def _run_notebook(file, timeout=30): + """Execute a notebook file""" + with open(nb_path / f"{file}.ipynb") as f: + nb = nbformat.read(f, as_version=4) -def test_legends(): - fname = os.path.join(tut_path, "legends.ipynb") - nb, errors = _notebook_run(fname) - assert errors == [] + ep = ExecutePreprocessor(timeout=timeout) + ep.preprocess(nb, {"metadata": {"path": nb_path}}) -def test_ops(): - fname = os.path.join(tut_path, "algebraic_operations.ipynb") - nb, errors = _notebook_run(fname) - assert errors == [] +@pytest.mark.parametrize( + "file", + [ + "pyam_first_steps", + "data_table_formats", + "unit_conversion", + "aggregating_downscaling_consistency", + "subannual_time_resolution", + "pyam_logo", + "ipcc_colors", + "legends", + "algebraic_operations", + "aggregating_variables_and_plotting_with_negative_values", + ], +) +def test_tutorial_notebook(file): + _run_notebook(file) @pytest.mark.skipif(IIASA_UNAVAILABLE, reason="IIASA database API unavailable") -def test_iiasa_dbs(): - fname = os.path.join(tut_path, "iiasa_dbs.ipynb") - nb, errors = _notebook_run(fname, timeout=600) - assert errors == [] - - -def test_aggregating_variables_and_plotting_with_negative_values(): - fname = os.path.join( - tut_path, "aggregating_variables_and_plotting_with_negative_values.ipynb" - ) - nb, errors = _notebook_run(fname) - assert errors == [] +def test_tutorial_iiasa_dbs(): + _run_notebook("iiasa_dbs")