Python中的World Integrated Trade Solution(WITS)API

world-trade-data的Python项目详细描述


Python中的世界贸易统计(WITS)API

Build Statuscodecov.ioLanguage grade: PythonPypipyversionsJupyter NotebookGitHub.ioStar

此包是World Integrated Trade Solution API的实现。 使用此包可浏览由World Bank发布的Trade and Tariff Data。在

这个python包本身是在MIT许可下获得许可的。不同的条款和条件适用于WITS数据本身,请阅读WITS网站上的Frequently Asked Questions。在

快速教程

安装

使用安装或更新World Trade Datapython包

pip install world_trade_data --upgrade

获取国家、产品、指标清单

请参见GitHub上下面命令的输出。甚至,打开这个README.md作为一个笔记本,并在Binder上交互运行它!在

^{pr2}$
wits.get_countries()
wits.get_products()
wits.get_indicators()

所有这些方法都接受一个datasource参数,它可以是

wits.DATASOURCES

术语和数据可用性可通过get_nomenclatures()get_dataavailability()访问。在

获取贸易或关税数据

指示器可用于get_indicator。税率可以用get_tariff_reportedget_tariff_estimated加载。在

示例用例

下面我们将展示如何收集和绘制2017年美国进出口数据。在

首先,我们请求相应导入和导出的值。这里,我们使用partner='wld'的默认值,product='all'的默认值。在

usa_imports_2017=wits.get_indicator('MPRT-TRD-VL',reporter='usa',year='2017')usa_exports_2017=wits.get_indicator('XPRT-TRD-VL',reporter='usa',year='2017')
usa_imports_2017

现在我们删除索引的第一级

usa_imports_2017=usa_imports_2017.loc['Annual'].loc['United States'].loc['World']usa_exports_2017=usa_exports_2017.loc['Annual'].loc['United States'].loc['World']

请注意,表中有一行给出了所有产品的进口值:

usa_imports_2017.loc['All Products']

为了避免重复计算,我们只考虑部门:

products=wits.get_products()sectors=products.loc[(products.grouptype=='Sector')&(products.index!='Total')].productdescription.valuessectors

并确保我们能很好地再现:

assertpd.np.isclose(usa_imports_2017.loc[sectors].Value.sum(),usa_imports_2017.loc['All Products'].Value)

最后,我们使用Plotly's Pie Charts来表示数据

importplotly.graph_objectsasgofromplotly.subplotsimportmake_subplotsimports_musd=usa_imports_2017.loc[sectors].Value/1e3exports_musd=usa_exports_2017.loc[sectors].Value/1e3fig=make_subplots(rows=1,cols=2,specs=[[{'type':'domain'},{'type':'domain'}]])fig.add_trace(go.Pie(labels=sectors,values=imports_musd,name="Imports"),1,1)fig.add_trace(go.Pie(labels=sectors,values=exports_musd,name="Exports"),1,2)fig.update_traces(hole=.4,scalegroup='usa',textinfo='label',hovertemplate="%{label}<br>%{value:,.0f}M$<br>%{percent}")fig.update_layout(title_text="Trade Statistics, USA, 2017",annotations=[dict(text='Imports<br>{:.3f}T$'.format(imports_musd.sum()/1e6),x=0.17,y=0.5,font_size=16,showarrow=False),dict(text='Exports<br>{:.3f}T$'.format(exports_musd.sum()/1e6),x=0.83,y=0.5,font_size=16,showarrow=False)])fig.show(renderer='notebook_connected')

参考和备选方案

  • 官方的WITS portal允许您可视化并下载贸易和关税数据。在这个包中实现的API被记录为here。在
  • WITS数据可以通过tradestatistics库在R中访问。在
  • 访问WITS数据的另一种方法是使用pandasdmx。在
<;脚本异步延迟src=”https://buttons.github.io/buttons.js“>;<;/script>;

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何拆分字符串(基于各种分隔符),但不保留空格?   解析。Json格式的txt文件和knime中的java   java Spring rest api为什么在rest api调用的响应中更改了数据类型   升华文本3抛出java。lang.ClassNotFoundException,而记事本++不存在   java Android指纹扫描仪在尝试5次后停止工作?   java Android如何设置精确的重复报警?   java如何使用HTTPGET connect为access API输入用户名和密码   java当测试报告显示没有测试失败时,Gradle为什么说“有失败的测试”?   用Gson实现java获取响应   MapReduce程序中函数错误的java不可映射参数   java spring安全性不符合自动代理的条件   java GWT使用异步回调进行同步/阻塞调用   java奇怪的类数组问题无法在jsp中显示   如何在java中使用PrinterJob使用epl打印条形码   java如何在JTable中居中单元格   将Java Mockito测试转换为Kotlin   html Java正则表达式模式匹配到多个相同标记   testCompile中缺少java Gradle(Android)多项目依赖项   在输入提示后输入字符串时发生java FileNotFoundException