25  印度对外贸易的探索性研究

25.1 引言贸易数据分析的重要性

对外贸易分析: - 贸易伙伴: 识别主要进出口国 - 贸易趋势: 了解贸易发展方向 - 政策制定: 基于数据的贸易政策

25.2 数据准备

列表 25.1
# 注:sk2018-2010_export.csv 和 sk2018-2010_import.csv 数据文件本地没有,但平台已经内置
# =============================================================================
# 题目:印度对外贸易数据读取与透视表构建
# =============================================================================
# 本代码块实现印度进出口贸易数据的读取和初步整理
# 通过透视表构建,将数据按国家和年份进行重排,便于后续趋势分析

# ==================== 导入数据分析与可视化库 ====================
import pandas as pd  # 导入Pandas库,用于数据表操作和分析
import numpy as np  # 导入NumPy库,用于数值计算
import matplotlib.pyplot as plt  # 导入Matplotlib库,用于绘图
from IPython.display import display, Markdown  # 导入显示工具,用于富文本输出

# ==================== 设置中文字体支持 ====================
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置绘图时的中文字体为黑体,避免中文显示为方框
plt.rcParams['axes.unicode_minus'] = False  # 解决负号'-'显示为方块的问题

# ==================== 读取进出口贸易数据 ====================
df_export = pd.read_csv('sk2018-2010_export.csv')  # 读取2010-2018年印度出口数据,包含国家、年份、贸易额等字段
df_import = pd.read_csv('sk2018-2010_import.csv')  # 读取2010-2018年印度进口数据,包含国家、年份、贸易额等字段

print('出口数据形状:', df_export.shape)  # 输出出口数据集的行数和列数,了解数据规模
print('进口数据形状:', df_import.shape)  # 输出进口数据集的行数和列数,了解数据规模

# ==================== 构建出口透视表 ====================
exp_country_table = pd.pivot_table(
    df_export,  # 以出口数据为源数据
    values='value',  # 透视表的值为贸易额(value字段)
    index='country',  # 行索引为国家,便于观察各国家趋势
    columns='year'  # 列为年份,便于观察时间序列变化
)

# ==================== 构建进口透视表 ====================
imp_country_table = pd.pivot_table(
    df_import,  # 以进口数据为源数据
    values='value',  # 透视表的值为贸易额(value字段)
    index='country',  # 行索引为国家
    columns='year'  # 列为年份
)

print('\n出口透视表:')  # 输出标题
print(exp_country_table.head())  # 显示出口透视表的前5行,预览数据结构

25.3 出口趋势分析

列表 25.2
# 注:sk2018-2010_export.csv 和 sk2018-2010_import.csv 数据文件本地没有,但平台已经内置
# ⚠️ 平台原始代码 - 请原样输入至教学平台(注释除外),平台才会判定答案正确
import pandas as pd  # 导入Pandas数据分析库
import numpy as np  # 导入NumPy数值计算库
import matplotlib.pyplot as plt  # 导入Matplotlib绑图库
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用黑体作为默认字体以支持中文
plt.rcParams['axes.unicode_minus'] = False # 正确显示负号
from IPython.display import display, Markdown  # 导入display,模块

#定义加粗显示函数
def bold(string):
  display(Markdown(string))  # 以Markdown格式渲染输出描述性文本
   
#读取进出口数据
df_export = pd.read_csv('sk2018-2010_export.csv')
df_import = pd.read_csv('sk2018-2010_import.csv')  # 从CSV文件读取数据存入df_import
# 创建透视表exp_country_table
exp_country_table = pd.pivot_table(df_export, values = 'value', index = 'country', columns = 'year')
# 创建透视表imp_country_table
imp_country_table = pd.pivot_table(df_import, values = 'value', index = 'country', columns = 'year')

bold('**2010年至2018年印度对外贸易出口方向的趋势**')  # 以粗体Markdown格式输出:2010年至2018年印度对外贸易出口方向的趋势
plt.figure(figsize=(15,10))  # 创建图形画布
 
plt.subplot(221)  # 选择子图位置
g = exp_country_table.loc["U S A"].plot(color='purple', linewidth=3)  # 按标签索引提取数据
g.set_ylabel('USD (millions)', fontsize = 12)  # 设置Y轴标签
g.set_xlabel('Year', fontsize = 12)  # 设置X轴标签
g.set_title('对美国出口的趋势', size = 15)  # 设置图表标题

plt.subplot(222)  # 选择子图位置
g1 = exp_country_table.loc["U ARAB EMTS"].plot(color='purple', linewidth=3)  # 按标签索引提取数据
g1.set_ylabel('USD (millions)', fontsize = 12)  # 设置Y轴标签
g1.set_xlabel('Year', fontsize = 12)  # 设置X轴标签
g1.set_title('对阿联酋出口的趋势', size = 15)  # 设置图表标题

plt.subplot(223)  # 选择子图位置
g2 = exp_country_table.loc["CHINA P RP"].plot(color='purple', linewidth=3)  # 按标签索引提取数据
g2.set_ylabel('USD (millions)', fontsize = 12)  # 设置Y轴标签
g2.set_xlabel('Year', fontsize = 12)  # 设置X轴标签
g2.set_title('对中国出口的趋势', size = 15)  # 设置图表标题

plt.subplot(224)  # 选择子图位置
g3 = exp_country_table.loc["HONG KONG"].plot(color='purple', linewidth=3)  # 按标签索引提取数据
g3.set_ylabel('USD (millions)', fontsize = 12)  # 设置Y轴标签
g3.set_xlabel('Year', fontsize = 12)  # 设置X轴标签
g3.set_title('对香港出口的趋势', size = 15)  # 设置图表标题

plt.subplots_adjust(hspace = 0.4)  # 调整子图间距
plt.savefig("5.png")  # 保存图形至文件

bold('**2010年至2018年印度对外贸易进口方向的趋势**')  # 以粗体Markdown格式输出:2010年至2018年印度对外贸易进口方向的趋势
plt.figure(figsize=(15,10))  # 创建图形画布
 
plt.subplot(221)  # 选择子图位置
g = imp_country_table.loc["U S A"].plot(color='coral', linewidth=3)  # 按标签索引提取数据
g.set_ylabel('USD (millions)', fontsize = 12)  # 设置Y轴标签
g.set_xlabel('Year', fontsize = 12)  # 设置X轴标签
g.set_title('从美国进口的趋势', size = 15)  # 设置图表标题

plt.subplot(222)  # 选择子图位置
g1 = imp_country_table.loc["U ARAB EMTS"].plot(color='coral', linewidth=3)  # 按标签索引提取数据
g1.set_ylabel('USD (millions)', fontsize = 12)  # 设置Y轴标签
g1.set_xlabel('Year', fontsize = 12)  # 设置X轴标签
g1.set_title('从阿联酋进口的趋势', size = 15)  # 设置图表标题

plt.subplot(223)  # 选择子图位置
g2 = imp_country_table.loc["CHINA P RP"].plot(color='coral', linewidth=3)  # 按标签索引提取数据
g2.set_ylabel('USD (millions)', fontsize = 12)  # 设置Y轴标签
g2.set_xlabel('Year', fontsize = 12)  # 设置X轴标签
g2.set_title('从中国进口的趋势', size = 15)  # 设置图表标题

plt.subplot(224)  # 选择子图位置
g3 = imp_country_table.loc["SAUDI ARAB"].plot(color='coral', linewidth=3)  # 按标签索引提取数据
g3.set_ylabel('USD (millions)', fontsize = 12)  # 设置Y轴标签
g3.set_xlabel('Year', fontsize = 12)  # 设置X轴标签
g3.set_title('从沙特阿拉伯进口的趋势', size = 15)  # 设置图表标题

plt.subplots_adjust(hspace = 0.4)  # 调整子图间距
plt.savefig("6.png")  # 保存图形至文件

25.4 进口趋势分析

列表 25.3
# 注:该代码块依赖的数据来自上方平台任务代码块,因其未执行,本块也无法执行
bold('**2010年至2018年印度对外贸易进口方向的趋势**')  # 显示章节标题

# ==================== 创建2x2子图布局 ====================
fig, axes = plt.subplots(2, 2, figsize=(15, 10))  # 创建4个子图,用于展示4个主要进口来源国的趋势

# ==================== 绘制从美国进口趋势图 ====================
imp_country_table.loc['U S A'].plot(  # 选择从美国进口的数据
    ax=axes[0, 0],  # 绘制在第一行第一列
    color='coral',  # 设置线条颜色为珊瑚色,与出口的紫色形成对比
    linewidth=3  # 设置线宽
)
axes[0, 0].set_ylabel('USD (millions)', fontsize=12)  # 设置y轴标签
axes[0, 0].set_xlabel('Year', fontsize=12)  # 设置x轴标签
axes[0, 0].set_title('从美国进口的趋势', size=15)  # 设置子图标题

# ==================== 绘制从阿联酋进口趋势图 ====================
imp_country_table.loc['U ARAB EMTS'].plot(  # 选择从阿联酋进口的数据
    ax=axes[0, 1],  # 绘制在第一行第二列
    color='coral',  # 使用珊瑚色,保持一致性
    linewidth=3  # 设置线宽
)
axes[0, 1].set_ylabel('USD (millions)', fontsize=12)  # 设置y轴标签
axes[0, 1].set_xlabel('Year', fontsize=12)  # 设置x轴标签
axes[0, 1].set_title('从阿联酋进口的趋势', size=15)  # 设置子图标题

# ==================== 绘制从中国进口趋势图 ====================
imp_country_table.loc['CHINA P RP'].plot(  # 选择从中国进口的数据
    ax=axes[1, 0],  # 绘制在第二行第一列
    color='coral',  # 使用珊瑚色
    linewidth=3  # 设置线宽
)
axes[1, 0].set_ylabel('USD (millions)', fontsize=12)  # 设置y轴标签
axes[1, 0].set_xlabel('Year', fontsize=12)  # 设置x轴标签
axes[1, 0].set_title('从中国进口的趋势', size=15)  # 设置子图标题

# ==================== 绘制从沙特阿拉伯进口趋势图 ====================
imp_country_table.loc['SAUDI ARAB'].plot(  # 选择从沙特阿拉伯进口的数据
    ax=axes[1, 1],  # 绘制在第二行第二列
    color='coral',  # 使用珊瑚色
    linewidth=3  # 设置线宽
)
axes[1, 1].set_ylabel('USD (millions)', fontsize=12)  # 设置y轴标签
axes[1, 1].set_xlabel('Year', fontsize=12)  # 设置x轴标签
axes[1, 1].set_title('从沙特阿拉伯进口的趋势', size=15)  # 设置子图标题

# ==================== 调整子图间距并显示 ====================
plt.subplots_adjust(hspace=0.4)  # 设置子图垂直间距
plt.tight_layout()  # 自动调整布局
plt.show()  # 显示图形

25.5 分析结论

出口趋势: - 对美国、中国出口稳步增长 - 阿联酋和香港有所波动

进口趋势: - 从中国进口持续增长 - 能源进口(阿联酋、沙特)受油价影响