diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 6d59da9..48cc8db 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -3,10 +3,7 @@
-
-
-
-
+
@@ -73,19 +70,19 @@
-
+
-
-
-
-
+
-
+
+
+
+
@@ -275,7 +272,8 @@
-
+
+
diff --git a/GDP_analyse/.ipynb_checkpoints/GDP_analyse-checkpoint.ipynb b/GDP_analyse/.ipynb_checkpoints/GDP_analyse-checkpoint.ipynb
new file mode 100644
index 0000000..7b87c81
--- /dev/null
+++ b/GDP_analyse/.ipynb_checkpoints/GDP_analyse-checkpoint.ipynb
@@ -0,0 +1,7133 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from pyecharts import options as opts\n",
+ "from pyecharts.charts import Pie, Bar"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "gdp = pd.read_csv('GDP_data.csv')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "country = pd.read_csv('Country_data.csv')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "country_data = country.dropna(subset=['Income_Group'])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " Region | \n",
+ " Income_Group | \n",
+ " Unnamed: 4 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 阿鲁巴 | \n",
+ " ABW | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 阿富汗 | \n",
+ " AFG | \n",
+ " 南亚 | \n",
+ " 低收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 安哥拉 | \n",
+ " AGO | \n",
+ " 撒哈拉以南非洲地区(不包括高收入) | \n",
+ " 中低等收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 阿尔巴尼亚 | \n",
+ " ALB | \n",
+ " 欧洲与中亚地区(不包括高收入) | \n",
+ " 中高等收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 安道尔共和国 | \n",
+ " AND | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 259 | \n",
+ " 科索沃 | \n",
+ " XKX | \n",
+ " 欧洲与中亚地区(不包括高收入) | \n",
+ " 中高等收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 260 | \n",
+ " 也门共和国 | \n",
+ " YEM | \n",
+ " 中东与北非地区(不包括高收入) | \n",
+ " 低收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 261 | \n",
+ " 南非 | \n",
+ " ZAF | \n",
+ " 撒哈拉以南非洲地区(不包括高收入) | \n",
+ " 中高等收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 262 | \n",
+ " 赞比亚 | \n",
+ " ZMB | \n",
+ " 撒哈拉以南非洲地区(不包括高收入) | \n",
+ " 中低等收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 263 | \n",
+ " 津巴布韦 | \n",
+ " ZWE | \n",
+ " 撒哈拉以南非洲地区(不包括高收入) | \n",
+ " 中低等收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
217 rows × 5 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code Region Income_Group Unnamed: 4\n",
+ "0 阿鲁巴 ABW NaN 高收入国家 NaN\n",
+ "1 阿富汗 AFG 南亚 低收入国家 NaN\n",
+ "2 安哥拉 AGO 撒哈拉以南非洲地区(不包括高收入) 中低等收入国家 NaN\n",
+ "3 阿尔巴尼亚 ALB 欧洲与中亚地区(不包括高收入) 中高等收入国家 NaN\n",
+ "4 安道尔共和国 AND NaN 高收入国家 NaN\n",
+ ".. ... ... ... ... ...\n",
+ "259 科索沃 XKX 欧洲与中亚地区(不包括高收入) 中高等收入国家 NaN\n",
+ "260 也门共和国 YEM 中东与北非地区(不包括高收入) 低收入国家 NaN\n",
+ "261 南非 ZAF 撒哈拉以南非洲地区(不包括高收入) 中高等收入国家 NaN\n",
+ "262 赞比亚 ZMB 撒哈拉以南非洲地区(不包括高收入) 中低等收入国家 NaN\n",
+ "263 津巴布韦 ZWE 撒哈拉以南非洲地区(不包括高收入) 中低等收入国家 NaN\n",
+ "\n",
+ "[217 rows x 5 columns]"
+ ]
+ },
+ "execution_count": 54,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "country_data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 73,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "rank_cuntry = country_data.groupby('Income_Group').size()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 72,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[47, 60, 31, 79]"
+ ]
+ },
+ "execution_count": 72,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "country_data.groupby('Income_Group').size().values.tolist()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 81,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 81,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# 各个收入等级分布\n",
+ "pie = Pie()\n",
+ "pie.add(\"\", [list(z) for z in zip(rank_cuntry.index.tolist(), rank_cuntry.values.tolist())],\n",
+ " radius=[\"30%\", \"75%\"], center=[\"45%\", \"50%\"], rosetype=\"radius\",\n",
+ " )\n",
+ "pie.set_global_opts(title_opts=opts.TitleOpts(title=\"各个收入等级分布\"))\n",
+ "pie.set_series_opts(label_opts=opts.LabelOpts(formatter=\"{b}, {d}%\"))\n",
+ "pie.render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 89,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "high = country_data[country_data['Income_Group'] == '高收入国家']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 94,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": [
+ "# 高收入国家2018年的GDP\n",
+ "high_gdp = pd.merge(high, gdp, how='inner')\n",
+ "high_gdp['2018'] = high_gdp['2018'].apply(lambda x: x/1000000000000)\n",
+ "high_gdp_top10 = high_gdp[['Country Name', 'Country Code', '2018']].sort_values(by='2018', ascending=False)[:10]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 101,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 101,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "bar = Bar()\n",
+ "bar.add_xaxis(high_gdp_top10['Country Name'].values.tolist())\n",
+ "bar.add_yaxis(\"\", high_gdp_top10['2018'].values.tolist())\n",
+ "bar.reversal_axis()\n",
+ "bar.set_series_opts(label_opts=opts.LabelOpts(position=\"right\"))\n",
+ "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"高收入国家GDP Top10\", subtitle=\"\"),\n",
+ " xaxis_opts=opts.AxisOpts(\n",
+ " axislabel_opts=opts.LabelOpts(formatter=\"{value} /万亿\")\n",
+ " ),)\n",
+ "bar.render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 113,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 113,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "high_gdp_top20 = high_gdp[['Country Name', 'Country Code', '2018']].sort_values(by='2018', ascending=False)[:20]\n",
+ "\n",
+ "bar = Bar()\n",
+ "bar.add_xaxis(high_gdp_top20['Country Name'].values.tolist())\n",
+ "bar.add_yaxis(\"\", high_gdp_top20['2018'].values.tolist())\n",
+ "bar.reversal_axis()\n",
+ "bar.set_series_opts(label_opts=opts.LabelOpts(position=\"right\"))\n",
+ "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"高收入国家GDP Top20\", subtitle=\"\"),\n",
+ " xaxis_opts=opts.AxisOpts(\n",
+ " axislabel_opts=opts.LabelOpts(formatter=\"{value} /万亿\")\n",
+ " ),)\n",
+ "bar.render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 119,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# 中高等收入国家\n",
+ "mid_high = country_data[country_data['Income_Group'] == '中高等收入国家']\n",
+ "mid_high_gdp = pd.merge(mid_high, gdp, how='inner')\n",
+ "mid_high_gdp['2018'] = mid_high_gdp['2018'].apply(lambda x: x/1000000000000)\n",
+ "mid_high_gdp_top10 = mid_high_gdp[['Country Name', 'Country Code', '2018']].sort_values(by='2018', ascending=False)[:10]\n",
+ "mid_high_gdp_top20 = mid_high_gdp[['Country Name', 'Country Code', '2018']].sort_values(by='2018', ascending=False)[:20]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 117,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 117,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "bar = Bar()\n",
+ "bar.add_xaxis(mid_high_gdp_top10['Country Name'].values.tolist())\n",
+ "bar.add_yaxis(\"\", mid_high_gdp_top10['2018'].values.tolist())\n",
+ "bar.reversal_axis()\n",
+ "bar.set_series_opts(label_opts=opts.LabelOpts(position=\"right\"))\n",
+ "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"中高等收入国家GDP Top10\", subtitle=\"\"),\n",
+ " xaxis_opts=opts.AxisOpts(\n",
+ " axislabel_opts=opts.LabelOpts(formatter=\"{value} /万亿\")\n",
+ " ),)\n",
+ "bar.render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 120,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 120,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "bar = Bar()\n",
+ "bar.add_xaxis(mid_high_gdp_top20['Country Name'].values.tolist())\n",
+ "bar.add_yaxis(\"\", mid_high_gdp_top20['2018'].values.tolist())\n",
+ "bar.reversal_axis()\n",
+ "bar.set_series_opts(label_opts=opts.LabelOpts(position=\"right\"))\n",
+ "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"中高等收入国家GDP Top20\", subtitle=\"\"),\n",
+ " xaxis_opts=opts.AxisOpts(\n",
+ " axislabel_opts=opts.LabelOpts(formatter=\"{value} /万亿\")\n",
+ " ),)\n",
+ "bar.render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 121,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# 中低等收入国家\n",
+ "mid_low = country_data[country_data['Income_Group'] == '中低等收入国家']\n",
+ "mid_low_gdp = pd.merge(mid_low, gdp, how='inner')\n",
+ "mid_low_gdp['2018'] = mid_low_gdp['2018'].apply(lambda x: x/1000000000000)\n",
+ "mid_low_gdp_top10 = mid_low_gdp[['Country Name', 'Country Code', '2018']].sort_values(by='2018', ascending=False)[:10]\n",
+ "mid_low_gdp_top20 = mid_low_gdp[['Country Name', 'Country Code', '2018']].sort_values(by='2018', ascending=False)[:20]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 122,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 122,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "bar = Bar()\n",
+ "bar.add_xaxis(mid_low_gdp_top10['Country Name'].values.tolist())\n",
+ "bar.add_yaxis(\"\", mid_low_gdp_top10['2018'].values.tolist())\n",
+ "bar.reversal_axis()\n",
+ "bar.set_series_opts(label_opts=opts.LabelOpts(position=\"right\"))\n",
+ "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"中低等收入国家GDP Top10\", subtitle=\"\"),\n",
+ " xaxis_opts=opts.AxisOpts(\n",
+ " axislabel_opts=opts.LabelOpts(formatter=\"{value} /万亿\")\n",
+ " ),)\n",
+ "bar.render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 123,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 123,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "bar = Bar()\n",
+ "bar.add_xaxis(mid_low_gdp_top20['Country Name'].values.tolist())\n",
+ "bar.add_yaxis(\"\", mid_low_gdp_top20['2018'].values.tolist())\n",
+ "bar.reversal_axis()\n",
+ "bar.set_series_opts(label_opts=opts.LabelOpts(position=\"right\"))\n",
+ "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"中低等收入国家GDP Top20\", subtitle=\"\"),\n",
+ " xaxis_opts=opts.AxisOpts(\n",
+ " axislabel_opts=opts.LabelOpts(formatter=\"{value} /万亿\")\n",
+ " ),)\n",
+ "bar.render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 126,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# 低等收入国家\n",
+ "low = country_data[country_data['Income_Group'] == '低收入国家']\n",
+ "low_gdp = pd.merge(low, gdp, how='inner')\n",
+ "low_gdp['2018'] = low_gdp['2018'].apply(lambda x: x/1000000000000)\n",
+ "low_gdp_top10 = low_gdp[['Country Name', 'Country Code', '2018']].sort_values(by='2018', ascending=False)[:10]\n",
+ "low_gdp_top20 = low_gdp[['Country Name', 'Country Code', '2018']].sort_values(by='2018', ascending=False)[:20]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 127,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 127,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "bar = Bar()\n",
+ "bar.add_xaxis(low_gdp_top10['Country Name'].values.tolist())\n",
+ "bar.add_yaxis(\"\", low_gdp_top10['2018'].values.tolist())\n",
+ "bar.reversal_axis()\n",
+ "bar.set_series_opts(label_opts=opts.LabelOpts(position=\"right\"))\n",
+ "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"低等收入国家GDP Top10\", subtitle=\"\"),\n",
+ " xaxis_opts=opts.AxisOpts(\n",
+ " axislabel_opts=opts.LabelOpts(formatter=\"{value} /万亿\")\n",
+ " ),)\n",
+ "bar.render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 129,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 129,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "bar = Bar()\n",
+ "bar.add_xaxis(low_gdp_top20['Country Name'].values.tolist())\n",
+ "bar.add_yaxis(\"\", low_gdp_top20['2018'].values.tolist())\n",
+ "bar.reversal_axis()\n",
+ "bar.set_series_opts(label_opts=opts.LabelOpts(position=\"right\"))\n",
+ "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"低等收入国家GDP Top20\", subtitle=\"\"),\n",
+ " xaxis_opts=opts.AxisOpts(\n",
+ " axislabel_opts=opts.LabelOpts(formatter=\"{value} /万亿\")\n",
+ " ),)\n",
+ "bar.render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 91,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " Region | \n",
+ " Income_Group | \n",
+ " Unnamed: 4 | \n",
+ " Indicator Name | \n",
+ " Indicator Code | \n",
+ " 1960 | \n",
+ " 1961 | \n",
+ " 1962 | \n",
+ " ... | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ " 2017 | \n",
+ " 2018 | \n",
+ " 2019 | \n",
+ " Unnamed: 64 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 阿鲁巴 | \n",
+ " ABW | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 2.549721e+09 | \n",
+ " 2.534637e+09 | \n",
+ " 2.581564e+09 | \n",
+ " 2.649721e+09 | \n",
+ " 2.691620e+09 | \n",
+ " 2.646927e+09 | \n",
+ " 2.700559e+09 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 安道尔共和国 | \n",
+ " AND | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 3.442063e+09 | \n",
+ " 3.164615e+09 | \n",
+ " 3.281585e+09 | \n",
+ " 3.350736e+09 | \n",
+ " 2.811489e+09 | \n",
+ " 2.877312e+09 | \n",
+ " 3.013387e+09 | \n",
+ " 3.236544e+09 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 阿拉伯联合酋长国 | \n",
+ " ARE | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 3.506660e+11 | \n",
+ " 3.745906e+11 | \n",
+ " 3.901076e+11 | \n",
+ " 4.031371e+11 | \n",
+ " 3.581351e+11 | \n",
+ " 3.570451e+11 | \n",
+ " 3.825751e+11 | \n",
+ " 4.141789e+11 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 安提瓜和巴布达 | \n",
+ " ATG | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 1.142043e+09 | \n",
+ " 1.211412e+09 | \n",
+ " 1.192920e+09 | \n",
+ " 1.275577e+09 | \n",
+ " 1.359195e+09 | \n",
+ " 1.464630e+09 | \n",
+ " 1.510085e+09 | \n",
+ " 1.623804e+09 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 澳大利亚 | \n",
+ " AUS | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 1.857767e+10 | \n",
+ " 1.965394e+10 | \n",
+ " 1.989249e+10 | \n",
+ " ... | \n",
+ " 1.396650e+12 | \n",
+ " 1.546152e+12 | \n",
+ " 1.576184e+12 | \n",
+ " 1.467484e+12 | \n",
+ " 1.351520e+12 | \n",
+ " 1.210028e+12 | \n",
+ " 1.330803e+12 | \n",
+ " 1.432195e+12 | \n",
+ " NaN | \n",
+ " NaN | \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",
+ " 74 | \n",
+ " 特立尼达和多巴哥 | \n",
+ " TTO | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 5.356701e+08 | \n",
+ " 5.849612e+08 | \n",
+ " 6.193192e+08 | \n",
+ " ... | \n",
+ " 2.543301e+10 | \n",
+ " 2.576933e+10 | \n",
+ " 2.711026e+10 | \n",
+ " 2.747797e+10 | \n",
+ " 2.512152e+10 | \n",
+ " 2.174639e+10 | \n",
+ " 2.225046e+10 | \n",
+ " 2.341035e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 75 | \n",
+ " 乌拉圭 | \n",
+ " URY | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 1.242289e+09 | \n",
+ " 1.547389e+09 | \n",
+ " 1.710004e+09 | \n",
+ " ... | \n",
+ " 4.796244e+10 | \n",
+ " 5.126439e+10 | \n",
+ " 5.753123e+10 | \n",
+ " 5.723601e+10 | \n",
+ " 5.327430e+10 | \n",
+ " 5.268761e+10 | \n",
+ " 5.648899e+10 | \n",
+ " 5.959689e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 76 | \n",
+ " 美国 | \n",
+ " USA | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 5.433000e+11 | \n",
+ " 5.633000e+11 | \n",
+ " 6.051000e+11 | \n",
+ " ... | \n",
+ " 1.554258e+13 | \n",
+ " 1.619701e+13 | \n",
+ " 1.678485e+13 | \n",
+ " 1.752175e+13 | \n",
+ " 1.821930e+13 | \n",
+ " 1.870719e+13 | \n",
+ " 1.948539e+13 | \n",
+ " 2.049410e+13 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 77 | \n",
+ " 英屬維爾京群島 | \n",
+ " VGB | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 78 | \n",
+ " 美属维京群岛 | \n",
+ " VIR | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 4.239000e+09 | \n",
+ " 4.095000e+09 | \n",
+ " 3.762000e+09 | \n",
+ " 3.622000e+09 | \n",
+ " 3.748000e+09 | \n",
+ " 3.863000e+09 | \n",
+ " 3.855000e+09 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
79 rows × 68 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code Region Income_Group Unnamed: 4 Indicator Name \\\n",
+ "0 阿鲁巴 ABW NaN 高收入国家 NaN GDP(现价美元) \n",
+ "1 安道尔共和国 AND NaN 高收入国家 NaN GDP(现价美元) \n",
+ "2 阿拉伯联合酋长国 ARE NaN 高收入国家 NaN GDP(现价美元) \n",
+ "3 安提瓜和巴布达 ATG NaN 高收入国家 NaN GDP(现价美元) \n",
+ "4 澳大利亚 AUS NaN 高收入国家 NaN GDP(现价美元) \n",
+ ".. ... ... ... ... ... ... \n",
+ "74 特立尼达和多巴哥 TTO NaN 高收入国家 NaN GDP(现价美元) \n",
+ "75 乌拉圭 URY NaN 高收入国家 NaN GDP(现价美元) \n",
+ "76 美国 USA NaN 高收入国家 NaN GDP(现价美元) \n",
+ "77 英屬維爾京群島 VGB NaN 高收入国家 NaN GDP(现价美元) \n",
+ "78 美属维京群岛 VIR NaN 高收入国家 NaN GDP(现价美元) \n",
+ "\n",
+ " Indicator Code 1960 1961 1962 ... \\\n",
+ "0 NY.GDP.MKTP.CD NaN NaN NaN ... \n",
+ "1 NY.GDP.MKTP.CD NaN NaN NaN ... \n",
+ "2 NY.GDP.MKTP.CD NaN NaN NaN ... \n",
+ "3 NY.GDP.MKTP.CD NaN NaN NaN ... \n",
+ "4 NY.GDP.MKTP.CD 1.857767e+10 1.965394e+10 1.989249e+10 ... \n",
+ ".. ... ... ... ... ... \n",
+ "74 NY.GDP.MKTP.CD 5.356701e+08 5.849612e+08 6.193192e+08 ... \n",
+ "75 NY.GDP.MKTP.CD 1.242289e+09 1.547389e+09 1.710004e+09 ... \n",
+ "76 NY.GDP.MKTP.CD 5.433000e+11 5.633000e+11 6.051000e+11 ... \n",
+ "77 NY.GDP.MKTP.CD NaN NaN NaN ... \n",
+ "78 NY.GDP.MKTP.CD NaN NaN NaN ... \n",
+ "\n",
+ " 2011 2012 2013 2014 2015 \\\n",
+ "0 2.549721e+09 2.534637e+09 2.581564e+09 2.649721e+09 2.691620e+09 \n",
+ "1 3.442063e+09 3.164615e+09 3.281585e+09 3.350736e+09 2.811489e+09 \n",
+ "2 3.506660e+11 3.745906e+11 3.901076e+11 4.031371e+11 3.581351e+11 \n",
+ "3 1.142043e+09 1.211412e+09 1.192920e+09 1.275577e+09 1.359195e+09 \n",
+ "4 1.396650e+12 1.546152e+12 1.576184e+12 1.467484e+12 1.351520e+12 \n",
+ ".. ... ... ... ... ... \n",
+ "74 2.543301e+10 2.576933e+10 2.711026e+10 2.747797e+10 2.512152e+10 \n",
+ "75 4.796244e+10 5.126439e+10 5.753123e+10 5.723601e+10 5.327430e+10 \n",
+ "76 1.554258e+13 1.619701e+13 1.678485e+13 1.752175e+13 1.821930e+13 \n",
+ "77 NaN NaN NaN NaN NaN \n",
+ "78 4.239000e+09 4.095000e+09 3.762000e+09 3.622000e+09 3.748000e+09 \n",
+ "\n",
+ " 2016 2017 2018 2019 Unnamed: 64 \n",
+ "0 2.646927e+09 2.700559e+09 NaN NaN NaN \n",
+ "1 2.877312e+09 3.013387e+09 3.236544e+09 NaN NaN \n",
+ "2 3.570451e+11 3.825751e+11 4.141789e+11 NaN NaN \n",
+ "3 1.464630e+09 1.510085e+09 1.623804e+09 NaN NaN \n",
+ "4 1.210028e+12 1.330803e+12 1.432195e+12 NaN NaN \n",
+ ".. ... ... ... ... ... \n",
+ "74 2.174639e+10 2.225046e+10 2.341035e+10 NaN NaN \n",
+ "75 5.268761e+10 5.648899e+10 5.959689e+10 NaN NaN \n",
+ "76 1.870719e+13 1.948539e+13 2.049410e+13 NaN NaN \n",
+ "77 NaN NaN NaN NaN NaN \n",
+ "78 3.863000e+09 3.855000e+09 NaN NaN NaN \n",
+ "\n",
+ "[79 rows x 68 columns]"
+ ]
+ },
+ "execution_count": 91,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "high_gdp"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " Indicator Name | \n",
+ " Indicator Code | \n",
+ " 1960 | \n",
+ " 1961 | \n",
+ " 1962 | \n",
+ " 1963 | \n",
+ " 1964 | \n",
+ " 1965 | \n",
+ " ... | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ " 2017 | \n",
+ " 2018 | \n",
+ " 2019 | \n",
+ " Unnamed: 64 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 阿鲁巴 | \n",
+ " ABW | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 2.549721e+09 | \n",
+ " 2.534637e+09 | \n",
+ " 2.581564e+09 | \n",
+ " 2.649721e+09 | \n",
+ " 2.691620e+09 | \n",
+ " 2.646927e+09 | \n",
+ " 2.700559e+09 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 阿富汗 | \n",
+ " AFG | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 5.377778e+08 | \n",
+ " 5.488889e+08 | \n",
+ " 5.466667e+08 | \n",
+ " 7.511112e+08 | \n",
+ " 8.000000e+08 | \n",
+ " 1.006667e+09 | \n",
+ " ... | \n",
+ " 1.780428e+10 | \n",
+ " 2.000162e+10 | \n",
+ " 2.056105e+10 | \n",
+ " 2.048487e+10 | \n",
+ " 1.990711e+10 | \n",
+ " 1.936264e+10 | \n",
+ " 2.019176e+10 | \n",
+ " 1.936297e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 安哥拉 | \n",
+ " AGO | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 1.117897e+11 | \n",
+ " 1.280529e+11 | \n",
+ " 1.367099e+11 | \n",
+ " 1.457122e+11 | \n",
+ " 1.161936e+11 | \n",
+ " 1.011239e+11 | \n",
+ " 1.221238e+11 | \n",
+ " 1.057510e+11 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 阿尔巴尼亚 | \n",
+ " ALB | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 1.289087e+10 | \n",
+ " 1.231978e+10 | \n",
+ " 1.277628e+10 | \n",
+ " 1.322825e+10 | \n",
+ " 1.138693e+10 | \n",
+ " 1.186135e+10 | \n",
+ " 1.302506e+10 | \n",
+ " 1.505888e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 安道尔共和国 | \n",
+ " AND | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 3.442063e+09 | \n",
+ " 3.164615e+09 | \n",
+ " 3.281585e+09 | \n",
+ " 3.350736e+09 | \n",
+ " 2.811489e+09 | \n",
+ " 2.877312e+09 | \n",
+ " 3.013387e+09 | \n",
+ " 3.236544e+09 | \n",
+ " NaN | \n",
+ " NaN | \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",
+ " 259 | \n",
+ " 科索沃 | \n",
+ " XKX | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 6.691827e+09 | \n",
+ " 6.499936e+09 | \n",
+ " 7.071960e+09 | \n",
+ " 7.386891e+09 | \n",
+ " 6.440612e+09 | \n",
+ " 6.714712e+09 | \n",
+ " 7.227765e+09 | \n",
+ " 7.900269e+09 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 260 | \n",
+ " 也门共和国 | \n",
+ " YEM | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 3.272642e+10 | \n",
+ " 3.540134e+10 | \n",
+ " 4.041523e+10 | \n",
+ " 4.322859e+10 | \n",
+ " 4.262833e+10 | \n",
+ " 3.096824e+10 | \n",
+ " 2.681870e+10 | \n",
+ " 2.691440e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 261 | \n",
+ " 南非 | \n",
+ " ZAF | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 7.575397e+09 | \n",
+ " 7.972997e+09 | \n",
+ " 8.497997e+09 | \n",
+ " 9.423396e+09 | \n",
+ " 1.037400e+10 | \n",
+ " 1.133440e+10 | \n",
+ " ... | \n",
+ " 4.164170e+11 | \n",
+ " 3.963294e+11 | \n",
+ " 3.666449e+11 | \n",
+ " 3.506376e+11 | \n",
+ " 3.174156e+11 | \n",
+ " 2.963409e+11 | \n",
+ " 3.492681e+11 | \n",
+ " 3.682882e+11 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 262 | \n",
+ " 赞比亚 | \n",
+ " ZMB | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 7.130000e+08 | \n",
+ " 6.962857e+08 | \n",
+ " 6.931429e+08 | \n",
+ " 7.187143e+08 | \n",
+ " 8.394286e+08 | \n",
+ " 1.082857e+09 | \n",
+ " ... | \n",
+ " 2.346010e+10 | \n",
+ " 2.550337e+10 | \n",
+ " 2.804546e+10 | \n",
+ " 2.715063e+10 | \n",
+ " 2.115439e+10 | \n",
+ " 2.095475e+10 | \n",
+ " 2.586814e+10 | \n",
+ " 2.672007e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 263 | \n",
+ " 津巴布韦 | \n",
+ " ZWE | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 1.052990e+09 | \n",
+ " 1.096647e+09 | \n",
+ " 1.117602e+09 | \n",
+ " 1.159512e+09 | \n",
+ " 1.217138e+09 | \n",
+ " 1.311436e+09 | \n",
+ " ... | \n",
+ " 1.410192e+10 | \n",
+ " 1.711485e+10 | \n",
+ " 1.909102e+10 | \n",
+ " 1.949552e+10 | \n",
+ " 1.996312e+10 | \n",
+ " 2.054868e+10 | \n",
+ " 2.281301e+10 | \n",
+ " 3.100052e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
264 rows × 65 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code Indicator Name Indicator Code 1960 \\\n",
+ "0 阿鲁巴 ABW GDP(现价美元) NY.GDP.MKTP.CD NaN \n",
+ "1 阿富汗 AFG GDP(现价美元) NY.GDP.MKTP.CD 5.377778e+08 \n",
+ "2 安哥拉 AGO GDP(现价美元) NY.GDP.MKTP.CD NaN \n",
+ "3 阿尔巴尼亚 ALB GDP(现价美元) NY.GDP.MKTP.CD NaN \n",
+ "4 安道尔共和国 AND GDP(现价美元) NY.GDP.MKTP.CD NaN \n",
+ ".. ... ... ... ... ... \n",
+ "259 科索沃 XKX GDP(现价美元) NY.GDP.MKTP.CD NaN \n",
+ "260 也门共和国 YEM GDP(现价美元) NY.GDP.MKTP.CD NaN \n",
+ "261 南非 ZAF GDP(现价美元) NY.GDP.MKTP.CD 7.575397e+09 \n",
+ "262 赞比亚 ZMB GDP(现价美元) NY.GDP.MKTP.CD 7.130000e+08 \n",
+ "263 津巴布韦 ZWE GDP(现价美元) NY.GDP.MKTP.CD 1.052990e+09 \n",
+ "\n",
+ " 1961 1962 1963 1964 1965 \\\n",
+ "0 NaN NaN NaN NaN NaN \n",
+ "1 5.488889e+08 5.466667e+08 7.511112e+08 8.000000e+08 1.006667e+09 \n",
+ "2 NaN NaN NaN NaN NaN \n",
+ "3 NaN NaN NaN NaN NaN \n",
+ "4 NaN NaN NaN NaN NaN \n",
+ ".. ... ... ... ... ... \n",
+ "259 NaN NaN NaN NaN NaN \n",
+ "260 NaN NaN NaN NaN NaN \n",
+ "261 7.972997e+09 8.497997e+09 9.423396e+09 1.037400e+10 1.133440e+10 \n",
+ "262 6.962857e+08 6.931429e+08 7.187143e+08 8.394286e+08 1.082857e+09 \n",
+ "263 1.096647e+09 1.117602e+09 1.159512e+09 1.217138e+09 1.311436e+09 \n",
+ "\n",
+ " ... 2011 2012 2013 2014 \\\n",
+ "0 ... 2.549721e+09 2.534637e+09 2.581564e+09 2.649721e+09 \n",
+ "1 ... 1.780428e+10 2.000162e+10 2.056105e+10 2.048487e+10 \n",
+ "2 ... 1.117897e+11 1.280529e+11 1.367099e+11 1.457122e+11 \n",
+ "3 ... 1.289087e+10 1.231978e+10 1.277628e+10 1.322825e+10 \n",
+ "4 ... 3.442063e+09 3.164615e+09 3.281585e+09 3.350736e+09 \n",
+ ".. ... ... ... ... ... \n",
+ "259 ... 6.691827e+09 6.499936e+09 7.071960e+09 7.386891e+09 \n",
+ "260 ... 3.272642e+10 3.540134e+10 4.041523e+10 4.322859e+10 \n",
+ "261 ... 4.164170e+11 3.963294e+11 3.666449e+11 3.506376e+11 \n",
+ "262 ... 2.346010e+10 2.550337e+10 2.804546e+10 2.715063e+10 \n",
+ "263 ... 1.410192e+10 1.711485e+10 1.909102e+10 1.949552e+10 \n",
+ "\n",
+ " 2015 2016 2017 2018 2019 Unnamed: 64 \n",
+ "0 2.691620e+09 2.646927e+09 2.700559e+09 NaN NaN NaN \n",
+ "1 1.990711e+10 1.936264e+10 2.019176e+10 1.936297e+10 NaN NaN \n",
+ "2 1.161936e+11 1.011239e+11 1.221238e+11 1.057510e+11 NaN NaN \n",
+ "3 1.138693e+10 1.186135e+10 1.302506e+10 1.505888e+10 NaN NaN \n",
+ "4 2.811489e+09 2.877312e+09 3.013387e+09 3.236544e+09 NaN NaN \n",
+ ".. ... ... ... ... ... ... \n",
+ "259 6.440612e+09 6.714712e+09 7.227765e+09 7.900269e+09 NaN NaN \n",
+ "260 4.262833e+10 3.096824e+10 2.681870e+10 2.691440e+10 NaN NaN \n",
+ "261 3.174156e+11 2.963409e+11 3.492681e+11 3.682882e+11 NaN NaN \n",
+ "262 2.115439e+10 2.095475e+10 2.586814e+10 2.672007e+10 NaN NaN \n",
+ "263 1.996312e+10 2.054868e+10 2.281301e+10 3.100052e+10 NaN NaN \n",
+ "\n",
+ "[264 rows x 65 columns]"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "gdp"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "country_gdp = pd.merge(country_data, gdp, how='inner')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " Region | \n",
+ " Income_Group | \n",
+ " Unnamed: 4 | \n",
+ " Indicator Name | \n",
+ " Indicator Code | \n",
+ " 1960 | \n",
+ " 1961 | \n",
+ " 1962 | \n",
+ " ... | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ " 2017 | \n",
+ " 2018 | \n",
+ " 2019 | \n",
+ " Unnamed: 64 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 阿鲁巴 | \n",
+ " ABW | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 2.549721e+09 | \n",
+ " 2.534637e+09 | \n",
+ " 2.581564e+09 | \n",
+ " 2.649721e+09 | \n",
+ " 2.691620e+09 | \n",
+ " 2.646927e+09 | \n",
+ " 2.700559e+09 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 阿富汗 | \n",
+ " AFG | \n",
+ " 南亚 | \n",
+ " 低收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 5.377778e+08 | \n",
+ " 5.488889e+08 | \n",
+ " 5.466667e+08 | \n",
+ " ... | \n",
+ " 1.780428e+10 | \n",
+ " 2.000162e+10 | \n",
+ " 2.056105e+10 | \n",
+ " 2.048487e+10 | \n",
+ " 1.990711e+10 | \n",
+ " 1.936264e+10 | \n",
+ " 2.019176e+10 | \n",
+ " 1.936297e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 安哥拉 | \n",
+ " AGO | \n",
+ " 撒哈拉以南非洲地区(不包括高收入) | \n",
+ " 中低等收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 1.117897e+11 | \n",
+ " 1.280529e+11 | \n",
+ " 1.367099e+11 | \n",
+ " 1.457122e+11 | \n",
+ " 1.161936e+11 | \n",
+ " 1.011239e+11 | \n",
+ " 1.221238e+11 | \n",
+ " 1.057510e+11 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 阿尔巴尼亚 | \n",
+ " ALB | \n",
+ " 欧洲与中亚地区(不包括高收入) | \n",
+ " 中高等收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 1.289087e+10 | \n",
+ " 1.231978e+10 | \n",
+ " 1.277628e+10 | \n",
+ " 1.322825e+10 | \n",
+ " 1.138693e+10 | \n",
+ " 1.186135e+10 | \n",
+ " 1.302506e+10 | \n",
+ " 1.505888e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 安道尔共和国 | \n",
+ " AND | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 3.442063e+09 | \n",
+ " 3.164615e+09 | \n",
+ " 3.281585e+09 | \n",
+ " 3.350736e+09 | \n",
+ " 2.811489e+09 | \n",
+ " 2.877312e+09 | \n",
+ " 3.013387e+09 | \n",
+ " 3.236544e+09 | \n",
+ " NaN | \n",
+ " NaN | \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",
+ " 211 | \n",
+ " 科索沃 | \n",
+ " XKX | \n",
+ " 欧洲与中亚地区(不包括高收入) | \n",
+ " 中高等收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 6.691827e+09 | \n",
+ " 6.499936e+09 | \n",
+ " 7.071960e+09 | \n",
+ " 7.386891e+09 | \n",
+ " 6.440612e+09 | \n",
+ " 6.714712e+09 | \n",
+ " 7.227765e+09 | \n",
+ " 7.900269e+09 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 212 | \n",
+ " 也门共和国 | \n",
+ " YEM | \n",
+ " 中东与北非地区(不包括高收入) | \n",
+ " 低收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 3.272642e+10 | \n",
+ " 3.540134e+10 | \n",
+ " 4.041523e+10 | \n",
+ " 4.322859e+10 | \n",
+ " 4.262833e+10 | \n",
+ " 3.096824e+10 | \n",
+ " 2.681870e+10 | \n",
+ " 2.691440e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 213 | \n",
+ " 南非 | \n",
+ " ZAF | \n",
+ " 撒哈拉以南非洲地区(不包括高收入) | \n",
+ " 中高等收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 7.575397e+09 | \n",
+ " 7.972997e+09 | \n",
+ " 8.497997e+09 | \n",
+ " ... | \n",
+ " 4.164170e+11 | \n",
+ " 3.963294e+11 | \n",
+ " 3.666449e+11 | \n",
+ " 3.506376e+11 | \n",
+ " 3.174156e+11 | \n",
+ " 2.963409e+11 | \n",
+ " 3.492681e+11 | \n",
+ " 3.682882e+11 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 214 | \n",
+ " 赞比亚 | \n",
+ " ZMB | \n",
+ " 撒哈拉以南非洲地区(不包括高收入) | \n",
+ " 中低等收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 7.130000e+08 | \n",
+ " 6.962857e+08 | \n",
+ " 6.931429e+08 | \n",
+ " ... | \n",
+ " 2.346010e+10 | \n",
+ " 2.550337e+10 | \n",
+ " 2.804546e+10 | \n",
+ " 2.715063e+10 | \n",
+ " 2.115439e+10 | \n",
+ " 2.095475e+10 | \n",
+ " 2.586814e+10 | \n",
+ " 2.672007e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 215 | \n",
+ " 津巴布韦 | \n",
+ " ZWE | \n",
+ " 撒哈拉以南非洲地区(不包括高收入) | \n",
+ " 中低等收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 1.052990e+09 | \n",
+ " 1.096647e+09 | \n",
+ " 1.117602e+09 | \n",
+ " ... | \n",
+ " 1.410192e+10 | \n",
+ " 1.711485e+10 | \n",
+ " 1.909102e+10 | \n",
+ " 1.949552e+10 | \n",
+ " 1.996312e+10 | \n",
+ " 2.054868e+10 | \n",
+ " 2.281301e+10 | \n",
+ " 3.100052e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
216 rows × 68 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code Region Income_Group Unnamed: 4 \\\n",
+ "0 阿鲁巴 ABW NaN 高收入国家 NaN \n",
+ "1 阿富汗 AFG 南亚 低收入国家 NaN \n",
+ "2 安哥拉 AGO 撒哈拉以南非洲地区(不包括高收入) 中低等收入国家 NaN \n",
+ "3 阿尔巴尼亚 ALB 欧洲与中亚地区(不包括高收入) 中高等收入国家 NaN \n",
+ "4 安道尔共和国 AND NaN 高收入国家 NaN \n",
+ ".. ... ... ... ... ... \n",
+ "211 科索沃 XKX 欧洲与中亚地区(不包括高收入) 中高等收入国家 NaN \n",
+ "212 也门共和国 YEM 中东与北非地区(不包括高收入) 低收入国家 NaN \n",
+ "213 南非 ZAF 撒哈拉以南非洲地区(不包括高收入) 中高等收入国家 NaN \n",
+ "214 赞比亚 ZMB 撒哈拉以南非洲地区(不包括高收入) 中低等收入国家 NaN \n",
+ "215 津巴布韦 ZWE 撒哈拉以南非洲地区(不包括高收入) 中低等收入国家 NaN \n",
+ "\n",
+ " Indicator Name Indicator Code 1960 1961 1962 \\\n",
+ "0 GDP(现价美元) NY.GDP.MKTP.CD NaN NaN NaN \n",
+ "1 GDP(现价美元) NY.GDP.MKTP.CD 5.377778e+08 5.488889e+08 5.466667e+08 \n",
+ "2 GDP(现价美元) NY.GDP.MKTP.CD NaN NaN NaN \n",
+ "3 GDP(现价美元) NY.GDP.MKTP.CD NaN NaN NaN \n",
+ "4 GDP(现价美元) NY.GDP.MKTP.CD NaN NaN NaN \n",
+ ".. ... ... ... ... ... \n",
+ "211 GDP(现价美元) NY.GDP.MKTP.CD NaN NaN NaN \n",
+ "212 GDP(现价美元) NY.GDP.MKTP.CD NaN NaN NaN \n",
+ "213 GDP(现价美元) NY.GDP.MKTP.CD 7.575397e+09 7.972997e+09 8.497997e+09 \n",
+ "214 GDP(现价美元) NY.GDP.MKTP.CD 7.130000e+08 6.962857e+08 6.931429e+08 \n",
+ "215 GDP(现价美元) NY.GDP.MKTP.CD 1.052990e+09 1.096647e+09 1.117602e+09 \n",
+ "\n",
+ " ... 2011 2012 2013 2014 \\\n",
+ "0 ... 2.549721e+09 2.534637e+09 2.581564e+09 2.649721e+09 \n",
+ "1 ... 1.780428e+10 2.000162e+10 2.056105e+10 2.048487e+10 \n",
+ "2 ... 1.117897e+11 1.280529e+11 1.367099e+11 1.457122e+11 \n",
+ "3 ... 1.289087e+10 1.231978e+10 1.277628e+10 1.322825e+10 \n",
+ "4 ... 3.442063e+09 3.164615e+09 3.281585e+09 3.350736e+09 \n",
+ ".. ... ... ... ... ... \n",
+ "211 ... 6.691827e+09 6.499936e+09 7.071960e+09 7.386891e+09 \n",
+ "212 ... 3.272642e+10 3.540134e+10 4.041523e+10 4.322859e+10 \n",
+ "213 ... 4.164170e+11 3.963294e+11 3.666449e+11 3.506376e+11 \n",
+ "214 ... 2.346010e+10 2.550337e+10 2.804546e+10 2.715063e+10 \n",
+ "215 ... 1.410192e+10 1.711485e+10 1.909102e+10 1.949552e+10 \n",
+ "\n",
+ " 2015 2016 2017 2018 2019 Unnamed: 64 \n",
+ "0 2.691620e+09 2.646927e+09 2.700559e+09 NaN NaN NaN \n",
+ "1 1.990711e+10 1.936264e+10 2.019176e+10 1.936297e+10 NaN NaN \n",
+ "2 1.161936e+11 1.011239e+11 1.221238e+11 1.057510e+11 NaN NaN \n",
+ "3 1.138693e+10 1.186135e+10 1.302506e+10 1.505888e+10 NaN NaN \n",
+ "4 2.811489e+09 2.877312e+09 3.013387e+09 3.236544e+09 NaN NaN \n",
+ ".. ... ... ... ... ... ... \n",
+ "211 6.440612e+09 6.714712e+09 7.227765e+09 7.900269e+09 NaN NaN \n",
+ "212 4.262833e+10 3.096824e+10 2.681870e+10 2.691440e+10 NaN NaN \n",
+ "213 3.174156e+11 2.963409e+11 3.492681e+11 3.682882e+11 NaN NaN \n",
+ "214 2.115439e+10 2.095475e+10 2.586814e+10 2.672007e+10 NaN NaN \n",
+ "215 1.996312e+10 2.054868e+10 2.281301e+10 3.100052e+10 NaN NaN \n",
+ "\n",
+ "[216 rows x 68 columns]"
+ ]
+ },
+ "execution_count": 57,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "country_gdp"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# country_gdp['2018'] = country_gdp['2018'].apply(lambda x: x/1000000000000)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 59,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " 2018 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 202 | \n",
+ " 美国 | \n",
+ " USA | \n",
+ " 20.494100 | \n",
+ "
\n",
+ " \n",
+ " 36 | \n",
+ " 中国 | \n",
+ " CHN | \n",
+ " 13.608152 | \n",
+ "
\n",
+ " \n",
+ " 97 | \n",
+ " 日本 | \n",
+ " JPN | \n",
+ " 4.970916 | \n",
+ "
\n",
+ " \n",
+ " 50 | \n",
+ " 德国 | \n",
+ " DEU | \n",
+ " 3.996759 | \n",
+ "
\n",
+ " \n",
+ " 68 | \n",
+ " 英国 | \n",
+ " GBR | \n",
+ " 2.825208 | \n",
+ "
\n",
+ " \n",
+ " 64 | \n",
+ " 法国 | \n",
+ " FRA | \n",
+ " 2.777535 | \n",
+ "
\n",
+ " \n",
+ " 89 | \n",
+ " 印度 | \n",
+ " IND | \n",
+ " 2.726323 | \n",
+ "
\n",
+ " \n",
+ " 94 | \n",
+ " 意大利 | \n",
+ " ITA | \n",
+ " 2.073902 | \n",
+ "
\n",
+ " \n",
+ " 26 | \n",
+ " 巴西 | \n",
+ " BRA | \n",
+ " 1.868626 | \n",
+ "
\n",
+ " \n",
+ " 32 | \n",
+ " 加拿大 | \n",
+ " CAN | \n",
+ " 1.712510 | \n",
+ "
\n",
+ " \n",
+ " 164 | \n",
+ " 俄罗斯联邦 | \n",
+ " RUS | \n",
+ " 1.657554 | \n",
+ "
\n",
+ " \n",
+ " 104 | \n",
+ " 大韩民国 | \n",
+ " KOR | \n",
+ " 1.619424 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 澳大利亚 | \n",
+ " AUS | \n",
+ " 1.432195 | \n",
+ "
\n",
+ " \n",
+ " 59 | \n",
+ " 西班牙 | \n",
+ " ESP | \n",
+ " 1.426189 | \n",
+ "
\n",
+ " \n",
+ " 124 | \n",
+ " 墨西哥 | \n",
+ " MEX | \n",
+ " 1.223809 | \n",
+ "
\n",
+ " \n",
+ " 87 | \n",
+ " 印度尼西亚 | \n",
+ " IDN | \n",
+ " 1.042173 | \n",
+ "
\n",
+ " \n",
+ " 143 | \n",
+ " 荷兰 | \n",
+ " NLD | \n",
+ " 0.913658 | \n",
+ "
\n",
+ " \n",
+ " 166 | \n",
+ " 沙特阿拉伯 | \n",
+ " SAU | \n",
+ " 0.782483 | \n",
+ "
\n",
+ " \n",
+ " 196 | \n",
+ " 土耳其 | \n",
+ " TUR | \n",
+ " 0.766509 | \n",
+ "
\n",
+ " \n",
+ " 33 | \n",
+ " 瑞士 | \n",
+ " CHE | \n",
+ " 0.705501 | \n",
+ "
\n",
+ " \n",
+ " 155 | \n",
+ " 波兰 | \n",
+ " POL | \n",
+ " 0.585783 | \n",
+ "
\n",
+ " \n",
+ " 181 | \n",
+ " 瑞典 | \n",
+ " SWE | \n",
+ " 0.551032 | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " 比利时 | \n",
+ " BEL | \n",
+ " 0.531767 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 阿根廷 | \n",
+ " ARG | \n",
+ " 0.518475 | \n",
+ "
\n",
+ " \n",
+ " 189 | \n",
+ " 泰国 | \n",
+ " THA | \n",
+ " 0.504993 | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " 奥地利 | \n",
+ " AUT | \n",
+ " 0.455737 | \n",
+ "
\n",
+ " \n",
+ " 144 | \n",
+ " 挪威 | \n",
+ " NOR | \n",
+ " 0.434751 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 阿拉伯联合酋长国 | \n",
+ " ARE | \n",
+ " 0.414179 | \n",
+ "
\n",
+ " \n",
+ " 141 | \n",
+ " 尼日利亚 | \n",
+ " NGA | \n",
+ " 0.397270 | \n",
+ "
\n",
+ " \n",
+ " 90 | \n",
+ " 爱尔兰 | \n",
+ " IRL | \n",
+ " 0.382487 | \n",
+ "
\n",
+ " \n",
+ " 93 | \n",
+ " 以色列 | \n",
+ " ISR | \n",
+ " 0.369690 | \n",
+ "
\n",
+ " \n",
+ " 213 | \n",
+ " 南非 | \n",
+ " ZAF | \n",
+ " 0.368288 | \n",
+ "
\n",
+ " \n",
+ " 169 | \n",
+ " 新加坡 | \n",
+ " SGP | \n",
+ " 0.364157 | \n",
+ "
\n",
+ " \n",
+ " 82 | \n",
+ " 中国香港特别行政区 | \n",
+ " HKG | \n",
+ " 0.362993 | \n",
+ "
\n",
+ " \n",
+ " 137 | \n",
+ " 马来西亚 | \n",
+ " MYS | \n",
+ " 0.354348 | \n",
+ "
\n",
+ " \n",
+ " 53 | \n",
+ " 丹麦 | \n",
+ " DNK | \n",
+ " 0.352058 | \n",
+ "
\n",
+ " \n",
+ " 152 | \n",
+ " 菲律宾 | \n",
+ " PHL | \n",
+ " 0.330910 | \n",
+ "
\n",
+ " \n",
+ " 41 | \n",
+ " 哥伦比亚 | \n",
+ " COL | \n",
+ " 0.330228 | \n",
+ "
\n",
+ " \n",
+ " 149 | \n",
+ " 巴基斯坦 | \n",
+ " PAK | \n",
+ " 0.312570 | \n",
+ "
\n",
+ " \n",
+ " 35 | \n",
+ " 智利 | \n",
+ " CHL | \n",
+ " 0.298231 | \n",
+ "
\n",
+ " \n",
+ " 17 | \n",
+ " 孟加拉国 | \n",
+ " BGD | \n",
+ " 0.274025 | \n",
+ "
\n",
+ " \n",
+ " 62 | \n",
+ " 芬兰 | \n",
+ " FIN | \n",
+ " 0.273961 | \n",
+ "
\n",
+ " \n",
+ " 57 | \n",
+ " 阿拉伯埃及共和国 | \n",
+ " EGY | \n",
+ " 0.250895 | \n",
+ "
\n",
+ " \n",
+ " 49 | \n",
+ " 捷克共和国 | \n",
+ " CZE | \n",
+ " 0.245226 | \n",
+ "
\n",
+ " \n",
+ " 208 | \n",
+ " 越南 | \n",
+ " VNM | \n",
+ " 0.244948 | \n",
+ "
\n",
+ " \n",
+ " 163 | \n",
+ " 罗马尼亚 | \n",
+ " ROU | \n",
+ " 0.239553 | \n",
+ "
\n",
+ " \n",
+ " 158 | \n",
+ " 葡萄牙 | \n",
+ " PRT | \n",
+ " 0.237979 | \n",
+ "
\n",
+ " \n",
+ " 91 | \n",
+ " 伊拉克 | \n",
+ " IRQ | \n",
+ " 0.225914 | \n",
+ "
\n",
+ " \n",
+ " 151 | \n",
+ " 秘鲁 | \n",
+ " PER | \n",
+ " 0.222238 | \n",
+ "
\n",
+ " \n",
+ " 76 | \n",
+ " 希腊 | \n",
+ " GRC | \n",
+ " 0.218032 | \n",
+ "
\n",
+ " \n",
+ " 147 | \n",
+ " 新西兰 | \n",
+ " NZL | \n",
+ " 0.205025 | \n",
+ "
\n",
+ " \n",
+ " 162 | \n",
+ " 卡塔尔 | \n",
+ " QAT | \n",
+ " 0.192009 | \n",
+ "
\n",
+ " \n",
+ " 55 | \n",
+ " 阿尔及利亚 | \n",
+ " DZA | \n",
+ " 0.180689 | \n",
+ "
\n",
+ " \n",
+ " 98 | \n",
+ " 哈萨克斯坦 | \n",
+ " KAZ | \n",
+ " 0.170539 | \n",
+ "
\n",
+ " \n",
+ " 86 | \n",
+ " 匈牙利 | \n",
+ " HUN | \n",
+ " 0.155703 | \n",
+ "
\n",
+ " \n",
+ " 105 | \n",
+ " 科威特 | \n",
+ " KWT | \n",
+ " 0.141678 | \n",
+ "
\n",
+ " \n",
+ " 200 | \n",
+ " 乌克兰 | \n",
+ " UKR | \n",
+ " 0.130832 | \n",
+ "
\n",
+ " \n",
+ " 119 | \n",
+ " 摩洛哥 | \n",
+ " MAR | \n",
+ " 0.118495 | \n",
+ "
\n",
+ " \n",
+ " 56 | \n",
+ " 厄瓜多尔 | \n",
+ " ECU | \n",
+ " 0.108398 | \n",
+ "
\n",
+ " \n",
+ " 179 | \n",
+ " 斯洛伐克共和国 | \n",
+ " SVK | \n",
+ " 0.106472 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code 2018\n",
+ "202 美国 USA 20.494100\n",
+ "36 中国 CHN 13.608152\n",
+ "97 日本 JPN 4.970916\n",
+ "50 德国 DEU 3.996759\n",
+ "68 英国 GBR 2.825208\n",
+ "64 法国 FRA 2.777535\n",
+ "89 印度 IND 2.726323\n",
+ "94 意大利 ITA 2.073902\n",
+ "26 巴西 BRA 1.868626\n",
+ "32 加拿大 CAN 1.712510\n",
+ "164 俄罗斯联邦 RUS 1.657554\n",
+ "104 大韩民国 KOR 1.619424\n",
+ "10 澳大利亚 AUS 1.432195\n",
+ "59 西班牙 ESP 1.426189\n",
+ "124 墨西哥 MEX 1.223809\n",
+ "87 印度尼西亚 IDN 1.042173\n",
+ "143 荷兰 NLD 0.913658\n",
+ "166 沙特阿拉伯 SAU 0.782483\n",
+ "196 土耳其 TUR 0.766509\n",
+ "33 瑞士 CHE 0.705501\n",
+ "155 波兰 POL 0.585783\n",
+ "181 瑞典 SWE 0.551032\n",
+ "14 比利时 BEL 0.531767\n",
+ "6 阿根廷 ARG 0.518475\n",
+ "189 泰国 THA 0.504993\n",
+ "11 奥地利 AUT 0.455737\n",
+ "144 挪威 NOR 0.434751\n",
+ "5 阿拉伯联合酋长国 ARE 0.414179\n",
+ "141 尼日利亚 NGA 0.397270\n",
+ "90 爱尔兰 IRL 0.382487\n",
+ "93 以色列 ISR 0.369690\n",
+ "213 南非 ZAF 0.368288\n",
+ "169 新加坡 SGP 0.364157\n",
+ "82 中国香港特别行政区 HKG 0.362993\n",
+ "137 马来西亚 MYS 0.354348\n",
+ "53 丹麦 DNK 0.352058\n",
+ "152 菲律宾 PHL 0.330910\n",
+ "41 哥伦比亚 COL 0.330228\n",
+ "149 巴基斯坦 PAK 0.312570\n",
+ "35 智利 CHL 0.298231\n",
+ "17 孟加拉国 BGD 0.274025\n",
+ "62 芬兰 FIN 0.273961\n",
+ "57 阿拉伯埃及共和国 EGY 0.250895\n",
+ "49 捷克共和国 CZE 0.245226\n",
+ "208 越南 VNM 0.244948\n",
+ "163 罗马尼亚 ROU 0.239553\n",
+ "158 葡萄牙 PRT 0.237979\n",
+ "91 伊拉克 IRQ 0.225914\n",
+ "151 秘鲁 PER 0.222238\n",
+ "76 希腊 GRC 0.218032\n",
+ "147 新西兰 NZL 0.205025\n",
+ "162 卡塔尔 QAT 0.192009\n",
+ "55 阿尔及利亚 DZA 0.180689\n",
+ "98 哈萨克斯坦 KAZ 0.170539\n",
+ "86 匈牙利 HUN 0.155703\n",
+ "105 科威特 KWT 0.141678\n",
+ "200 乌克兰 UKR 0.130832\n",
+ "119 摩洛哥 MAR 0.118495\n",
+ "56 厄瓜多尔 ECU 0.108398\n",
+ "179 斯洛伐克共和国 SVK 0.106472"
+ ]
+ },
+ "execution_count": 59,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "country_gdp[['Country Name', 'Country Code', '2018']].sort_values(by='2018', ascending=False)[:60]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#############################\n",
+ "# 历年GDP分析"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": [
+ "df_china = country_gdp[country_gdp['Country Name']=='中国']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "c:\\users\\wei.zhou\\appdata\\local\\programs\\python\\python37-32\\lib\\site-packages\\ipykernel_launcher.py:2: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " \n"
+ ]
+ }
+ ],
+ "source": [
+ "for i in range(1960, 2019):\n",
+ " df_china[str(i)] = df_china[str(i)].apply(lambda x: x/1000000000000)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "c:\\users\\wei.zhou\\appdata\\local\\programs\\python\\python37-32\\lib\\site-packages\\ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " This is separate from the ipykernel package so we can avoid doing imports until\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " Region | \n",
+ " Income_Group | \n",
+ " Unnamed: 4 | \n",
+ " Indicator Name | \n",
+ " Indicator Code | \n",
+ " 1960 | \n",
+ " 1961 | \n",
+ " 1962 | \n",
+ " ... | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ " 2017 | \n",
+ " 2018 | \n",
+ " 2019 | \n",
+ " Unnamed: 64 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 202 | \n",
+ " 美国 | \n",
+ " USA | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 0.5433 | \n",
+ " 0.5633 | \n",
+ " 0.6051 | \n",
+ " ... | \n",
+ " 15.542581 | \n",
+ " 16.197007 | \n",
+ " 16.784849 | \n",
+ " 17.521747 | \n",
+ " 18.219298 | \n",
+ " 18.707188 | \n",
+ " 19.485394 | \n",
+ " 20.4941 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
1 rows × 68 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code Region Income_Group Unnamed: 4 Indicator Name \\\n",
+ "202 美国 USA NaN 高收入国家 NaN GDP(现价美元) \n",
+ "\n",
+ " Indicator Code 1960 1961 1962 ... 2011 2012 \\\n",
+ "202 NY.GDP.MKTP.CD 0.5433 0.5633 0.6051 ... 15.542581 16.197007 \n",
+ "\n",
+ " 2013 2014 2015 2016 2017 2018 2019 \\\n",
+ "202 16.784849 17.521747 18.219298 18.707188 19.485394 20.4941 NaN \n",
+ "\n",
+ " Unnamed: 64 \n",
+ "202 NaN \n",
+ "\n",
+ "[1 rows x 68 columns]"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_usa = country_gdp[country_gdp['Country Name']=='美国']\n",
+ "for i in range(1960, 2019):\n",
+ " df_usa[str(i)] = df_usa[str(i)].apply(lambda x: x/1000000000000)\n",
+ "df_usa"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "c:\\users\\wei.zhou\\appdata\\local\\programs\\python\\python37-32\\lib\\site-packages\\ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " This is separate from the ipykernel package so we can avoid doing imports until\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " Region | \n",
+ " Income_Group | \n",
+ " Unnamed: 4 | \n",
+ " Indicator Name | \n",
+ " Indicator Code | \n",
+ " 1960 | \n",
+ " 1961 | \n",
+ " 1962 | \n",
+ " ... | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ " 2017 | \n",
+ " 2018 | \n",
+ " 2019 | \n",
+ " Unnamed: 64 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 97 | \n",
+ " 日本 | \n",
+ " JPN | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 0.044307 | \n",
+ " 0.053509 | \n",
+ " 0.060723 | \n",
+ " ... | \n",
+ " 6.15746 | \n",
+ " 6.203213 | \n",
+ " 5.155717 | \n",
+ " 4.850414 | \n",
+ " 4.389476 | \n",
+ " 4.926667 | \n",
+ " 4.859951 | \n",
+ " 4.970916 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
1 rows × 68 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code Region Income_Group Unnamed: 4 Indicator Name \\\n",
+ "97 日本 JPN NaN 高收入国家 NaN GDP(现价美元) \n",
+ "\n",
+ " Indicator Code 1960 1961 1962 ... 2011 2012 \\\n",
+ "97 NY.GDP.MKTP.CD 0.044307 0.053509 0.060723 ... 6.15746 6.203213 \n",
+ "\n",
+ " 2013 2014 2015 2016 2017 2018 2019 \\\n",
+ "97 5.155717 4.850414 4.389476 4.926667 4.859951 4.970916 NaN \n",
+ "\n",
+ " Unnamed: 64 \n",
+ "97 NaN \n",
+ "\n",
+ "[1 rows x 68 columns]"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_jpn = country_gdp[country_gdp['Country Name']=='日本']\n",
+ "for i in range(1960, 2019):\n",
+ " df_jpn[str(i)] = df_jpn[str(i)].apply(lambda x: x/1000000000000)\n",
+ "df_jpn"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "c:\\users\\wei.zhou\\appdata\\local\\programs\\python\\python37-32\\lib\\site-packages\\ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " This is separate from the ipykernel package so we can avoid doing imports until\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " Region | \n",
+ " Income_Group | \n",
+ " Unnamed: 4 | \n",
+ " Indicator Name | \n",
+ " Indicator Code | \n",
+ " 1960 | \n",
+ " 1961 | \n",
+ " 1962 | \n",
+ " ... | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ " 2017 | \n",
+ " 2018 | \n",
+ " 2019 | \n",
+ " Unnamed: 64 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 50 | \n",
+ " 德国 | \n",
+ " DEU | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 3.757698 | \n",
+ " 3.543984 | \n",
+ " 3.752514 | \n",
+ " 3.898727 | \n",
+ " 3.381389 | \n",
+ " 3.495163 | \n",
+ " 3.693204 | \n",
+ " 3.996759 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
1 rows × 68 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code Region Income_Group Unnamed: 4 Indicator Name \\\n",
+ "50 德国 DEU NaN 高收入国家 NaN GDP(现价美元) \n",
+ "\n",
+ " Indicator Code 1960 1961 1962 ... 2011 2012 2013 \\\n",
+ "50 NY.GDP.MKTP.CD NaN NaN NaN ... 3.757698 3.543984 3.752514 \n",
+ "\n",
+ " 2014 2015 2016 2017 2018 2019 Unnamed: 64 \n",
+ "50 3.898727 3.381389 3.495163 3.693204 3.996759 NaN NaN \n",
+ "\n",
+ "[1 rows x 68 columns]"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_de = country_gdp[country_gdp['Country Name']=='德国']\n",
+ "for i in range(1960, 2019):\n",
+ " df_de[str(i)] = df_de[str(i)].apply(lambda x: x/1000000000000)\n",
+ "df_de"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "c:\\users\\wei.zhou\\appdata\\local\\programs\\python\\python37-32\\lib\\site-packages\\ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " This is separate from the ipykernel package so we can avoid doing imports until\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " Region | \n",
+ " Income_Group | \n",
+ " Unnamed: 4 | \n",
+ " Indicator Name | \n",
+ " Indicator Code | \n",
+ " 1960 | \n",
+ " 1961 | \n",
+ " 1962 | \n",
+ " ... | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ " 2017 | \n",
+ " 2018 | \n",
+ " 2019 | \n",
+ " Unnamed: 64 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 68 | \n",
+ " 英国 | \n",
+ " GBR | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 0.072328 | \n",
+ " 0.076694 | \n",
+ " 0.080602 | \n",
+ " ... | \n",
+ " 2.634896 | \n",
+ " 2.676605 | \n",
+ " 2.753565 | \n",
+ " 3.034729 | \n",
+ " 2.896421 | \n",
+ " 2.659239 | \n",
+ " 2.637866 | \n",
+ " 2.825208 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
1 rows × 68 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code Region Income_Group Unnamed: 4 Indicator Name \\\n",
+ "68 英国 GBR NaN 高收入国家 NaN GDP(现价美元) \n",
+ "\n",
+ " Indicator Code 1960 1961 1962 ... 2011 2012 \\\n",
+ "68 NY.GDP.MKTP.CD 0.072328 0.076694 0.080602 ... 2.634896 2.676605 \n",
+ "\n",
+ " 2013 2014 2015 2016 2017 2018 2019 \\\n",
+ "68 2.753565 3.034729 2.896421 2.659239 2.637866 2.825208 NaN \n",
+ "\n",
+ " Unnamed: 64 \n",
+ "68 NaN \n",
+ "\n",
+ "[1 rows x 68 columns]"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_uk = country_gdp[country_gdp['Country Name']=='英国']\n",
+ "for i in range(1960, 2019):\n",
+ " df_uk[str(i)] = df_uk[str(i)].apply(lambda x: x/1000000000000)\n",
+ "df_uk"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": [
+ "year_str = [str(i) for i in range(1960, 2019)]\n",
+ "\n",
+ "china_gdp = df_china[year_str].values.tolist()[0]\n",
+ "usa_gdp = df_usa[year_str].values.tolist()[0]\n",
+ "jpn_gdp = df_jpn[year_str].values.tolist()[0]\n",
+ "de_gdp = df_de[year_str].values.tolist()[0]\n",
+ "uk_gdp = df_uk[year_str].values.tolist()[0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 154,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " Region | \n",
+ " Income_Group | \n",
+ " Unnamed: 4 | \n",
+ " Indicator Name | \n",
+ " Indicator Code | \n",
+ " 1960 | \n",
+ " 1961 | \n",
+ " 1962 | \n",
+ " ... | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ " 2017 | \n",
+ " 2018 | \n",
+ " 2019 | \n",
+ " Unnamed: 64 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 36 | \n",
+ " 中国 | \n",
+ " CHN | \n",
+ " 东亚与太平洋地区(不包括高收入) | \n",
+ " 中高等收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 0.059716 | \n",
+ " 0.050057 | \n",
+ " 0.047209 | \n",
+ " ... | \n",
+ " 7.5515 | \n",
+ " 8.532231 | \n",
+ " 9.570406 | \n",
+ " 10.438529 | \n",
+ " 11.015542 | \n",
+ " 11.137946 | \n",
+ " 12.143491 | \n",
+ " 13.608152 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
1 rows × 68 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code Region Income_Group Unnamed: 4 \\\n",
+ "36 中国 CHN 东亚与太平洋地区(不包括高收入) 中高等收入国家 NaN \n",
+ "\n",
+ " Indicator Name Indicator Code 1960 1961 1962 ... 2011 \\\n",
+ "36 GDP(现价美元) NY.GDP.MKTP.CD 0.059716 0.050057 0.047209 ... 7.5515 \n",
+ "\n",
+ " 2012 2013 2014 2015 2016 2017 2018 \\\n",
+ "36 8.532231 9.570406 10.438529 11.015542 11.137946 12.143491 13.608152 \n",
+ "\n",
+ " 2019 Unnamed: 64 \n",
+ "36 NaN NaN \n",
+ "\n",
+ "[1 rows x 68 columns]"
+ ]
+ },
+ "execution_count": 154,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_china"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from pyecharts.charts import Scatter\n",
+ "\n",
+ "def scatter_base(choose, values, country) -> Scatter:\n",
+ " c = (\n",
+ " Scatter()\n",
+ " .add_xaxis(choose)\n",
+ " .add_yaxis(\"%s历年GDP\" % country, values)\n",
+ " .set_global_opts(title_opts=opts.TitleOpts(title=\"\"),\n",
+ " # datazoom_opts=opts.DataZoomOpts(),\n",
+ " yaxis_opts=opts.AxisOpts(\n",
+ " axislabel_opts=opts.LabelOpts(formatter=\"{value} /万亿\")\n",
+ " )\n",
+ " )\n",
+ " .set_series_opts(label_opts=opts.LabelOpts(is_show=False))\n",
+ " )\n",
+ " return c"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "scatter_base(year_str, china_gdp, '中国').render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "scatter_base(year_str, usa_gdp, '美国').render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 21,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "scatter_base(year_str, jpn_gdp, '日本').render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "scatter_base(year_str, de_gdp, '德国').render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "scatter_base(year_str, uk_gdp, '英国').render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import sklearn.pipeline as pl\n",
+ "import sklearn.linear_model as lm\n",
+ "import sklearn.preprocessing as sp\n",
+ "import matplotlib.pyplot as mp\n",
+ "import numpy as np\n",
+ "import sklearn.metrics as sm"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[1960],\n",
+ " [1961],\n",
+ " [1962],\n",
+ " [1963],\n",
+ " [1964],\n",
+ " [1965],\n",
+ " [1966],\n",
+ " [1967],\n",
+ " [1968],\n",
+ " [1969],\n",
+ " [1970],\n",
+ " [1971],\n",
+ " [1972],\n",
+ " [1973],\n",
+ " [1974],\n",
+ " [1975],\n",
+ " [1976],\n",
+ " [1977],\n",
+ " [1978],\n",
+ " [1979],\n",
+ " [1980],\n",
+ " [1981],\n",
+ " [1982],\n",
+ " [1983],\n",
+ " [1984],\n",
+ " [1985],\n",
+ " [1986],\n",
+ " [1987],\n",
+ " [1988],\n",
+ " [1989],\n",
+ " [1990],\n",
+ " [1991],\n",
+ " [1992],\n",
+ " [1993],\n",
+ " [1994],\n",
+ " [1995],\n",
+ " [1996],\n",
+ " [1997],\n",
+ " [1998],\n",
+ " [1999],\n",
+ " [2000],\n",
+ " [2001],\n",
+ " [2002],\n",
+ " [2003],\n",
+ " [2004],\n",
+ " [2005],\n",
+ " [2006],\n",
+ " [2007],\n",
+ " [2008],\n",
+ " [2009],\n",
+ " [2010],\n",
+ " [2011],\n",
+ " [2012],\n",
+ " [2013],\n",
+ " [2014],\n",
+ " [2015],\n",
+ " [2016],\n",
+ " [2017],\n",
+ " [2018]])"
+ ]
+ },
+ "execution_count": 25,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "year = [i for i in range(1960, 2019)]\n",
+ "X = np.array(year)\n",
+ "X = X.reshape(-1, 1)\n",
+ "X"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "y = usa_gdp"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "model = pl.make_pipeline(\n",
+ " sp.PolynomialFeatures(5), # 多项式特征拓展器\n",
+ " lm.LinearRegression() # 线性回归器\n",
+ ")\n",
+ "# 训练模型\n",
+ "model.fit(X, y)\n",
+ "# 求预测值y\n",
+ "pred_y = model.predict(X)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 244,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([ 0.67561513, 0.64550236, 0.63069893, 0.6310778 , 0.64651146,\n",
+ " 0.67687193, 0.7220308 , 0.78185916, 0.85622766, 0.94500648,\n",
+ " 1.04806535, 1.16527352, 1.29649978, 1.44161246, 1.60047942,\n",
+ " 1.77296806, 1.9589453 , 2.15827761, 2.37083099, 2.59647097,\n",
+ " 2.8350626 , 3.08647047, 3.35055872, 3.62719099, 3.91623047,\n",
+ " 4.21753986, 4.53098142, 4.8564169 , 5.19370761, 5.54271437,\n",
+ " 5.90329754, 6.27531699, 6.65863212, 7.05310188, 7.4585847 ,\n",
+ " 7.87493857, 8.302021 , 8.739689 , 9.18779914, 9.64620748,\n",
+ " 10.11476961, 10.59334065, 11.08177525, 11.57992755, 12.08765123,\n",
+ " 12.60479949, 13.13122504, 13.66678012, 14.21131649, 14.7646854 ,\n",
+ " 15.32673766, 15.89732355, 16.47629291, 17.06349506, 17.65877886,\n",
+ " 18.26199267, 18.87298437, 19.49160136, 20.11769053])"
+ ]
+ },
+ "execution_count": 244,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pred_y"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([-6.56811530e-01, -4.31663493e-01, -2.35026973e-01, -6.53989891e-02,\n",
+ " 7.87281703e-02, 1.98866952e-01, 2.96534541e-01, 3.73252871e-01,\n",
+ " 4.30548622e-01, 4.69953232e-01, 4.93002894e-01, 5.01238570e-01,\n",
+ " 4.96205988e-01, 4.79455654e-01, 4.52542849e-01, 4.17027639e-01,\n",
+ " 3.74474880e-01, 3.26454222e-01, 2.74540110e-01, 2.20311797e-01,\n",
+ " 1.65353340e-01, 1.11253613e-01, 5.96063043e-02, 1.20099274e-02,\n",
+ " -2.99321770e-02, -6.46118355e-02, -9.04160388e-02, -1.05726933e-01,\n",
+ " -1.08921820e-01, -9.83731464e-02, -7.24485036e-02, -2.95106209e-02,\n",
+ " 3.20826372e-02, 1.13978281e-01, 2.17828195e-01, 3.45289144e-01,\n",
+ " 4.98022782e-01, 6.77695650e-01, 8.85979189e-01, 1.12454974e+00,\n",
+ " 1.39508854e+00, 1.69928175e+00, 2.03882045e+00, 2.41540061e+00,\n",
+ " 2.83072316e+00, 3.28649394e+00, 3.78442374e+00, 4.32622827e+00,\n",
+ " 4.91362820e+00, 5.54834914e+00, 6.23212165e+00, 6.96668128e+00,\n",
+ " 7.75376850e+00, 8.59512877e+00, 9.49251254e+00, 1.04476752e+01,\n",
+ " 1.14623772e+01, 1.25383838e+01, 1.36774655e+01, 1.48813976e+01])"
+ ]
+ },
+ "execution_count": 34,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "p_year = [i for i in range(1960, 2020)]\n",
+ "p_X = np.array(p_year)\n",
+ "p_X = p_X.reshape(-1, 1)\n",
+ "p_pred_y = model.predict(p_X)\n",
+ "p_pred_y"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 245,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[0.5433,\n",
+ " 0.5633,\n",
+ " 0.6051,\n",
+ " 0.6386,\n",
+ " 0.6858,\n",
+ " 0.7437,\n",
+ " 0.815,\n",
+ " 0.8617,\n",
+ " 0.9425,\n",
+ " 1.0199,\n",
+ " 1.073303,\n",
+ " 1.16485,\n",
+ " 1.27911,\n",
+ " 1.425376,\n",
+ " 1.545243,\n",
+ " 1.684904,\n",
+ " 1.873412,\n",
+ " 2.081826,\n",
+ " 2.351599,\n",
+ " 2.627334,\n",
+ " 2.857307,\n",
+ " 3.207042,\n",
+ " 3.343789,\n",
+ " 3.634038,\n",
+ " 4.037613,\n",
+ " 4.338979,\n",
+ " 4.579631,\n",
+ " 4.855215,\n",
+ " 5.236438,\n",
+ " 5.64158,\n",
+ " 5.963144,\n",
+ " 6.158129,\n",
+ " 6.520327,\n",
+ " 6.858559,\n",
+ " 7.287236,\n",
+ " 7.639749,\n",
+ " 8.073122,\n",
+ " 8.577554463,\n",
+ " 9.062818211,\n",
+ " 9.630664202,\n",
+ " 10.252345464,\n",
+ " 10.581821399,\n",
+ " 10.936419054,\n",
+ " 11.458243878,\n",
+ " 12.213729147,\n",
+ " 13.036640229,\n",
+ " 13.814611414,\n",
+ " 14.45185865,\n",
+ " 14.712844084,\n",
+ " 14.448933025,\n",
+ " 14.992052727,\n",
+ " 15.542581104,\n",
+ " 16.197007349,\n",
+ " 16.78484919,\n",
+ " 17.521746534,\n",
+ " 18.219297584,\n",
+ " 18.707188235,\n",
+ " 19.485393853,\n",
+ " 20.4941]"
+ ]
+ },
+ "execution_count": 245,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# 绘制多项式回归线\n",
+ "px = np.linspace(X.min(), X.max(), 1000)\n",
+ "px = px.reshape(-1, 1)\n",
+ "pred_py = model.predict(px)\n",
+ "\n",
+ "# 绘制图像\n",
+ "mp.figure(\"美国历年GDP拟合结果\", facecolor='lightgray')\n",
+ "mp.title('USA GDP Regression', fontsize=16)\n",
+ "mp.tick_params(labelsize=10)\n",
+ "mp.grid(linestyle=':')\n",
+ "mp.xlabel('x')\n",
+ "mp.ylabel('y')\n",
+ "\n",
+ "mp.scatter(X, y, s=60, marker='o', c='dodgerblue', label='Points')\n",
+ "mp.plot(px, pred_py, c='orangered', label='PolyFit Line')\n",
+ "mp.tight_layout()\n",
+ "mp.legend()\n",
+ "mp.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# 中国\n",
+ "y = china_gdp\n",
+ "model = pl.make_pipeline(\n",
+ " sp.PolynomialFeatures(5), # 多项式特征拓展器\n",
+ " lm.LinearRegression() # 线性回归器\n",
+ ")\n",
+ "# 训练模型\n",
+ "model.fit(X, y)\n",
+ "# 求预测值y\n",
+ "pred_y = model.predict(X)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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qan06NGD/v371/lyc3PD2dmZ/v37c+DAgRqnN5OSkkybNhrD09OTyMhITp8+Td++fc32VRsXFxcGDRrE8uXL0el0/Pnnn3WOCQ0N5d5776Vdu3akpqaa7btbt2507NiR/fv313g+Pj6enJwcoqKimuSgIC+UFZRCixgyZAgPPvgga9eu5c8//2TatGmmG3WPHz/O7t27ef7551u91fxali9fzowZMygsLGTIkCGNHv/CCy+waNEioqOjmTNnDpGRkXh4eFBUVMSxY8cA8PLyqvO+xMREVCoVlZWVppt6jx49yq233lrjOoglGD9+PAMGDODdd99l7ty5uLu7s3z5cubOnUtMTAxz584lKCiI0tJSzp49S1ZWlmkH3j333MOSJUu49957mTVrFsXFxbz11lv4+fk1eSPIgw8+SExMDEuWLGHGjBn4+flRXFzMH3/8QXV1Nffffz8//fQTn376KRMmTOC6665Do9GwY8cOvLy8GDRoEJcvX2bRokVMmTKF0NBQXFxcOHjwIKWlpYwcOdJsv87Ozixbtow1a9awevVqpk6dSn5+Pq+99hpdu3Zl+vTpkv2MFRwHJUAptJj58+cTHh7O9u3bWbduHcXFxXh6etK/f38ef/zxFt1c2xDdu3dn6tSp7N27t0nHd+7cmZ07d/Lhhx/y/fffs2PHDiorK02pjl5//XWzYzSukjw8PPDz82PAgAFs3LixTqojS7FixQqWLFnCJ598wh133EFgYCA7d+5kw4YNvPbaaxQWFuLj40PPnj1rnIobOXIkzz//PBs3buS+++4jJCSEBx98kI0bN5q9Idkc/fr1M/X1/PPPc/nyZTp06EC/fv2YPXs2YNgk0aZNGzZt2sTFixfx8vKif//+bN68mc6dO1NZWUnfvn357LPPyMnJQaVS0a1bN55//vkGM4vMnj0bd3d33n33XVauXImnpydjxoxh1apVptOdCmLhpJR8V1CQLxcuXGDKlCksWrSIpUuX2no4CgrNQllBKSjIhPLyctauXcv111+Pj48PWVlZbNu2DXd39yZvz1dQsCeUAKWgIBOcnZ0pKCjg2Wefpbi4GA8PD6Kioli3bp3Z7dsKCvaOcopPQUFBQcEuUbaZKygoKCjYJQ5xiu+GG26gW7duth6GgoKCgkILSEtL48iRI81+n0MEqG7dunHixIlWtZGWlkaPHj0k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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# 绘制多项式回归线\n",
+ "px = np.linspace(X.min(), X.max(), 1000)\n",
+ "px = px.reshape(-1, 1)\n",
+ "pred_py = model.predict(px)\n",
+ "\n",
+ "# 绘制图像\n",
+ "mp.figure(\"中国历年GDP拟合结果\", facecolor='lightgray')\n",
+ "mp.title('CHN GDP Regression', fontsize=16)\n",
+ "mp.tick_params(labelsize=10)\n",
+ "mp.grid(linestyle=':')\n",
+ "mp.xlabel('x')\n",
+ "mp.ylabel('y')\n",
+ "\n",
+ "mp.scatter(X, y, s=60, marker='o', c='dodgerblue', label='Points')\n",
+ "mp.plot(px, pred_py, c='orangered', label='PolyFit Line')\n",
+ "mp.tight_layout()\n",
+ "mp.legend()\n",
+ "mp.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.7.1"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/GDP_analyse/.ipynb_checkpoints/Untitled-checkpoint.ipynb b/GDP_analyse/.ipynb_checkpoints/Untitled-checkpoint.ipynb
new file mode 100644
index 0000000..2fd6442
--- /dev/null
+++ b/GDP_analyse/.ipynb_checkpoints/Untitled-checkpoint.ipynb
@@ -0,0 +1,6 @@
+{
+ "cells": [],
+ "metadata": {},
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/GDP_analyse/API_NY.GDP.MKTP.CD_DS2_zh_csv_v2_424460.zip b/GDP_analyse/API_NY.GDP.MKTP.CD_DS2_zh_csv_v2_424460.zip
new file mode 100644
index 0000000..bbd7c7a
Binary files /dev/null and b/GDP_analyse/API_NY.GDP.MKTP.CD_DS2_zh_csv_v2_424460.zip differ
diff --git a/GDP_analyse/Country_data.csv b/GDP_analyse/Country_data.csv
new file mode 100644
index 0000000..3de18dc
--- /dev/null
+++ b/GDP_analyse/Country_data.csv
@@ -0,0 +1,267 @@
+"Country Name","Country Code","Region","Income_Group",
+"阿鲁巴","ABW","","高收入国家",
+"阿富汗","AFG","南亚","低收入国家",
+"安哥拉","AGO","撒哈拉以南非洲地区(不包括高收入)","中低等收入国家",
+"阿尔巴尼亚","ALB","欧洲与中亚地区(不包括高收入)","中高等收入国家",
+"安道尔共和国","AND","","高收入国家",
+"阿拉伯联盟国家","ARB","","",
+"阿拉伯联合酋长国","ARE","","高收入国家",
+"阿根廷","ARG","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"亚美尼亚","ARM","欧洲与中亚地区(不包括高收入)","中高等收入国家",
+"美属萨摩亚","ASM","东亚与太平洋地区(不包括高收入)","中高等收入国家",
+"安提瓜和巴布达","ATG","","高收入国家",
+"澳大利亚","AUS","","高收入国家",
+"奥地利","AUT","","高收入国家",
+"阿塞拜疆","AZE","欧洲与中亚地区(不包括高收入)","中高等收入国家",
+"布隆迪","BDI","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"比利时","BEL","","高收入国家",
+"贝宁","BEN","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"布基纳法索","BFA","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"孟加拉国","BGD","南亚","中低等收入国家",
+"保加利亚","BGR","欧洲与中亚地区(不包括高收入)","中高等收入国家",
+"巴林","BHR","","高收入国家",
+"巴哈马","BHS","","高收入国家",
+"波斯尼亚和黑塞哥维那","BIH","欧洲与中亚地区(不包括高收入)","中高等收入国家",
+"白俄罗斯","BLR","欧洲与中亚地区(不包括高收入)","中高等收入国家",
+"伯利兹","BLZ","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"百慕大","BMU","","高收入国家",
+"玻利维亚","BOL","拉丁美洲与加勒比海地区(不包括高收入)","中低等收入国家",
+"巴西","BRA","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"巴巴多斯","BRB","","高收入国家",
+"文莱达鲁萨兰国","BRN","","高收入国家",
+"不丹","BTN","南亚","中低等收入国家",
+"博茨瓦纳","BWA","撒哈拉以南非洲地区(不包括高收入)","中高等收入国家",
+"中非共和国","CAF","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"加拿大","CAN","","高收入国家",
+"中歐和波羅的海
+","CEB","","",
+"瑞士","CHE","","高收入国家",
+"海峡群岛","CHI","","高收入国家",
+"智利","CHL","","高收入国家",
+"中国","CHN","东亚与太平洋地区(不包括高收入)","中高等收入国家",
+"科特迪瓦","CIV","撒哈拉以南非洲地区(不包括高收入)","中低等收入国家",
+"喀麦隆","CMR","撒哈拉以南非洲地区(不包括高收入)","中低等收入国家",
+"刚果(金)","COD","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"刚果(布)","COG","撒哈拉以南非洲地区(不包括高收入)","中低等收入国家",
+"哥伦比亚","COL","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"科摩罗","COM","撒哈拉以南非洲地区(不包括高收入)","中低等收入国家",
+"佛得角","CPV","撒哈拉以南非洲地区(不包括高收入)","中低等收入国家",
+"哥斯达黎加","CRI","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"加勒比小国","CSS","","",
+"古巴","CUB","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"库拉索","CUW","","高收入国家",
+"开曼群岛","CYM","","高收入国家",
+"塞浦路斯","CYP","","高收入国家",
+"捷克共和国","CZE","","高收入国家",
+"德国","DEU","","高收入国家",
+"吉布提","DJI","中东与北非地区(不包括高收入)","中低等收入国家",
+"多米尼克","DMA","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"丹麦","DNK","","高收入国家",
+"多米尼加共和国","DOM","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"阿尔及利亚","DZA","中东与北非地区(不包括高收入)","中高等收入国家",
+"东亚与太平洋地区(不包括高收入)","EAP","","",
+"早人口紅利","EAR","","",
+"东亚与太平洋地区","EAS","","",
+"欧洲与中亚地区(不包括高收入)","ECA","","",
+"欧洲与中亚地区","ECS","","",
+"厄瓜多尔","ECU","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"阿拉伯埃及共和国","EGY","中东与北非地区(不包括高收入)","中低等收入国家",
+"欧洲货币联盟","EMU","","",
+"厄立特里亚","ERI","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"西班牙","ESP","","高收入国家",
+"爱沙尼亚","EST","","高收入国家",
+"埃塞俄比亚","ETH","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"欧洲联盟","EUU","","",
+"脆弱和受衝突影響的情況下
+","FCS","","",
+"芬兰","FIN","","高收入国家",
+"斐济","FJI","东亚与太平洋地区(不包括高收入)","中高等收入国家",
+"法国","FRA","","高收入国家",
+"法罗群岛","FRO","","高收入国家",
+"密克罗尼西亚联邦","FSM","东亚与太平洋地区(不包括高收入)","中低等收入国家",
+"加蓬","GAB","撒哈拉以南非洲地区(不包括高收入)","中高等收入国家",
+"英国","GBR","","高收入国家",
+"格鲁吉亚","GEO","欧洲与中亚地区(不包括高收入)","中高等收入国家",
+"加纳","GHA","撒哈拉以南非洲地区(不包括高收入)","中低等收入国家",
+"直布罗陀","GIB","","高收入国家",
+"几内亚","GIN","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"冈比亚","GMB","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"几内亚比绍共和国","GNB","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"赤道几内亚","GNQ","撒哈拉以南非洲地区(不包括高收入)","中高等收入国家",
+"希腊","GRC","","高收入国家",
+"格林纳达","GRD","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"格陵兰","GRL","","高收入国家",
+"危地马拉","GTM","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"关岛","GUM","","高收入国家",
+"圭亚那","GUY","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"高收入国家","HIC","","",
+"中国香港特别行政区","HKG","","高收入国家",
+"洪都拉斯","HND","拉丁美洲与加勒比海地区(不包括高收入)","中低等收入国家",
+"重债穷国 (HIPC)","HPC","","",
+"克罗地亚","HRV","","高收入国家",
+"海地","HTI","拉丁美洲与加勒比海地区(不包括高收入)","低收入国家",
+"匈牙利","HUN","","高收入国家",
+"只有IBRD","IBD","","",
+"IBRD与IDA","IBT","","",
+"IDA總","IDA","","",
+"IDA混合","IDB","","",
+"印度尼西亚","IDN","东亚与太平洋地区(不包括高收入)","中低等收入国家",
+"只有IDA","IDX","","",
+"马恩岛","IMN","","高收入国家",
+"印度","IND","南亚","中低等收入国家",
+"未分类国家","INX","","",
+"爱尔兰","IRL","","高收入国家",
+"伊朗伊斯兰共和国 ","IRN","中东与北非地区(不包括高收入)","中高等收入国家",
+"伊拉克","IRQ","中东与北非地区(不包括高收入)","中高等收入国家",
+"冰岛","ISL","","高收入国家",
+"以色列","ISR","","高收入国家",
+"意大利","ITA","","高收入国家",
+"牙买加","JAM","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"约旦","JOR","中东与北非地区(不包括高收入)","中高等收入国家",
+"日本","JPN","","高收入国家",
+"哈萨克斯坦","KAZ","欧洲与中亚地区(不包括高收入)","中高等收入国家",
+"肯尼亚","KEN","撒哈拉以南非洲地区(不包括高收入)","中低等收入国家",
+"吉尔吉斯斯坦","KGZ","欧洲与中亚地区(不包括高收入)","中低等收入国家",
+"柬埔寨","KHM","东亚与太平洋地区(不包括高收入)","中低等收入国家",
+"基里巴斯","KIR","东亚与太平洋地区(不包括高收入)","中低等收入国家",
+"圣基茨和尼维斯","KNA","","高收入国家",
+"大韩民国","KOR","","高收入国家",
+"科威特","KWT","","高收入国家",
+"拉丁美洲与加勒比海地区(不包括高收入)","LAC","","",
+"老挝","LAO","东亚与太平洋地区(不包括高收入)","中低等收入国家",
+"黎巴嫩","LBN","中东与北非地区(不包括高收入)","中高等收入国家",
+"利比里亚","LBR","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"利比亚","LBY","中东与北非地区(不包括高收入)","中高等收入国家",
+"圣卢西亚","LCA","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"拉丁美洲与加勒比海地区","LCN","","",
+"最不发达国家:联合国分类","LDC","","",
+"低收入国家","LIC","","",
+"列支敦士登","LIE","","高收入国家",
+"斯里兰卡","LKA","南亚","中高等收入国家",
+"中低等收入国家","LMC","","",
+"中低收入国家","LMY","","",
+"莱索托","LSO","撒哈拉以南非洲地区(不包括高收入)","中低等收入国家",
+"後期人口紅利","LTE","","",
+"立陶宛","LTU","","高收入国家",
+"卢森堡","LUX","","高收入国家",
+"拉脱维亚","LVA","","高收入国家",
+"中国澳门特别行政区","MAC","","高收入国家",
+"圣马丁(法属)","MAF","","高收入国家",
+"摩洛哥","MAR","中东与北非地区(不包括高收入)","中低等收入国家",
+"摩纳哥","MCO","","高收入国家",
+"摩尔多瓦","MDA","欧洲与中亚地区(不包括高收入)","中低等收入国家",
+"马达加斯加","MDG","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"马尔代夫","MDV","南亚","中高等收入国家",
+"中东与北非地区","MEA","","",
+"墨西哥","MEX","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"马绍尔群岛","MHL","东亚与太平洋地区(不包括高收入)","中高等收入国家",
+"中等收入国家","MIC","","",
+"北马其顿","MKD","欧洲与中亚地区(不包括高收入)","中高等收入国家",
+"马里","MLI","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"马耳他","MLT","","高收入国家",
+"缅甸","MMR","东亚与太平洋地区(不包括高收入)","中低等收入国家",
+"中东与北非地区(不包括高收入)","MNA","","",
+"黑山","MNE","欧洲与中亚地区(不包括高收入)","中高等收入国家",
+"蒙古","MNG","东亚与太平洋地区(不包括高收入)","中低等收入国家",
+"北马里亚纳群岛","MNP","","高收入国家",
+"莫桑比克","MOZ","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"毛里塔尼亚","MRT","撒哈拉以南非洲地区(不包括高收入)","中低等收入国家",
+"毛里求斯","MUS","撒哈拉以南非洲地区(不包括高收入)","中高等收入国家",
+"马拉维","MWI","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"马来西亚","MYS","东亚与太平洋地区(不包括高收入)","中高等收入国家",
+"北美","NAC","","",
+"纳米比亚","NAM","撒哈拉以南非洲地区(不包括高收入)","中高等收入国家",
+"新喀里多尼亚","NCL","","高收入国家",
+"尼日尔","NER","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"尼日利亚","NGA","撒哈拉以南非洲地区(不包括高收入)","中低等收入国家",
+"尼加拉瓜","NIC","拉丁美洲与加勒比海地区(不包括高收入)","中低等收入国家",
+"荷兰","NLD","","高收入国家",
+"挪威","NOR","","高收入国家",
+"尼泊尔","NPL","南亚","低收入国家",
+"瑙魯","NRU","东亚与太平洋地区(不包括高收入)","中高等收入国家",
+"新西兰","NZL","","高收入国家",
+"经合组织成员","OED","","",
+"阿曼","OMN","","高收入国家",
+"其他小国","OSS","","",
+"巴基斯坦","PAK","南亚","中低等收入国家",
+"巴拿马","PAN","","高收入国家",
+"秘鲁","PER","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"菲律宾","PHL","东亚与太平洋地区(不包括高收入)","中低等收入国家",
+"帕劳","PLW","","高收入国家",
+"巴布亚新几内亚","PNG","东亚与太平洋地区(不包括高收入)","中低等收入国家",
+"波兰","POL","","高收入国家",
+"預人口紅利","PRE","","",
+"波多黎各","PRI","","高收入国家",
+"朝鲜民主主义人民共和国","PRK","东亚与太平洋地区(不包括高收入)","低收入国家",
+"葡萄牙","PRT","","高收入国家",
+"巴拉圭","PRY","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"约旦河西岸和加沙","PSE","中东与北非地区(不包括高收入)","中低等收入国家",
+"太平洋岛国","PSS","","",
+"人口紅利之後","PST","","",
+"法属波利尼西亚","PYF","","高收入国家",
+"卡塔尔","QAT","","高收入国家",
+"罗马尼亚","ROU","欧洲与中亚地区(不包括高收入)","中高等收入国家",
+"俄罗斯联邦","RUS","欧洲与中亚地区(不包括高收入)","中高等收入国家",
+"卢旺达","RWA","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"南亚","SAS","","",
+"沙特阿拉伯","SAU","","高收入国家",
+"苏丹","SDN","撒哈拉以南非洲地区(不包括高收入)","中低等收入国家",
+"塞内加尔","SEN","撒哈拉以南非洲地区(不包括高收入)","中低等收入国家",
+"新加坡","SGP","","高收入国家",
+"所罗门群岛","SLB","东亚与太平洋地区(不包括高收入)","中低等收入国家",
+"塞拉利昂","SLE","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"萨尔瓦多","SLV","拉丁美洲与加勒比海地区(不包括高收入)","中低等收入国家",
+"圣马力诺","SMR","","高收入国家",
+"索马里","SOM","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"塞尔维亚","SRB","欧洲与中亚地区(不包括高收入)","中高等收入国家",
+"撒哈拉以南非洲地区(不包括高收入)","SSA","","",
+"南苏丹","SSD","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"撒哈拉以南非洲地区","SSF","","",
+"小国","SST","","",
+"圣多美和普林西比","STP","撒哈拉以南非洲地区(不包括高收入)","中低等收入国家",
+"苏里南","SUR","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"斯洛伐克共和国","SVK","","高收入国家",
+"斯洛文尼亚","SVN","","高收入国家",
+"瑞典","SWE","","高收入国家",
+"斯威士兰","SWZ","撒哈拉以南非洲地区(不包括高收入)","中低等收入国家",
+"圣马丁(荷属)","SXM","","高收入国家",
+"塞舌尔","SYC","","高收入国家",
+"阿拉伯叙利亚共和国","SYR","中东与北非地区(不包括高收入)","低收入国家",
+"特克斯科斯群岛","TCA","","高收入国家",
+"乍得","TCD","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"东亚与太平洋地区 (IBRD与IDA)","TEA","","",
+"欧洲与中亚地区 (IBRD与IDA)","TEC","","",
+"多哥","TGO","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"泰国","THA","东亚与太平洋地区(不包括高收入)","中高等收入国家",
+"塔吉克斯坦","TJK","欧洲与中亚地区(不包括高收入)","低收入国家",
+"土库曼斯坦","TKM","欧洲与中亚地区(不包括高收入)","中高等收入国家",
+"拉丁美洲与加勒比海地区 (IBRD与IDA)","TLA","","",
+"东帝汶","TLS","东亚与太平洋地区(不包括高收入)","中低等收入国家",
+"中东与北非地区 (IBRD与IDA)","TMN","","",
+"汤加","TON","东亚与太平洋地区(不包括高收入)","中高等收入国家",
+"南亚 (IBRD与IDA)","TSA","","",
+"撒哈拉以南非洲地区 (IBRD与IDA)","TSS","","",
+"特立尼达和多巴哥","TTO","","高收入国家",
+"突尼斯","TUN","中东与北非地区(不包括高收入)","中低等收入国家",
+"土耳其","TUR","欧洲与中亚地区(不包括高收入)","中高等收入国家",
+"图瓦卢","TUV","东亚与太平洋地区(不包括高收入)","中高等收入国家",
+"坦桑尼亚","TZA","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"乌干达","UGA","撒哈拉以南非洲地区(不包括高收入)","低收入国家",
+"乌克兰","UKR","欧洲与中亚地区(不包括高收入)","中低等收入国家",
+"中高等收入国家","UMC","","",
+"乌拉圭","URY","","高收入国家",
+"美国","USA","","高收入国家",
+"乌兹别克斯坦","UZB","欧洲与中亚地区(不包括高收入)","中低等收入国家",
+"圣文森特和格林纳丁斯","VCT","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"委内瑞拉玻利瓦尔共和国","VEN","拉丁美洲与加勒比海地区(不包括高收入)","中高等收入国家",
+"英屬維爾京群島","VGB","","高收入国家",
+"美属维京群岛","VIR","","高收入国家",
+"越南","VNM","东亚与太平洋地区(不包括高收入)","中低等收入国家",
+"瓦努阿图","VUT","东亚与太平洋地区(不包括高收入)","中低等收入国家",
+"世界","WLD","","",
+"萨摩亚","WSM","东亚与太平洋地区(不包括高收入)","中高等收入国家",
+"科索沃","XKX","欧洲与中亚地区(不包括高收入)","中高等收入国家",
+"也门共和国","YEM","中东与北非地区(不包括高收入)","低收入国家",
+"南非","ZAF","撒哈拉以南非洲地区(不包括高收入)","中高等收入国家",
+"赞比亚","ZMB","撒哈拉以南非洲地区(不包括高收入)","中低等收入国家",
+"津巴布韦","ZWE","撒哈拉以南非洲地区(不包括高收入)","中低等收入国家",
diff --git a/GDP_analyse/GDP_analyse.ipynb b/GDP_analyse/GDP_analyse.ipynb
new file mode 100644
index 0000000..7b87c81
--- /dev/null
+++ b/GDP_analyse/GDP_analyse.ipynb
@@ -0,0 +1,7133 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from pyecharts import options as opts\n",
+ "from pyecharts.charts import Pie, Bar"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "gdp = pd.read_csv('GDP_data.csv')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "country = pd.read_csv('Country_data.csv')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "country_data = country.dropna(subset=['Income_Group'])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " Region | \n",
+ " Income_Group | \n",
+ " Unnamed: 4 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 阿鲁巴 | \n",
+ " ABW | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 阿富汗 | \n",
+ " AFG | \n",
+ " 南亚 | \n",
+ " 低收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 安哥拉 | \n",
+ " AGO | \n",
+ " 撒哈拉以南非洲地区(不包括高收入) | \n",
+ " 中低等收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 阿尔巴尼亚 | \n",
+ " ALB | \n",
+ " 欧洲与中亚地区(不包括高收入) | \n",
+ " 中高等收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 安道尔共和国 | \n",
+ " AND | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 259 | \n",
+ " 科索沃 | \n",
+ " XKX | \n",
+ " 欧洲与中亚地区(不包括高收入) | \n",
+ " 中高等收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 260 | \n",
+ " 也门共和国 | \n",
+ " YEM | \n",
+ " 中东与北非地区(不包括高收入) | \n",
+ " 低收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 261 | \n",
+ " 南非 | \n",
+ " ZAF | \n",
+ " 撒哈拉以南非洲地区(不包括高收入) | \n",
+ " 中高等收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 262 | \n",
+ " 赞比亚 | \n",
+ " ZMB | \n",
+ " 撒哈拉以南非洲地区(不包括高收入) | \n",
+ " 中低等收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 263 | \n",
+ " 津巴布韦 | \n",
+ " ZWE | \n",
+ " 撒哈拉以南非洲地区(不包括高收入) | \n",
+ " 中低等收入国家 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
217 rows × 5 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code Region Income_Group Unnamed: 4\n",
+ "0 阿鲁巴 ABW NaN 高收入国家 NaN\n",
+ "1 阿富汗 AFG 南亚 低收入国家 NaN\n",
+ "2 安哥拉 AGO 撒哈拉以南非洲地区(不包括高收入) 中低等收入国家 NaN\n",
+ "3 阿尔巴尼亚 ALB 欧洲与中亚地区(不包括高收入) 中高等收入国家 NaN\n",
+ "4 安道尔共和国 AND NaN 高收入国家 NaN\n",
+ ".. ... ... ... ... ...\n",
+ "259 科索沃 XKX 欧洲与中亚地区(不包括高收入) 中高等收入国家 NaN\n",
+ "260 也门共和国 YEM 中东与北非地区(不包括高收入) 低收入国家 NaN\n",
+ "261 南非 ZAF 撒哈拉以南非洲地区(不包括高收入) 中高等收入国家 NaN\n",
+ "262 赞比亚 ZMB 撒哈拉以南非洲地区(不包括高收入) 中低等收入国家 NaN\n",
+ "263 津巴布韦 ZWE 撒哈拉以南非洲地区(不包括高收入) 中低等收入国家 NaN\n",
+ "\n",
+ "[217 rows x 5 columns]"
+ ]
+ },
+ "execution_count": 54,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "country_data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 73,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "rank_cuntry = country_data.groupby('Income_Group').size()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 72,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[47, 60, 31, 79]"
+ ]
+ },
+ "execution_count": 72,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "country_data.groupby('Income_Group').size().values.tolist()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 81,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 81,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# 各个收入等级分布\n",
+ "pie = Pie()\n",
+ "pie.add(\"\", [list(z) for z in zip(rank_cuntry.index.tolist(), rank_cuntry.values.tolist())],\n",
+ " radius=[\"30%\", \"75%\"], center=[\"45%\", \"50%\"], rosetype=\"radius\",\n",
+ " )\n",
+ "pie.set_global_opts(title_opts=opts.TitleOpts(title=\"各个收入等级分布\"))\n",
+ "pie.set_series_opts(label_opts=opts.LabelOpts(formatter=\"{b}, {d}%\"))\n",
+ "pie.render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 89,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "high = country_data[country_data['Income_Group'] == '高收入国家']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 94,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": [
+ "# 高收入国家2018年的GDP\n",
+ "high_gdp = pd.merge(high, gdp, how='inner')\n",
+ "high_gdp['2018'] = high_gdp['2018'].apply(lambda x: x/1000000000000)\n",
+ "high_gdp_top10 = high_gdp[['Country Name', 'Country Code', '2018']].sort_values(by='2018', ascending=False)[:10]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 101,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 101,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "bar = Bar()\n",
+ "bar.add_xaxis(high_gdp_top10['Country Name'].values.tolist())\n",
+ "bar.add_yaxis(\"\", high_gdp_top10['2018'].values.tolist())\n",
+ "bar.reversal_axis()\n",
+ "bar.set_series_opts(label_opts=opts.LabelOpts(position=\"right\"))\n",
+ "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"高收入国家GDP Top10\", subtitle=\"\"),\n",
+ " xaxis_opts=opts.AxisOpts(\n",
+ " axislabel_opts=opts.LabelOpts(formatter=\"{value} /万亿\")\n",
+ " ),)\n",
+ "bar.render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 113,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 113,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "high_gdp_top20 = high_gdp[['Country Name', 'Country Code', '2018']].sort_values(by='2018', ascending=False)[:20]\n",
+ "\n",
+ "bar = Bar()\n",
+ "bar.add_xaxis(high_gdp_top20['Country Name'].values.tolist())\n",
+ "bar.add_yaxis(\"\", high_gdp_top20['2018'].values.tolist())\n",
+ "bar.reversal_axis()\n",
+ "bar.set_series_opts(label_opts=opts.LabelOpts(position=\"right\"))\n",
+ "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"高收入国家GDP Top20\", subtitle=\"\"),\n",
+ " xaxis_opts=opts.AxisOpts(\n",
+ " axislabel_opts=opts.LabelOpts(formatter=\"{value} /万亿\")\n",
+ " ),)\n",
+ "bar.render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 119,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# 中高等收入国家\n",
+ "mid_high = country_data[country_data['Income_Group'] == '中高等收入国家']\n",
+ "mid_high_gdp = pd.merge(mid_high, gdp, how='inner')\n",
+ "mid_high_gdp['2018'] = mid_high_gdp['2018'].apply(lambda x: x/1000000000000)\n",
+ "mid_high_gdp_top10 = mid_high_gdp[['Country Name', 'Country Code', '2018']].sort_values(by='2018', ascending=False)[:10]\n",
+ "mid_high_gdp_top20 = mid_high_gdp[['Country Name', 'Country Code', '2018']].sort_values(by='2018', ascending=False)[:20]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 117,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 117,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "bar = Bar()\n",
+ "bar.add_xaxis(mid_high_gdp_top10['Country Name'].values.tolist())\n",
+ "bar.add_yaxis(\"\", mid_high_gdp_top10['2018'].values.tolist())\n",
+ "bar.reversal_axis()\n",
+ "bar.set_series_opts(label_opts=opts.LabelOpts(position=\"right\"))\n",
+ "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"中高等收入国家GDP Top10\", subtitle=\"\"),\n",
+ " xaxis_opts=opts.AxisOpts(\n",
+ " axislabel_opts=opts.LabelOpts(formatter=\"{value} /万亿\")\n",
+ " ),)\n",
+ "bar.render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 120,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 120,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "bar = Bar()\n",
+ "bar.add_xaxis(mid_high_gdp_top20['Country Name'].values.tolist())\n",
+ "bar.add_yaxis(\"\", mid_high_gdp_top20['2018'].values.tolist())\n",
+ "bar.reversal_axis()\n",
+ "bar.set_series_opts(label_opts=opts.LabelOpts(position=\"right\"))\n",
+ "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"中高等收入国家GDP Top20\", subtitle=\"\"),\n",
+ " xaxis_opts=opts.AxisOpts(\n",
+ " axislabel_opts=opts.LabelOpts(formatter=\"{value} /万亿\")\n",
+ " ),)\n",
+ "bar.render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 121,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# 中低等收入国家\n",
+ "mid_low = country_data[country_data['Income_Group'] == '中低等收入国家']\n",
+ "mid_low_gdp = pd.merge(mid_low, gdp, how='inner')\n",
+ "mid_low_gdp['2018'] = mid_low_gdp['2018'].apply(lambda x: x/1000000000000)\n",
+ "mid_low_gdp_top10 = mid_low_gdp[['Country Name', 'Country Code', '2018']].sort_values(by='2018', ascending=False)[:10]\n",
+ "mid_low_gdp_top20 = mid_low_gdp[['Country Name', 'Country Code', '2018']].sort_values(by='2018', ascending=False)[:20]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 122,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 122,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "bar = Bar()\n",
+ "bar.add_xaxis(mid_low_gdp_top10['Country Name'].values.tolist())\n",
+ "bar.add_yaxis(\"\", mid_low_gdp_top10['2018'].values.tolist())\n",
+ "bar.reversal_axis()\n",
+ "bar.set_series_opts(label_opts=opts.LabelOpts(position=\"right\"))\n",
+ "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"中低等收入国家GDP Top10\", subtitle=\"\"),\n",
+ " xaxis_opts=opts.AxisOpts(\n",
+ " axislabel_opts=opts.LabelOpts(formatter=\"{value} /万亿\")\n",
+ " ),)\n",
+ "bar.render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 123,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 123,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "bar = Bar()\n",
+ "bar.add_xaxis(mid_low_gdp_top20['Country Name'].values.tolist())\n",
+ "bar.add_yaxis(\"\", mid_low_gdp_top20['2018'].values.tolist())\n",
+ "bar.reversal_axis()\n",
+ "bar.set_series_opts(label_opts=opts.LabelOpts(position=\"right\"))\n",
+ "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"中低等收入国家GDP Top20\", subtitle=\"\"),\n",
+ " xaxis_opts=opts.AxisOpts(\n",
+ " axislabel_opts=opts.LabelOpts(formatter=\"{value} /万亿\")\n",
+ " ),)\n",
+ "bar.render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 126,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# 低等收入国家\n",
+ "low = country_data[country_data['Income_Group'] == '低收入国家']\n",
+ "low_gdp = pd.merge(low, gdp, how='inner')\n",
+ "low_gdp['2018'] = low_gdp['2018'].apply(lambda x: x/1000000000000)\n",
+ "low_gdp_top10 = low_gdp[['Country Name', 'Country Code', '2018']].sort_values(by='2018', ascending=False)[:10]\n",
+ "low_gdp_top20 = low_gdp[['Country Name', 'Country Code', '2018']].sort_values(by='2018', ascending=False)[:20]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 127,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 127,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "bar = Bar()\n",
+ "bar.add_xaxis(low_gdp_top10['Country Name'].values.tolist())\n",
+ "bar.add_yaxis(\"\", low_gdp_top10['2018'].values.tolist())\n",
+ "bar.reversal_axis()\n",
+ "bar.set_series_opts(label_opts=opts.LabelOpts(position=\"right\"))\n",
+ "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"低等收入国家GDP Top10\", subtitle=\"\"),\n",
+ " xaxis_opts=opts.AxisOpts(\n",
+ " axislabel_opts=opts.LabelOpts(formatter=\"{value} /万亿\")\n",
+ " ),)\n",
+ "bar.render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 129,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 129,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "bar = Bar()\n",
+ "bar.add_xaxis(low_gdp_top20['Country Name'].values.tolist())\n",
+ "bar.add_yaxis(\"\", low_gdp_top20['2018'].values.tolist())\n",
+ "bar.reversal_axis()\n",
+ "bar.set_series_opts(label_opts=opts.LabelOpts(position=\"right\"))\n",
+ "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"低等收入国家GDP Top20\", subtitle=\"\"),\n",
+ " xaxis_opts=opts.AxisOpts(\n",
+ " axislabel_opts=opts.LabelOpts(formatter=\"{value} /万亿\")\n",
+ " ),)\n",
+ "bar.render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 91,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " Region | \n",
+ " Income_Group | \n",
+ " Unnamed: 4 | \n",
+ " Indicator Name | \n",
+ " Indicator Code | \n",
+ " 1960 | \n",
+ " 1961 | \n",
+ " 1962 | \n",
+ " ... | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ " 2017 | \n",
+ " 2018 | \n",
+ " 2019 | \n",
+ " Unnamed: 64 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 阿鲁巴 | \n",
+ " ABW | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 2.549721e+09 | \n",
+ " 2.534637e+09 | \n",
+ " 2.581564e+09 | \n",
+ " 2.649721e+09 | \n",
+ " 2.691620e+09 | \n",
+ " 2.646927e+09 | \n",
+ " 2.700559e+09 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 安道尔共和国 | \n",
+ " AND | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 3.442063e+09 | \n",
+ " 3.164615e+09 | \n",
+ " 3.281585e+09 | \n",
+ " 3.350736e+09 | \n",
+ " 2.811489e+09 | \n",
+ " 2.877312e+09 | \n",
+ " 3.013387e+09 | \n",
+ " 3.236544e+09 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 阿拉伯联合酋长国 | \n",
+ " ARE | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 3.506660e+11 | \n",
+ " 3.745906e+11 | \n",
+ " 3.901076e+11 | \n",
+ " 4.031371e+11 | \n",
+ " 3.581351e+11 | \n",
+ " 3.570451e+11 | \n",
+ " 3.825751e+11 | \n",
+ " 4.141789e+11 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 安提瓜和巴布达 | \n",
+ " ATG | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 1.142043e+09 | \n",
+ " 1.211412e+09 | \n",
+ " 1.192920e+09 | \n",
+ " 1.275577e+09 | \n",
+ " 1.359195e+09 | \n",
+ " 1.464630e+09 | \n",
+ " 1.510085e+09 | \n",
+ " 1.623804e+09 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 澳大利亚 | \n",
+ " AUS | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 1.857767e+10 | \n",
+ " 1.965394e+10 | \n",
+ " 1.989249e+10 | \n",
+ " ... | \n",
+ " 1.396650e+12 | \n",
+ " 1.546152e+12 | \n",
+ " 1.576184e+12 | \n",
+ " 1.467484e+12 | \n",
+ " 1.351520e+12 | \n",
+ " 1.210028e+12 | \n",
+ " 1.330803e+12 | \n",
+ " 1.432195e+12 | \n",
+ " NaN | \n",
+ " NaN | \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",
+ " 74 | \n",
+ " 特立尼达和多巴哥 | \n",
+ " TTO | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 5.356701e+08 | \n",
+ " 5.849612e+08 | \n",
+ " 6.193192e+08 | \n",
+ " ... | \n",
+ " 2.543301e+10 | \n",
+ " 2.576933e+10 | \n",
+ " 2.711026e+10 | \n",
+ " 2.747797e+10 | \n",
+ " 2.512152e+10 | \n",
+ " 2.174639e+10 | \n",
+ " 2.225046e+10 | \n",
+ " 2.341035e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 75 | \n",
+ " 乌拉圭 | \n",
+ " URY | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 1.242289e+09 | \n",
+ " 1.547389e+09 | \n",
+ " 1.710004e+09 | \n",
+ " ... | \n",
+ " 4.796244e+10 | \n",
+ " 5.126439e+10 | \n",
+ " 5.753123e+10 | \n",
+ " 5.723601e+10 | \n",
+ " 5.327430e+10 | \n",
+ " 5.268761e+10 | \n",
+ " 5.648899e+10 | \n",
+ " 5.959689e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 76 | \n",
+ " 美国 | \n",
+ " USA | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 5.433000e+11 | \n",
+ " 5.633000e+11 | \n",
+ " 6.051000e+11 | \n",
+ " ... | \n",
+ " 1.554258e+13 | \n",
+ " 1.619701e+13 | \n",
+ " 1.678485e+13 | \n",
+ " 1.752175e+13 | \n",
+ " 1.821930e+13 | \n",
+ " 1.870719e+13 | \n",
+ " 1.948539e+13 | \n",
+ " 2.049410e+13 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 77 | \n",
+ " 英屬維爾京群島 | \n",
+ " VGB | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 78 | \n",
+ " 美属维京群岛 | \n",
+ " VIR | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 4.239000e+09 | \n",
+ " 4.095000e+09 | \n",
+ " 3.762000e+09 | \n",
+ " 3.622000e+09 | \n",
+ " 3.748000e+09 | \n",
+ " 3.863000e+09 | \n",
+ " 3.855000e+09 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
79 rows × 68 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code Region Income_Group Unnamed: 4 Indicator Name \\\n",
+ "0 阿鲁巴 ABW NaN 高收入国家 NaN GDP(现价美元) \n",
+ "1 安道尔共和国 AND NaN 高收入国家 NaN GDP(现价美元) \n",
+ "2 阿拉伯联合酋长国 ARE NaN 高收入国家 NaN GDP(现价美元) \n",
+ "3 安提瓜和巴布达 ATG NaN 高收入国家 NaN GDP(现价美元) \n",
+ "4 澳大利亚 AUS NaN 高收入国家 NaN GDP(现价美元) \n",
+ ".. ... ... ... ... ... ... \n",
+ "74 特立尼达和多巴哥 TTO NaN 高收入国家 NaN GDP(现价美元) \n",
+ "75 乌拉圭 URY NaN 高收入国家 NaN GDP(现价美元) \n",
+ "76 美国 USA NaN 高收入国家 NaN GDP(现价美元) \n",
+ "77 英屬維爾京群島 VGB NaN 高收入国家 NaN GDP(现价美元) \n",
+ "78 美属维京群岛 VIR NaN 高收入国家 NaN GDP(现价美元) \n",
+ "\n",
+ " Indicator Code 1960 1961 1962 ... \\\n",
+ "0 NY.GDP.MKTP.CD NaN NaN NaN ... \n",
+ "1 NY.GDP.MKTP.CD NaN NaN NaN ... \n",
+ "2 NY.GDP.MKTP.CD NaN NaN NaN ... \n",
+ "3 NY.GDP.MKTP.CD NaN NaN NaN ... \n",
+ "4 NY.GDP.MKTP.CD 1.857767e+10 1.965394e+10 1.989249e+10 ... \n",
+ ".. ... ... ... ... ... \n",
+ "74 NY.GDP.MKTP.CD 5.356701e+08 5.849612e+08 6.193192e+08 ... \n",
+ "75 NY.GDP.MKTP.CD 1.242289e+09 1.547389e+09 1.710004e+09 ... \n",
+ "76 NY.GDP.MKTP.CD 5.433000e+11 5.633000e+11 6.051000e+11 ... \n",
+ "77 NY.GDP.MKTP.CD NaN NaN NaN ... \n",
+ "78 NY.GDP.MKTP.CD NaN NaN NaN ... \n",
+ "\n",
+ " 2011 2012 2013 2014 2015 \\\n",
+ "0 2.549721e+09 2.534637e+09 2.581564e+09 2.649721e+09 2.691620e+09 \n",
+ "1 3.442063e+09 3.164615e+09 3.281585e+09 3.350736e+09 2.811489e+09 \n",
+ "2 3.506660e+11 3.745906e+11 3.901076e+11 4.031371e+11 3.581351e+11 \n",
+ "3 1.142043e+09 1.211412e+09 1.192920e+09 1.275577e+09 1.359195e+09 \n",
+ "4 1.396650e+12 1.546152e+12 1.576184e+12 1.467484e+12 1.351520e+12 \n",
+ ".. ... ... ... ... ... \n",
+ "74 2.543301e+10 2.576933e+10 2.711026e+10 2.747797e+10 2.512152e+10 \n",
+ "75 4.796244e+10 5.126439e+10 5.753123e+10 5.723601e+10 5.327430e+10 \n",
+ "76 1.554258e+13 1.619701e+13 1.678485e+13 1.752175e+13 1.821930e+13 \n",
+ "77 NaN NaN NaN NaN NaN \n",
+ "78 4.239000e+09 4.095000e+09 3.762000e+09 3.622000e+09 3.748000e+09 \n",
+ "\n",
+ " 2016 2017 2018 2019 Unnamed: 64 \n",
+ "0 2.646927e+09 2.700559e+09 NaN NaN NaN \n",
+ "1 2.877312e+09 3.013387e+09 3.236544e+09 NaN NaN \n",
+ "2 3.570451e+11 3.825751e+11 4.141789e+11 NaN NaN \n",
+ "3 1.464630e+09 1.510085e+09 1.623804e+09 NaN NaN \n",
+ "4 1.210028e+12 1.330803e+12 1.432195e+12 NaN NaN \n",
+ ".. ... ... ... ... ... \n",
+ "74 2.174639e+10 2.225046e+10 2.341035e+10 NaN NaN \n",
+ "75 5.268761e+10 5.648899e+10 5.959689e+10 NaN NaN \n",
+ "76 1.870719e+13 1.948539e+13 2.049410e+13 NaN NaN \n",
+ "77 NaN NaN NaN NaN NaN \n",
+ "78 3.863000e+09 3.855000e+09 NaN NaN NaN \n",
+ "\n",
+ "[79 rows x 68 columns]"
+ ]
+ },
+ "execution_count": 91,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "high_gdp"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " Indicator Name | \n",
+ " Indicator Code | \n",
+ " 1960 | \n",
+ " 1961 | \n",
+ " 1962 | \n",
+ " 1963 | \n",
+ " 1964 | \n",
+ " 1965 | \n",
+ " ... | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ " 2017 | \n",
+ " 2018 | \n",
+ " 2019 | \n",
+ " Unnamed: 64 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 阿鲁巴 | \n",
+ " ABW | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 2.549721e+09 | \n",
+ " 2.534637e+09 | \n",
+ " 2.581564e+09 | \n",
+ " 2.649721e+09 | \n",
+ " 2.691620e+09 | \n",
+ " 2.646927e+09 | \n",
+ " 2.700559e+09 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 阿富汗 | \n",
+ " AFG | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 5.377778e+08 | \n",
+ " 5.488889e+08 | \n",
+ " 5.466667e+08 | \n",
+ " 7.511112e+08 | \n",
+ " 8.000000e+08 | \n",
+ " 1.006667e+09 | \n",
+ " ... | \n",
+ " 1.780428e+10 | \n",
+ " 2.000162e+10 | \n",
+ " 2.056105e+10 | \n",
+ " 2.048487e+10 | \n",
+ " 1.990711e+10 | \n",
+ " 1.936264e+10 | \n",
+ " 2.019176e+10 | \n",
+ " 1.936297e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 安哥拉 | \n",
+ " AGO | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 1.117897e+11 | \n",
+ " 1.280529e+11 | \n",
+ " 1.367099e+11 | \n",
+ " 1.457122e+11 | \n",
+ " 1.161936e+11 | \n",
+ " 1.011239e+11 | \n",
+ " 1.221238e+11 | \n",
+ " 1.057510e+11 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 阿尔巴尼亚 | \n",
+ " ALB | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 1.289087e+10 | \n",
+ " 1.231978e+10 | \n",
+ " 1.277628e+10 | \n",
+ " 1.322825e+10 | \n",
+ " 1.138693e+10 | \n",
+ " 1.186135e+10 | \n",
+ " 1.302506e+10 | \n",
+ " 1.505888e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 安道尔共和国 | \n",
+ " AND | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 3.442063e+09 | \n",
+ " 3.164615e+09 | \n",
+ " 3.281585e+09 | \n",
+ " 3.350736e+09 | \n",
+ " 2.811489e+09 | \n",
+ " 2.877312e+09 | \n",
+ " 3.013387e+09 | \n",
+ " 3.236544e+09 | \n",
+ " NaN | \n",
+ " NaN | \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",
+ " 259 | \n",
+ " 科索沃 | \n",
+ " XKX | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 6.691827e+09 | \n",
+ " 6.499936e+09 | \n",
+ " 7.071960e+09 | \n",
+ " 7.386891e+09 | \n",
+ " 6.440612e+09 | \n",
+ " 6.714712e+09 | \n",
+ " 7.227765e+09 | \n",
+ " 7.900269e+09 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 260 | \n",
+ " 也门共和国 | \n",
+ " YEM | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 3.272642e+10 | \n",
+ " 3.540134e+10 | \n",
+ " 4.041523e+10 | \n",
+ " 4.322859e+10 | \n",
+ " 4.262833e+10 | \n",
+ " 3.096824e+10 | \n",
+ " 2.681870e+10 | \n",
+ " 2.691440e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 261 | \n",
+ " 南非 | \n",
+ " ZAF | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 7.575397e+09 | \n",
+ " 7.972997e+09 | \n",
+ " 8.497997e+09 | \n",
+ " 9.423396e+09 | \n",
+ " 1.037400e+10 | \n",
+ " 1.133440e+10 | \n",
+ " ... | \n",
+ " 4.164170e+11 | \n",
+ " 3.963294e+11 | \n",
+ " 3.666449e+11 | \n",
+ " 3.506376e+11 | \n",
+ " 3.174156e+11 | \n",
+ " 2.963409e+11 | \n",
+ " 3.492681e+11 | \n",
+ " 3.682882e+11 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 262 | \n",
+ " 赞比亚 | \n",
+ " ZMB | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 7.130000e+08 | \n",
+ " 6.962857e+08 | \n",
+ " 6.931429e+08 | \n",
+ " 7.187143e+08 | \n",
+ " 8.394286e+08 | \n",
+ " 1.082857e+09 | \n",
+ " ... | \n",
+ " 2.346010e+10 | \n",
+ " 2.550337e+10 | \n",
+ " 2.804546e+10 | \n",
+ " 2.715063e+10 | \n",
+ " 2.115439e+10 | \n",
+ " 2.095475e+10 | \n",
+ " 2.586814e+10 | \n",
+ " 2.672007e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 263 | \n",
+ " 津巴布韦 | \n",
+ " ZWE | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 1.052990e+09 | \n",
+ " 1.096647e+09 | \n",
+ " 1.117602e+09 | \n",
+ " 1.159512e+09 | \n",
+ " 1.217138e+09 | \n",
+ " 1.311436e+09 | \n",
+ " ... | \n",
+ " 1.410192e+10 | \n",
+ " 1.711485e+10 | \n",
+ " 1.909102e+10 | \n",
+ " 1.949552e+10 | \n",
+ " 1.996312e+10 | \n",
+ " 2.054868e+10 | \n",
+ " 2.281301e+10 | \n",
+ " 3.100052e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
264 rows × 65 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code Indicator Name Indicator Code 1960 \\\n",
+ "0 阿鲁巴 ABW GDP(现价美元) NY.GDP.MKTP.CD NaN \n",
+ "1 阿富汗 AFG GDP(现价美元) NY.GDP.MKTP.CD 5.377778e+08 \n",
+ "2 安哥拉 AGO GDP(现价美元) NY.GDP.MKTP.CD NaN \n",
+ "3 阿尔巴尼亚 ALB GDP(现价美元) NY.GDP.MKTP.CD NaN \n",
+ "4 安道尔共和国 AND GDP(现价美元) NY.GDP.MKTP.CD NaN \n",
+ ".. ... ... ... ... ... \n",
+ "259 科索沃 XKX GDP(现价美元) NY.GDP.MKTP.CD NaN \n",
+ "260 也门共和国 YEM GDP(现价美元) NY.GDP.MKTP.CD NaN \n",
+ "261 南非 ZAF GDP(现价美元) NY.GDP.MKTP.CD 7.575397e+09 \n",
+ "262 赞比亚 ZMB GDP(现价美元) NY.GDP.MKTP.CD 7.130000e+08 \n",
+ "263 津巴布韦 ZWE GDP(现价美元) NY.GDP.MKTP.CD 1.052990e+09 \n",
+ "\n",
+ " 1961 1962 1963 1964 1965 \\\n",
+ "0 NaN NaN NaN NaN NaN \n",
+ "1 5.488889e+08 5.466667e+08 7.511112e+08 8.000000e+08 1.006667e+09 \n",
+ "2 NaN NaN NaN NaN NaN \n",
+ "3 NaN NaN NaN NaN NaN \n",
+ "4 NaN NaN NaN NaN NaN \n",
+ ".. ... ... ... ... ... \n",
+ "259 NaN NaN NaN NaN NaN \n",
+ "260 NaN NaN NaN NaN NaN \n",
+ "261 7.972997e+09 8.497997e+09 9.423396e+09 1.037400e+10 1.133440e+10 \n",
+ "262 6.962857e+08 6.931429e+08 7.187143e+08 8.394286e+08 1.082857e+09 \n",
+ "263 1.096647e+09 1.117602e+09 1.159512e+09 1.217138e+09 1.311436e+09 \n",
+ "\n",
+ " ... 2011 2012 2013 2014 \\\n",
+ "0 ... 2.549721e+09 2.534637e+09 2.581564e+09 2.649721e+09 \n",
+ "1 ... 1.780428e+10 2.000162e+10 2.056105e+10 2.048487e+10 \n",
+ "2 ... 1.117897e+11 1.280529e+11 1.367099e+11 1.457122e+11 \n",
+ "3 ... 1.289087e+10 1.231978e+10 1.277628e+10 1.322825e+10 \n",
+ "4 ... 3.442063e+09 3.164615e+09 3.281585e+09 3.350736e+09 \n",
+ ".. ... ... ... ... ... \n",
+ "259 ... 6.691827e+09 6.499936e+09 7.071960e+09 7.386891e+09 \n",
+ "260 ... 3.272642e+10 3.540134e+10 4.041523e+10 4.322859e+10 \n",
+ "261 ... 4.164170e+11 3.963294e+11 3.666449e+11 3.506376e+11 \n",
+ "262 ... 2.346010e+10 2.550337e+10 2.804546e+10 2.715063e+10 \n",
+ "263 ... 1.410192e+10 1.711485e+10 1.909102e+10 1.949552e+10 \n",
+ "\n",
+ " 2015 2016 2017 2018 2019 Unnamed: 64 \n",
+ "0 2.691620e+09 2.646927e+09 2.700559e+09 NaN NaN NaN \n",
+ "1 1.990711e+10 1.936264e+10 2.019176e+10 1.936297e+10 NaN NaN \n",
+ "2 1.161936e+11 1.011239e+11 1.221238e+11 1.057510e+11 NaN NaN \n",
+ "3 1.138693e+10 1.186135e+10 1.302506e+10 1.505888e+10 NaN NaN \n",
+ "4 2.811489e+09 2.877312e+09 3.013387e+09 3.236544e+09 NaN NaN \n",
+ ".. ... ... ... ... ... ... \n",
+ "259 6.440612e+09 6.714712e+09 7.227765e+09 7.900269e+09 NaN NaN \n",
+ "260 4.262833e+10 3.096824e+10 2.681870e+10 2.691440e+10 NaN NaN \n",
+ "261 3.174156e+11 2.963409e+11 3.492681e+11 3.682882e+11 NaN NaN \n",
+ "262 2.115439e+10 2.095475e+10 2.586814e+10 2.672007e+10 NaN NaN \n",
+ "263 1.996312e+10 2.054868e+10 2.281301e+10 3.100052e+10 NaN NaN \n",
+ "\n",
+ "[264 rows x 65 columns]"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "gdp"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "country_gdp = pd.merge(country_data, gdp, how='inner')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " Region | \n",
+ " Income_Group | \n",
+ " Unnamed: 4 | \n",
+ " Indicator Name | \n",
+ " Indicator Code | \n",
+ " 1960 | \n",
+ " 1961 | \n",
+ " 1962 | \n",
+ " ... | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ " 2017 | \n",
+ " 2018 | \n",
+ " 2019 | \n",
+ " Unnamed: 64 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 阿鲁巴 | \n",
+ " ABW | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 2.549721e+09 | \n",
+ " 2.534637e+09 | \n",
+ " 2.581564e+09 | \n",
+ " 2.649721e+09 | \n",
+ " 2.691620e+09 | \n",
+ " 2.646927e+09 | \n",
+ " 2.700559e+09 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 阿富汗 | \n",
+ " AFG | \n",
+ " 南亚 | \n",
+ " 低收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 5.377778e+08 | \n",
+ " 5.488889e+08 | \n",
+ " 5.466667e+08 | \n",
+ " ... | \n",
+ " 1.780428e+10 | \n",
+ " 2.000162e+10 | \n",
+ " 2.056105e+10 | \n",
+ " 2.048487e+10 | \n",
+ " 1.990711e+10 | \n",
+ " 1.936264e+10 | \n",
+ " 2.019176e+10 | \n",
+ " 1.936297e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 安哥拉 | \n",
+ " AGO | \n",
+ " 撒哈拉以南非洲地区(不包括高收入) | \n",
+ " 中低等收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 1.117897e+11 | \n",
+ " 1.280529e+11 | \n",
+ " 1.367099e+11 | \n",
+ " 1.457122e+11 | \n",
+ " 1.161936e+11 | \n",
+ " 1.011239e+11 | \n",
+ " 1.221238e+11 | \n",
+ " 1.057510e+11 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 阿尔巴尼亚 | \n",
+ " ALB | \n",
+ " 欧洲与中亚地区(不包括高收入) | \n",
+ " 中高等收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 1.289087e+10 | \n",
+ " 1.231978e+10 | \n",
+ " 1.277628e+10 | \n",
+ " 1.322825e+10 | \n",
+ " 1.138693e+10 | \n",
+ " 1.186135e+10 | \n",
+ " 1.302506e+10 | \n",
+ " 1.505888e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 安道尔共和国 | \n",
+ " AND | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 3.442063e+09 | \n",
+ " 3.164615e+09 | \n",
+ " 3.281585e+09 | \n",
+ " 3.350736e+09 | \n",
+ " 2.811489e+09 | \n",
+ " 2.877312e+09 | \n",
+ " 3.013387e+09 | \n",
+ " 3.236544e+09 | \n",
+ " NaN | \n",
+ " NaN | \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",
+ " 211 | \n",
+ " 科索沃 | \n",
+ " XKX | \n",
+ " 欧洲与中亚地区(不包括高收入) | \n",
+ " 中高等收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 6.691827e+09 | \n",
+ " 6.499936e+09 | \n",
+ " 7.071960e+09 | \n",
+ " 7.386891e+09 | \n",
+ " 6.440612e+09 | \n",
+ " 6.714712e+09 | \n",
+ " 7.227765e+09 | \n",
+ " 7.900269e+09 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 212 | \n",
+ " 也门共和国 | \n",
+ " YEM | \n",
+ " 中东与北非地区(不包括高收入) | \n",
+ " 低收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 3.272642e+10 | \n",
+ " 3.540134e+10 | \n",
+ " 4.041523e+10 | \n",
+ " 4.322859e+10 | \n",
+ " 4.262833e+10 | \n",
+ " 3.096824e+10 | \n",
+ " 2.681870e+10 | \n",
+ " 2.691440e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 213 | \n",
+ " 南非 | \n",
+ " ZAF | \n",
+ " 撒哈拉以南非洲地区(不包括高收入) | \n",
+ " 中高等收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 7.575397e+09 | \n",
+ " 7.972997e+09 | \n",
+ " 8.497997e+09 | \n",
+ " ... | \n",
+ " 4.164170e+11 | \n",
+ " 3.963294e+11 | \n",
+ " 3.666449e+11 | \n",
+ " 3.506376e+11 | \n",
+ " 3.174156e+11 | \n",
+ " 2.963409e+11 | \n",
+ " 3.492681e+11 | \n",
+ " 3.682882e+11 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 214 | \n",
+ " 赞比亚 | \n",
+ " ZMB | \n",
+ " 撒哈拉以南非洲地区(不包括高收入) | \n",
+ " 中低等收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 7.130000e+08 | \n",
+ " 6.962857e+08 | \n",
+ " 6.931429e+08 | \n",
+ " ... | \n",
+ " 2.346010e+10 | \n",
+ " 2.550337e+10 | \n",
+ " 2.804546e+10 | \n",
+ " 2.715063e+10 | \n",
+ " 2.115439e+10 | \n",
+ " 2.095475e+10 | \n",
+ " 2.586814e+10 | \n",
+ " 2.672007e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 215 | \n",
+ " 津巴布韦 | \n",
+ " ZWE | \n",
+ " 撒哈拉以南非洲地区(不包括高收入) | \n",
+ " 中低等收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 1.052990e+09 | \n",
+ " 1.096647e+09 | \n",
+ " 1.117602e+09 | \n",
+ " ... | \n",
+ " 1.410192e+10 | \n",
+ " 1.711485e+10 | \n",
+ " 1.909102e+10 | \n",
+ " 1.949552e+10 | \n",
+ " 1.996312e+10 | \n",
+ " 2.054868e+10 | \n",
+ " 2.281301e+10 | \n",
+ " 3.100052e+10 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
216 rows × 68 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code Region Income_Group Unnamed: 4 \\\n",
+ "0 阿鲁巴 ABW NaN 高收入国家 NaN \n",
+ "1 阿富汗 AFG 南亚 低收入国家 NaN \n",
+ "2 安哥拉 AGO 撒哈拉以南非洲地区(不包括高收入) 中低等收入国家 NaN \n",
+ "3 阿尔巴尼亚 ALB 欧洲与中亚地区(不包括高收入) 中高等收入国家 NaN \n",
+ "4 安道尔共和国 AND NaN 高收入国家 NaN \n",
+ ".. ... ... ... ... ... \n",
+ "211 科索沃 XKX 欧洲与中亚地区(不包括高收入) 中高等收入国家 NaN \n",
+ "212 也门共和国 YEM 中东与北非地区(不包括高收入) 低收入国家 NaN \n",
+ "213 南非 ZAF 撒哈拉以南非洲地区(不包括高收入) 中高等收入国家 NaN \n",
+ "214 赞比亚 ZMB 撒哈拉以南非洲地区(不包括高收入) 中低等收入国家 NaN \n",
+ "215 津巴布韦 ZWE 撒哈拉以南非洲地区(不包括高收入) 中低等收入国家 NaN \n",
+ "\n",
+ " Indicator Name Indicator Code 1960 1961 1962 \\\n",
+ "0 GDP(现价美元) NY.GDP.MKTP.CD NaN NaN NaN \n",
+ "1 GDP(现价美元) NY.GDP.MKTP.CD 5.377778e+08 5.488889e+08 5.466667e+08 \n",
+ "2 GDP(现价美元) NY.GDP.MKTP.CD NaN NaN NaN \n",
+ "3 GDP(现价美元) NY.GDP.MKTP.CD NaN NaN NaN \n",
+ "4 GDP(现价美元) NY.GDP.MKTP.CD NaN NaN NaN \n",
+ ".. ... ... ... ... ... \n",
+ "211 GDP(现价美元) NY.GDP.MKTP.CD NaN NaN NaN \n",
+ "212 GDP(现价美元) NY.GDP.MKTP.CD NaN NaN NaN \n",
+ "213 GDP(现价美元) NY.GDP.MKTP.CD 7.575397e+09 7.972997e+09 8.497997e+09 \n",
+ "214 GDP(现价美元) NY.GDP.MKTP.CD 7.130000e+08 6.962857e+08 6.931429e+08 \n",
+ "215 GDP(现价美元) NY.GDP.MKTP.CD 1.052990e+09 1.096647e+09 1.117602e+09 \n",
+ "\n",
+ " ... 2011 2012 2013 2014 \\\n",
+ "0 ... 2.549721e+09 2.534637e+09 2.581564e+09 2.649721e+09 \n",
+ "1 ... 1.780428e+10 2.000162e+10 2.056105e+10 2.048487e+10 \n",
+ "2 ... 1.117897e+11 1.280529e+11 1.367099e+11 1.457122e+11 \n",
+ "3 ... 1.289087e+10 1.231978e+10 1.277628e+10 1.322825e+10 \n",
+ "4 ... 3.442063e+09 3.164615e+09 3.281585e+09 3.350736e+09 \n",
+ ".. ... ... ... ... ... \n",
+ "211 ... 6.691827e+09 6.499936e+09 7.071960e+09 7.386891e+09 \n",
+ "212 ... 3.272642e+10 3.540134e+10 4.041523e+10 4.322859e+10 \n",
+ "213 ... 4.164170e+11 3.963294e+11 3.666449e+11 3.506376e+11 \n",
+ "214 ... 2.346010e+10 2.550337e+10 2.804546e+10 2.715063e+10 \n",
+ "215 ... 1.410192e+10 1.711485e+10 1.909102e+10 1.949552e+10 \n",
+ "\n",
+ " 2015 2016 2017 2018 2019 Unnamed: 64 \n",
+ "0 2.691620e+09 2.646927e+09 2.700559e+09 NaN NaN NaN \n",
+ "1 1.990711e+10 1.936264e+10 2.019176e+10 1.936297e+10 NaN NaN \n",
+ "2 1.161936e+11 1.011239e+11 1.221238e+11 1.057510e+11 NaN NaN \n",
+ "3 1.138693e+10 1.186135e+10 1.302506e+10 1.505888e+10 NaN NaN \n",
+ "4 2.811489e+09 2.877312e+09 3.013387e+09 3.236544e+09 NaN NaN \n",
+ ".. ... ... ... ... ... ... \n",
+ "211 6.440612e+09 6.714712e+09 7.227765e+09 7.900269e+09 NaN NaN \n",
+ "212 4.262833e+10 3.096824e+10 2.681870e+10 2.691440e+10 NaN NaN \n",
+ "213 3.174156e+11 2.963409e+11 3.492681e+11 3.682882e+11 NaN NaN \n",
+ "214 2.115439e+10 2.095475e+10 2.586814e+10 2.672007e+10 NaN NaN \n",
+ "215 1.996312e+10 2.054868e+10 2.281301e+10 3.100052e+10 NaN NaN \n",
+ "\n",
+ "[216 rows x 68 columns]"
+ ]
+ },
+ "execution_count": 57,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "country_gdp"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# country_gdp['2018'] = country_gdp['2018'].apply(lambda x: x/1000000000000)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 59,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " 2018 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 202 | \n",
+ " 美国 | \n",
+ " USA | \n",
+ " 20.494100 | \n",
+ "
\n",
+ " \n",
+ " 36 | \n",
+ " 中国 | \n",
+ " CHN | \n",
+ " 13.608152 | \n",
+ "
\n",
+ " \n",
+ " 97 | \n",
+ " 日本 | \n",
+ " JPN | \n",
+ " 4.970916 | \n",
+ "
\n",
+ " \n",
+ " 50 | \n",
+ " 德国 | \n",
+ " DEU | \n",
+ " 3.996759 | \n",
+ "
\n",
+ " \n",
+ " 68 | \n",
+ " 英国 | \n",
+ " GBR | \n",
+ " 2.825208 | \n",
+ "
\n",
+ " \n",
+ " 64 | \n",
+ " 法国 | \n",
+ " FRA | \n",
+ " 2.777535 | \n",
+ "
\n",
+ " \n",
+ " 89 | \n",
+ " 印度 | \n",
+ " IND | \n",
+ " 2.726323 | \n",
+ "
\n",
+ " \n",
+ " 94 | \n",
+ " 意大利 | \n",
+ " ITA | \n",
+ " 2.073902 | \n",
+ "
\n",
+ " \n",
+ " 26 | \n",
+ " 巴西 | \n",
+ " BRA | \n",
+ " 1.868626 | \n",
+ "
\n",
+ " \n",
+ " 32 | \n",
+ " 加拿大 | \n",
+ " CAN | \n",
+ " 1.712510 | \n",
+ "
\n",
+ " \n",
+ " 164 | \n",
+ " 俄罗斯联邦 | \n",
+ " RUS | \n",
+ " 1.657554 | \n",
+ "
\n",
+ " \n",
+ " 104 | \n",
+ " 大韩民国 | \n",
+ " KOR | \n",
+ " 1.619424 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 澳大利亚 | \n",
+ " AUS | \n",
+ " 1.432195 | \n",
+ "
\n",
+ " \n",
+ " 59 | \n",
+ " 西班牙 | \n",
+ " ESP | \n",
+ " 1.426189 | \n",
+ "
\n",
+ " \n",
+ " 124 | \n",
+ " 墨西哥 | \n",
+ " MEX | \n",
+ " 1.223809 | \n",
+ "
\n",
+ " \n",
+ " 87 | \n",
+ " 印度尼西亚 | \n",
+ " IDN | \n",
+ " 1.042173 | \n",
+ "
\n",
+ " \n",
+ " 143 | \n",
+ " 荷兰 | \n",
+ " NLD | \n",
+ " 0.913658 | \n",
+ "
\n",
+ " \n",
+ " 166 | \n",
+ " 沙特阿拉伯 | \n",
+ " SAU | \n",
+ " 0.782483 | \n",
+ "
\n",
+ " \n",
+ " 196 | \n",
+ " 土耳其 | \n",
+ " TUR | \n",
+ " 0.766509 | \n",
+ "
\n",
+ " \n",
+ " 33 | \n",
+ " 瑞士 | \n",
+ " CHE | \n",
+ " 0.705501 | \n",
+ "
\n",
+ " \n",
+ " 155 | \n",
+ " 波兰 | \n",
+ " POL | \n",
+ " 0.585783 | \n",
+ "
\n",
+ " \n",
+ " 181 | \n",
+ " 瑞典 | \n",
+ " SWE | \n",
+ " 0.551032 | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " 比利时 | \n",
+ " BEL | \n",
+ " 0.531767 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 阿根廷 | \n",
+ " ARG | \n",
+ " 0.518475 | \n",
+ "
\n",
+ " \n",
+ " 189 | \n",
+ " 泰国 | \n",
+ " THA | \n",
+ " 0.504993 | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " 奥地利 | \n",
+ " AUT | \n",
+ " 0.455737 | \n",
+ "
\n",
+ " \n",
+ " 144 | \n",
+ " 挪威 | \n",
+ " NOR | \n",
+ " 0.434751 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 阿拉伯联合酋长国 | \n",
+ " ARE | \n",
+ " 0.414179 | \n",
+ "
\n",
+ " \n",
+ " 141 | \n",
+ " 尼日利亚 | \n",
+ " NGA | \n",
+ " 0.397270 | \n",
+ "
\n",
+ " \n",
+ " 90 | \n",
+ " 爱尔兰 | \n",
+ " IRL | \n",
+ " 0.382487 | \n",
+ "
\n",
+ " \n",
+ " 93 | \n",
+ " 以色列 | \n",
+ " ISR | \n",
+ " 0.369690 | \n",
+ "
\n",
+ " \n",
+ " 213 | \n",
+ " 南非 | \n",
+ " ZAF | \n",
+ " 0.368288 | \n",
+ "
\n",
+ " \n",
+ " 169 | \n",
+ " 新加坡 | \n",
+ " SGP | \n",
+ " 0.364157 | \n",
+ "
\n",
+ " \n",
+ " 82 | \n",
+ " 中国香港特别行政区 | \n",
+ " HKG | \n",
+ " 0.362993 | \n",
+ "
\n",
+ " \n",
+ " 137 | \n",
+ " 马来西亚 | \n",
+ " MYS | \n",
+ " 0.354348 | \n",
+ "
\n",
+ " \n",
+ " 53 | \n",
+ " 丹麦 | \n",
+ " DNK | \n",
+ " 0.352058 | \n",
+ "
\n",
+ " \n",
+ " 152 | \n",
+ " 菲律宾 | \n",
+ " PHL | \n",
+ " 0.330910 | \n",
+ "
\n",
+ " \n",
+ " 41 | \n",
+ " 哥伦比亚 | \n",
+ " COL | \n",
+ " 0.330228 | \n",
+ "
\n",
+ " \n",
+ " 149 | \n",
+ " 巴基斯坦 | \n",
+ " PAK | \n",
+ " 0.312570 | \n",
+ "
\n",
+ " \n",
+ " 35 | \n",
+ " 智利 | \n",
+ " CHL | \n",
+ " 0.298231 | \n",
+ "
\n",
+ " \n",
+ " 17 | \n",
+ " 孟加拉国 | \n",
+ " BGD | \n",
+ " 0.274025 | \n",
+ "
\n",
+ " \n",
+ " 62 | \n",
+ " 芬兰 | \n",
+ " FIN | \n",
+ " 0.273961 | \n",
+ "
\n",
+ " \n",
+ " 57 | \n",
+ " 阿拉伯埃及共和国 | \n",
+ " EGY | \n",
+ " 0.250895 | \n",
+ "
\n",
+ " \n",
+ " 49 | \n",
+ " 捷克共和国 | \n",
+ " CZE | \n",
+ " 0.245226 | \n",
+ "
\n",
+ " \n",
+ " 208 | \n",
+ " 越南 | \n",
+ " VNM | \n",
+ " 0.244948 | \n",
+ "
\n",
+ " \n",
+ " 163 | \n",
+ " 罗马尼亚 | \n",
+ " ROU | \n",
+ " 0.239553 | \n",
+ "
\n",
+ " \n",
+ " 158 | \n",
+ " 葡萄牙 | \n",
+ " PRT | \n",
+ " 0.237979 | \n",
+ "
\n",
+ " \n",
+ " 91 | \n",
+ " 伊拉克 | \n",
+ " IRQ | \n",
+ " 0.225914 | \n",
+ "
\n",
+ " \n",
+ " 151 | \n",
+ " 秘鲁 | \n",
+ " PER | \n",
+ " 0.222238 | \n",
+ "
\n",
+ " \n",
+ " 76 | \n",
+ " 希腊 | \n",
+ " GRC | \n",
+ " 0.218032 | \n",
+ "
\n",
+ " \n",
+ " 147 | \n",
+ " 新西兰 | \n",
+ " NZL | \n",
+ " 0.205025 | \n",
+ "
\n",
+ " \n",
+ " 162 | \n",
+ " 卡塔尔 | \n",
+ " QAT | \n",
+ " 0.192009 | \n",
+ "
\n",
+ " \n",
+ " 55 | \n",
+ " 阿尔及利亚 | \n",
+ " DZA | \n",
+ " 0.180689 | \n",
+ "
\n",
+ " \n",
+ " 98 | \n",
+ " 哈萨克斯坦 | \n",
+ " KAZ | \n",
+ " 0.170539 | \n",
+ "
\n",
+ " \n",
+ " 86 | \n",
+ " 匈牙利 | \n",
+ " HUN | \n",
+ " 0.155703 | \n",
+ "
\n",
+ " \n",
+ " 105 | \n",
+ " 科威特 | \n",
+ " KWT | \n",
+ " 0.141678 | \n",
+ "
\n",
+ " \n",
+ " 200 | \n",
+ " 乌克兰 | \n",
+ " UKR | \n",
+ " 0.130832 | \n",
+ "
\n",
+ " \n",
+ " 119 | \n",
+ " 摩洛哥 | \n",
+ " MAR | \n",
+ " 0.118495 | \n",
+ "
\n",
+ " \n",
+ " 56 | \n",
+ " 厄瓜多尔 | \n",
+ " ECU | \n",
+ " 0.108398 | \n",
+ "
\n",
+ " \n",
+ " 179 | \n",
+ " 斯洛伐克共和国 | \n",
+ " SVK | \n",
+ " 0.106472 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code 2018\n",
+ "202 美国 USA 20.494100\n",
+ "36 中国 CHN 13.608152\n",
+ "97 日本 JPN 4.970916\n",
+ "50 德国 DEU 3.996759\n",
+ "68 英国 GBR 2.825208\n",
+ "64 法国 FRA 2.777535\n",
+ "89 印度 IND 2.726323\n",
+ "94 意大利 ITA 2.073902\n",
+ "26 巴西 BRA 1.868626\n",
+ "32 加拿大 CAN 1.712510\n",
+ "164 俄罗斯联邦 RUS 1.657554\n",
+ "104 大韩民国 KOR 1.619424\n",
+ "10 澳大利亚 AUS 1.432195\n",
+ "59 西班牙 ESP 1.426189\n",
+ "124 墨西哥 MEX 1.223809\n",
+ "87 印度尼西亚 IDN 1.042173\n",
+ "143 荷兰 NLD 0.913658\n",
+ "166 沙特阿拉伯 SAU 0.782483\n",
+ "196 土耳其 TUR 0.766509\n",
+ "33 瑞士 CHE 0.705501\n",
+ "155 波兰 POL 0.585783\n",
+ "181 瑞典 SWE 0.551032\n",
+ "14 比利时 BEL 0.531767\n",
+ "6 阿根廷 ARG 0.518475\n",
+ "189 泰国 THA 0.504993\n",
+ "11 奥地利 AUT 0.455737\n",
+ "144 挪威 NOR 0.434751\n",
+ "5 阿拉伯联合酋长国 ARE 0.414179\n",
+ "141 尼日利亚 NGA 0.397270\n",
+ "90 爱尔兰 IRL 0.382487\n",
+ "93 以色列 ISR 0.369690\n",
+ "213 南非 ZAF 0.368288\n",
+ "169 新加坡 SGP 0.364157\n",
+ "82 中国香港特别行政区 HKG 0.362993\n",
+ "137 马来西亚 MYS 0.354348\n",
+ "53 丹麦 DNK 0.352058\n",
+ "152 菲律宾 PHL 0.330910\n",
+ "41 哥伦比亚 COL 0.330228\n",
+ "149 巴基斯坦 PAK 0.312570\n",
+ "35 智利 CHL 0.298231\n",
+ "17 孟加拉国 BGD 0.274025\n",
+ "62 芬兰 FIN 0.273961\n",
+ "57 阿拉伯埃及共和国 EGY 0.250895\n",
+ "49 捷克共和国 CZE 0.245226\n",
+ "208 越南 VNM 0.244948\n",
+ "163 罗马尼亚 ROU 0.239553\n",
+ "158 葡萄牙 PRT 0.237979\n",
+ "91 伊拉克 IRQ 0.225914\n",
+ "151 秘鲁 PER 0.222238\n",
+ "76 希腊 GRC 0.218032\n",
+ "147 新西兰 NZL 0.205025\n",
+ "162 卡塔尔 QAT 0.192009\n",
+ "55 阿尔及利亚 DZA 0.180689\n",
+ "98 哈萨克斯坦 KAZ 0.170539\n",
+ "86 匈牙利 HUN 0.155703\n",
+ "105 科威特 KWT 0.141678\n",
+ "200 乌克兰 UKR 0.130832\n",
+ "119 摩洛哥 MAR 0.118495\n",
+ "56 厄瓜多尔 ECU 0.108398\n",
+ "179 斯洛伐克共和国 SVK 0.106472"
+ ]
+ },
+ "execution_count": 59,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "country_gdp[['Country Name', 'Country Code', '2018']].sort_values(by='2018', ascending=False)[:60]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#############################\n",
+ "# 历年GDP分析"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": [
+ "df_china = country_gdp[country_gdp['Country Name']=='中国']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "c:\\users\\wei.zhou\\appdata\\local\\programs\\python\\python37-32\\lib\\site-packages\\ipykernel_launcher.py:2: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " \n"
+ ]
+ }
+ ],
+ "source": [
+ "for i in range(1960, 2019):\n",
+ " df_china[str(i)] = df_china[str(i)].apply(lambda x: x/1000000000000)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "c:\\users\\wei.zhou\\appdata\\local\\programs\\python\\python37-32\\lib\\site-packages\\ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " This is separate from the ipykernel package so we can avoid doing imports until\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " Region | \n",
+ " Income_Group | \n",
+ " Unnamed: 4 | \n",
+ " Indicator Name | \n",
+ " Indicator Code | \n",
+ " 1960 | \n",
+ " 1961 | \n",
+ " 1962 | \n",
+ " ... | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ " 2017 | \n",
+ " 2018 | \n",
+ " 2019 | \n",
+ " Unnamed: 64 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 202 | \n",
+ " 美国 | \n",
+ " USA | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 0.5433 | \n",
+ " 0.5633 | \n",
+ " 0.6051 | \n",
+ " ... | \n",
+ " 15.542581 | \n",
+ " 16.197007 | \n",
+ " 16.784849 | \n",
+ " 17.521747 | \n",
+ " 18.219298 | \n",
+ " 18.707188 | \n",
+ " 19.485394 | \n",
+ " 20.4941 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
1 rows × 68 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code Region Income_Group Unnamed: 4 Indicator Name \\\n",
+ "202 美国 USA NaN 高收入国家 NaN GDP(现价美元) \n",
+ "\n",
+ " Indicator Code 1960 1961 1962 ... 2011 2012 \\\n",
+ "202 NY.GDP.MKTP.CD 0.5433 0.5633 0.6051 ... 15.542581 16.197007 \n",
+ "\n",
+ " 2013 2014 2015 2016 2017 2018 2019 \\\n",
+ "202 16.784849 17.521747 18.219298 18.707188 19.485394 20.4941 NaN \n",
+ "\n",
+ " Unnamed: 64 \n",
+ "202 NaN \n",
+ "\n",
+ "[1 rows x 68 columns]"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_usa = country_gdp[country_gdp['Country Name']=='美国']\n",
+ "for i in range(1960, 2019):\n",
+ " df_usa[str(i)] = df_usa[str(i)].apply(lambda x: x/1000000000000)\n",
+ "df_usa"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "c:\\users\\wei.zhou\\appdata\\local\\programs\\python\\python37-32\\lib\\site-packages\\ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " This is separate from the ipykernel package so we can avoid doing imports until\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " Region | \n",
+ " Income_Group | \n",
+ " Unnamed: 4 | \n",
+ " Indicator Name | \n",
+ " Indicator Code | \n",
+ " 1960 | \n",
+ " 1961 | \n",
+ " 1962 | \n",
+ " ... | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ " 2017 | \n",
+ " 2018 | \n",
+ " 2019 | \n",
+ " Unnamed: 64 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 97 | \n",
+ " 日本 | \n",
+ " JPN | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 0.044307 | \n",
+ " 0.053509 | \n",
+ " 0.060723 | \n",
+ " ... | \n",
+ " 6.15746 | \n",
+ " 6.203213 | \n",
+ " 5.155717 | \n",
+ " 4.850414 | \n",
+ " 4.389476 | \n",
+ " 4.926667 | \n",
+ " 4.859951 | \n",
+ " 4.970916 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
1 rows × 68 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code Region Income_Group Unnamed: 4 Indicator Name \\\n",
+ "97 日本 JPN NaN 高收入国家 NaN GDP(现价美元) \n",
+ "\n",
+ " Indicator Code 1960 1961 1962 ... 2011 2012 \\\n",
+ "97 NY.GDP.MKTP.CD 0.044307 0.053509 0.060723 ... 6.15746 6.203213 \n",
+ "\n",
+ " 2013 2014 2015 2016 2017 2018 2019 \\\n",
+ "97 5.155717 4.850414 4.389476 4.926667 4.859951 4.970916 NaN \n",
+ "\n",
+ " Unnamed: 64 \n",
+ "97 NaN \n",
+ "\n",
+ "[1 rows x 68 columns]"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_jpn = country_gdp[country_gdp['Country Name']=='日本']\n",
+ "for i in range(1960, 2019):\n",
+ " df_jpn[str(i)] = df_jpn[str(i)].apply(lambda x: x/1000000000000)\n",
+ "df_jpn"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "c:\\users\\wei.zhou\\appdata\\local\\programs\\python\\python37-32\\lib\\site-packages\\ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " This is separate from the ipykernel package so we can avoid doing imports until\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " Region | \n",
+ " Income_Group | \n",
+ " Unnamed: 4 | \n",
+ " Indicator Name | \n",
+ " Indicator Code | \n",
+ " 1960 | \n",
+ " 1961 | \n",
+ " 1962 | \n",
+ " ... | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ " 2017 | \n",
+ " 2018 | \n",
+ " 2019 | \n",
+ " Unnamed: 64 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 50 | \n",
+ " 德国 | \n",
+ " DEU | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 3.757698 | \n",
+ " 3.543984 | \n",
+ " 3.752514 | \n",
+ " 3.898727 | \n",
+ " 3.381389 | \n",
+ " 3.495163 | \n",
+ " 3.693204 | \n",
+ " 3.996759 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
1 rows × 68 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code Region Income_Group Unnamed: 4 Indicator Name \\\n",
+ "50 德国 DEU NaN 高收入国家 NaN GDP(现价美元) \n",
+ "\n",
+ " Indicator Code 1960 1961 1962 ... 2011 2012 2013 \\\n",
+ "50 NY.GDP.MKTP.CD NaN NaN NaN ... 3.757698 3.543984 3.752514 \n",
+ "\n",
+ " 2014 2015 2016 2017 2018 2019 Unnamed: 64 \n",
+ "50 3.898727 3.381389 3.495163 3.693204 3.996759 NaN NaN \n",
+ "\n",
+ "[1 rows x 68 columns]"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_de = country_gdp[country_gdp['Country Name']=='德国']\n",
+ "for i in range(1960, 2019):\n",
+ " df_de[str(i)] = df_de[str(i)].apply(lambda x: x/1000000000000)\n",
+ "df_de"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "c:\\users\\wei.zhou\\appdata\\local\\programs\\python\\python37-32\\lib\\site-packages\\ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " This is separate from the ipykernel package so we can avoid doing imports until\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " Region | \n",
+ " Income_Group | \n",
+ " Unnamed: 4 | \n",
+ " Indicator Name | \n",
+ " Indicator Code | \n",
+ " 1960 | \n",
+ " 1961 | \n",
+ " 1962 | \n",
+ " ... | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ " 2017 | \n",
+ " 2018 | \n",
+ " 2019 | \n",
+ " Unnamed: 64 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 68 | \n",
+ " 英国 | \n",
+ " GBR | \n",
+ " NaN | \n",
+ " 高收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 0.072328 | \n",
+ " 0.076694 | \n",
+ " 0.080602 | \n",
+ " ... | \n",
+ " 2.634896 | \n",
+ " 2.676605 | \n",
+ " 2.753565 | \n",
+ " 3.034729 | \n",
+ " 2.896421 | \n",
+ " 2.659239 | \n",
+ " 2.637866 | \n",
+ " 2.825208 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
1 rows × 68 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code Region Income_Group Unnamed: 4 Indicator Name \\\n",
+ "68 英国 GBR NaN 高收入国家 NaN GDP(现价美元) \n",
+ "\n",
+ " Indicator Code 1960 1961 1962 ... 2011 2012 \\\n",
+ "68 NY.GDP.MKTP.CD 0.072328 0.076694 0.080602 ... 2.634896 2.676605 \n",
+ "\n",
+ " 2013 2014 2015 2016 2017 2018 2019 \\\n",
+ "68 2.753565 3.034729 2.896421 2.659239 2.637866 2.825208 NaN \n",
+ "\n",
+ " Unnamed: 64 \n",
+ "68 NaN \n",
+ "\n",
+ "[1 rows x 68 columns]"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_uk = country_gdp[country_gdp['Country Name']=='英国']\n",
+ "for i in range(1960, 2019):\n",
+ " df_uk[str(i)] = df_uk[str(i)].apply(lambda x: x/1000000000000)\n",
+ "df_uk"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": [
+ "year_str = [str(i) for i in range(1960, 2019)]\n",
+ "\n",
+ "china_gdp = df_china[year_str].values.tolist()[0]\n",
+ "usa_gdp = df_usa[year_str].values.tolist()[0]\n",
+ "jpn_gdp = df_jpn[year_str].values.tolist()[0]\n",
+ "de_gdp = df_de[year_str].values.tolist()[0]\n",
+ "uk_gdp = df_uk[year_str].values.tolist()[0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 154,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Country Name | \n",
+ " Country Code | \n",
+ " Region | \n",
+ " Income_Group | \n",
+ " Unnamed: 4 | \n",
+ " Indicator Name | \n",
+ " Indicator Code | \n",
+ " 1960 | \n",
+ " 1961 | \n",
+ " 1962 | \n",
+ " ... | \n",
+ " 2011 | \n",
+ " 2012 | \n",
+ " 2013 | \n",
+ " 2014 | \n",
+ " 2015 | \n",
+ " 2016 | \n",
+ " 2017 | \n",
+ " 2018 | \n",
+ " 2019 | \n",
+ " Unnamed: 64 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 36 | \n",
+ " 中国 | \n",
+ " CHN | \n",
+ " 东亚与太平洋地区(不包括高收入) | \n",
+ " 中高等收入国家 | \n",
+ " NaN | \n",
+ " GDP(现价美元) | \n",
+ " NY.GDP.MKTP.CD | \n",
+ " 0.059716 | \n",
+ " 0.050057 | \n",
+ " 0.047209 | \n",
+ " ... | \n",
+ " 7.5515 | \n",
+ " 8.532231 | \n",
+ " 9.570406 | \n",
+ " 10.438529 | \n",
+ " 11.015542 | \n",
+ " 11.137946 | \n",
+ " 12.143491 | \n",
+ " 13.608152 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
1 rows × 68 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Country Name Country Code Region Income_Group Unnamed: 4 \\\n",
+ "36 中国 CHN 东亚与太平洋地区(不包括高收入) 中高等收入国家 NaN \n",
+ "\n",
+ " Indicator Name Indicator Code 1960 1961 1962 ... 2011 \\\n",
+ "36 GDP(现价美元) NY.GDP.MKTP.CD 0.059716 0.050057 0.047209 ... 7.5515 \n",
+ "\n",
+ " 2012 2013 2014 2015 2016 2017 2018 \\\n",
+ "36 8.532231 9.570406 10.438529 11.015542 11.137946 12.143491 13.608152 \n",
+ "\n",
+ " 2019 Unnamed: 64 \n",
+ "36 NaN NaN \n",
+ "\n",
+ "[1 rows x 68 columns]"
+ ]
+ },
+ "execution_count": 154,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_china"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from pyecharts.charts import Scatter\n",
+ "\n",
+ "def scatter_base(choose, values, country) -> Scatter:\n",
+ " c = (\n",
+ " Scatter()\n",
+ " .add_xaxis(choose)\n",
+ " .add_yaxis(\"%s历年GDP\" % country, values)\n",
+ " .set_global_opts(title_opts=opts.TitleOpts(title=\"\"),\n",
+ " # datazoom_opts=opts.DataZoomOpts(),\n",
+ " yaxis_opts=opts.AxisOpts(\n",
+ " axislabel_opts=opts.LabelOpts(formatter=\"{value} /万亿\")\n",
+ " )\n",
+ " )\n",
+ " .set_series_opts(label_opts=opts.LabelOpts(is_show=False))\n",
+ " )\n",
+ " return c"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "scatter_base(year_str, china_gdp, '中国').render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "scatter_base(year_str, usa_gdp, '美国').render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 21,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "scatter_base(year_str, jpn_gdp, '日本').render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "scatter_base(year_str, de_gdp, '德国').render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "scatter_base(year_str, uk_gdp, '英国').render_notebook()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import sklearn.pipeline as pl\n",
+ "import sklearn.linear_model as lm\n",
+ "import sklearn.preprocessing as sp\n",
+ "import matplotlib.pyplot as mp\n",
+ "import numpy as np\n",
+ "import sklearn.metrics as sm"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[1960],\n",
+ " [1961],\n",
+ " [1962],\n",
+ " [1963],\n",
+ " [1964],\n",
+ " [1965],\n",
+ " [1966],\n",
+ " [1967],\n",
+ " [1968],\n",
+ " [1969],\n",
+ " [1970],\n",
+ " [1971],\n",
+ " [1972],\n",
+ " [1973],\n",
+ " [1974],\n",
+ " [1975],\n",
+ " [1976],\n",
+ " [1977],\n",
+ " [1978],\n",
+ " [1979],\n",
+ " [1980],\n",
+ " [1981],\n",
+ " [1982],\n",
+ " [1983],\n",
+ " [1984],\n",
+ " [1985],\n",
+ " [1986],\n",
+ " [1987],\n",
+ " [1988],\n",
+ " [1989],\n",
+ " [1990],\n",
+ " [1991],\n",
+ " [1992],\n",
+ " [1993],\n",
+ " [1994],\n",
+ " [1995],\n",
+ " [1996],\n",
+ " [1997],\n",
+ " [1998],\n",
+ " [1999],\n",
+ " [2000],\n",
+ " [2001],\n",
+ " [2002],\n",
+ " [2003],\n",
+ " [2004],\n",
+ " [2005],\n",
+ " [2006],\n",
+ " [2007],\n",
+ " [2008],\n",
+ " [2009],\n",
+ " [2010],\n",
+ " [2011],\n",
+ " [2012],\n",
+ " [2013],\n",
+ " [2014],\n",
+ " [2015],\n",
+ " [2016],\n",
+ " [2017],\n",
+ " [2018]])"
+ ]
+ },
+ "execution_count": 25,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "year = [i for i in range(1960, 2019)]\n",
+ "X = np.array(year)\n",
+ "X = X.reshape(-1, 1)\n",
+ "X"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "y = usa_gdp"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "model = pl.make_pipeline(\n",
+ " sp.PolynomialFeatures(5), # 多项式特征拓展器\n",
+ " lm.LinearRegression() # 线性回归器\n",
+ ")\n",
+ "# 训练模型\n",
+ "model.fit(X, y)\n",
+ "# 求预测值y\n",
+ "pred_y = model.predict(X)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 244,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([ 0.67561513, 0.64550236, 0.63069893, 0.6310778 , 0.64651146,\n",
+ " 0.67687193, 0.7220308 , 0.78185916, 0.85622766, 0.94500648,\n",
+ " 1.04806535, 1.16527352, 1.29649978, 1.44161246, 1.60047942,\n",
+ " 1.77296806, 1.9589453 , 2.15827761, 2.37083099, 2.59647097,\n",
+ " 2.8350626 , 3.08647047, 3.35055872, 3.62719099, 3.91623047,\n",
+ " 4.21753986, 4.53098142, 4.8564169 , 5.19370761, 5.54271437,\n",
+ " 5.90329754, 6.27531699, 6.65863212, 7.05310188, 7.4585847 ,\n",
+ " 7.87493857, 8.302021 , 8.739689 , 9.18779914, 9.64620748,\n",
+ " 10.11476961, 10.59334065, 11.08177525, 11.57992755, 12.08765123,\n",
+ " 12.60479949, 13.13122504, 13.66678012, 14.21131649, 14.7646854 ,\n",
+ " 15.32673766, 15.89732355, 16.47629291, 17.06349506, 17.65877886,\n",
+ " 18.26199267, 18.87298437, 19.49160136, 20.11769053])"
+ ]
+ },
+ "execution_count": 244,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pred_y"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([-6.56811530e-01, -4.31663493e-01, -2.35026973e-01, -6.53989891e-02,\n",
+ " 7.87281703e-02, 1.98866952e-01, 2.96534541e-01, 3.73252871e-01,\n",
+ " 4.30548622e-01, 4.69953232e-01, 4.93002894e-01, 5.01238570e-01,\n",
+ " 4.96205988e-01, 4.79455654e-01, 4.52542849e-01, 4.17027639e-01,\n",
+ " 3.74474880e-01, 3.26454222e-01, 2.74540110e-01, 2.20311797e-01,\n",
+ " 1.65353340e-01, 1.11253613e-01, 5.96063043e-02, 1.20099274e-02,\n",
+ " -2.99321770e-02, -6.46118355e-02, -9.04160388e-02, -1.05726933e-01,\n",
+ " -1.08921820e-01, -9.83731464e-02, -7.24485036e-02, -2.95106209e-02,\n",
+ " 3.20826372e-02, 1.13978281e-01, 2.17828195e-01, 3.45289144e-01,\n",
+ " 4.98022782e-01, 6.77695650e-01, 8.85979189e-01, 1.12454974e+00,\n",
+ " 1.39508854e+00, 1.69928175e+00, 2.03882045e+00, 2.41540061e+00,\n",
+ " 2.83072316e+00, 3.28649394e+00, 3.78442374e+00, 4.32622827e+00,\n",
+ " 4.91362820e+00, 5.54834914e+00, 6.23212165e+00, 6.96668128e+00,\n",
+ " 7.75376850e+00, 8.59512877e+00, 9.49251254e+00, 1.04476752e+01,\n",
+ " 1.14623772e+01, 1.25383838e+01, 1.36774655e+01, 1.48813976e+01])"
+ ]
+ },
+ "execution_count": 34,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "p_year = [i for i in range(1960, 2020)]\n",
+ "p_X = np.array(p_year)\n",
+ "p_X = p_X.reshape(-1, 1)\n",
+ "p_pred_y = model.predict(p_X)\n",
+ "p_pred_y"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 245,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[0.5433,\n",
+ " 0.5633,\n",
+ " 0.6051,\n",
+ " 0.6386,\n",
+ " 0.6858,\n",
+ " 0.7437,\n",
+ " 0.815,\n",
+ " 0.8617,\n",
+ " 0.9425,\n",
+ " 1.0199,\n",
+ " 1.073303,\n",
+ " 1.16485,\n",
+ " 1.27911,\n",
+ " 1.425376,\n",
+ " 1.545243,\n",
+ " 1.684904,\n",
+ " 1.873412,\n",
+ " 2.081826,\n",
+ " 2.351599,\n",
+ " 2.627334,\n",
+ " 2.857307,\n",
+ " 3.207042,\n",
+ " 3.343789,\n",
+ " 3.634038,\n",
+ " 4.037613,\n",
+ " 4.338979,\n",
+ " 4.579631,\n",
+ " 4.855215,\n",
+ " 5.236438,\n",
+ " 5.64158,\n",
+ " 5.963144,\n",
+ " 6.158129,\n",
+ " 6.520327,\n",
+ " 6.858559,\n",
+ " 7.287236,\n",
+ " 7.639749,\n",
+ " 8.073122,\n",
+ " 8.577554463,\n",
+ " 9.062818211,\n",
+ " 9.630664202,\n",
+ " 10.252345464,\n",
+ " 10.581821399,\n",
+ " 10.936419054,\n",
+ " 11.458243878,\n",
+ " 12.213729147,\n",
+ " 13.036640229,\n",
+ " 13.814611414,\n",
+ " 14.45185865,\n",
+ " 14.712844084,\n",
+ " 14.448933025,\n",
+ " 14.992052727,\n",
+ " 15.542581104,\n",
+ " 16.197007349,\n",
+ " 16.78484919,\n",
+ " 17.521746534,\n",
+ " 18.219297584,\n",
+ " 18.707188235,\n",
+ " 19.485393853,\n",
+ " 20.4941]"
+ ]
+ },
+ "execution_count": 245,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "