當前位置:成語大全網 - 新華字典 - wto數據庫如何查數據

wto數據庫如何查數據

聯合國商品貿易統計數據庫(縮寫UN Comtrade)由聯合國統計署創建,是目前全球最大、最權威的國際商品貿易數據型資源庫,每年超過200個國家和地區向聯合國統計署提供其官方年度商品貿易數據,涵蓋全球99%的商品交易,真實反映國際商品流動趨勢。這是我們研究全球貿易活動最基礎、最權威的數據庫。下載頁面如下:

但是每次都要手動操作壹遍,就比較麻煩。不過UN Comtrade提供了可以更方便獲得數據的接口,我們來嘗試壹下。接口的實現原理,大概相當於:我們把要查詢的數據,編成壹條信息,發給UN Comtrade,然後UN Comtrade返回壹個包含數據的文件,我們再解碼成我們想要的格式。

壹、查看接口格式。

我們先去UN Comtrade的接口網頁,來看壹看接口格式。

上圖就是UN Comtrade的接口中,所包含的參數及格式。具體為:

r:reporting area?報告數據的國家,默認值0

px:classification?商品代碼體系,商品進出口的默認值是HS(即Harmonized System),也可以選ST(即Standard International Trade Classification),服務進出口的默認值是EB02

ps:time period?時間區間,格式為?YYYY?YYYYMM?now?recent等幾種格式,取決於周期是月還是年。now?是獲得最近1期數據(默認值),recent?是獲得最近5期數據

p:partner area?發生貿易往來的經濟體,默認值all

rg:trade regime / trade flow?貿易的方向,1?代表進口,2?代表出口,默認值all

cc:classification code?商品分類代碼,TOTAL?代表全部,AG2?代表兩位代碼(默認值)等

max:maximum records returned?壹次性返回的最大數據條數,默認值是500,普通訪客最高是10萬,認證用戶最高是25萬

type:trade data type?貿易類型,C?是商品(默認值),S?是服務

freq:data set frequency?數據頻率,A?是年(默認值),M?是月

head:heading style?數據擡頭格式,H?適合人閱讀(默認值),M?適合機器閱讀

最近鐵礦石價格高漲,引發市場關註,而中國鐵礦石的主要進口來源地是澳大利亞,我們就來看看,過去5年中國自澳大利亞進口鐵礦石的數據。

我們把相關參數錄入後,點擊左下角的?Try it out!?就會返回給我們壹個地址,這個地址就是向UN Comtrade發送數據請求的信息。同樣,我們可以基於這條信息的格式,來設計我們的?Python?接口函數。

trade.un.org/api/get?r=156&px=HS&ps=2015%2C2016%2C2017%2C2018%2C2019&p=36&rg=1&cc=2601&type=C&freq=A&head=H

我們把這條消息輸入瀏覽器的地址欄,就可以看到返回的數據如下,裏面的?TradeValue?就是我們想要的數據了:

二、調用requests庫解析數據

UN Comtrade的接口以json格式交換數據,我們來看壹看返回的數據格式。我們要用到Python的requests庫。

import requests test = requests.get("trade.un.org/api/get", params=dict(r="156",px="HS",ps="2015,2016,2017,2018,2019",p="36",rg='1',cc='2601',type='C',freq="A")) test.json()

我們來看壹下返回內容,json有點類似於雙重字典,從下文可以看到,返回結果主要包括兩大類,第壹大類是validation,主要是過程信息,第二大類是dataset,主要是我們需要的數據。

{'validation': {'status': {'name': 'Ok', 'value': 0, 'category': 0, 'description': '', 'helpUrl': 'For more reference visit trade.un.org/data/dev/portal/'}, 'message': None, 'count': {'value': 5, 'started': '2020-12-15T02:52:46.3395337+01:00', 'finished': '2020-12-15T02:52:47.0901557+01:00', 'durationSeconds': 0.750622}, 'datasetTimer': {'started': '2020-12-15T02:52:46.3395337+01:00', 'finished': '2020-12-15T02:52:47.8896543+01:00', 'durationSeconds': 1.5501205999999998}}, 'dataset': [{'pfCode': 'H5', 'yr': 2017, 'period': 2017, 'periodDesc': '2017', 'aggrLevel': 4, 'IsLeaf': 0, 'rgCode': 1, 'rgDesc': 'Import', 'rtCode': 156, 'rtTitle': 'China', 'rt3ISO': 'CHN', 'ptCode': 36, 'ptTitle': 'Australia', 'pt3ISO': 'AUS', 'ptCode2': None, 'ptTitle2': '', 'pt3ISO2': '', 'cstCode': '', 'cstDesc': '', 'motCode': '', 'motDesc': '', 'cmdCode': '2601', 'cmdDescE': 'Iron ores and concentrates; including roasted iron pyrites', 'qtCode': 8, 'qtDesc': 'Weight in kilograms', 'qtAltCode': None, 'qtAltDesc': '', 'TradeQuantity': 668420584292, 'AltQuantity': None, 'NetWeight': 668420584292, 'GrossWeight': None, 'TradeValue': 46500341920, 'CIFValue': None, 'FOBValue': None, 'estCode': 0},

三、使用Pandas庫轉換數據格式

我們選擇我們關心的數據,用關鍵字提取出來,然後轉換成DataFrame格式,就可以方便的查看數據了:

import pandas as pd import cufflinks as cf pd.DataFrame(test.json()['dataset'])[['yr','TradeValue']].iplot(x='yr',y='TradeValue',kind='bar',title='中國過去5年自澳大利亞進口鐵礦石金額')

四、簡單封裝

我們把上文中的讀取和解析數據的過程,簡單封裝成壹個函數,以方便後續調用,比如我們想查看中國歷年自澳大利亞進口鐵礦石的金額,可以用如下命令:

import requests import pandas as pd import cufflinks as cf def comtrade_data(**params): r = requests.get("trade.un.org/api/get", params=params) return pd.DataFrame(r.json()['dataset']) Iron_ores = comtrade_data(r="156",px="HS",ps="ALL",p="36",rg='1',cc='2601',type='C',freq="A") Iron_ores[['yr','TradeValue']].iplot(x='yr',y='TradeValue',kind='bar',title='中國自澳大利亞進口鐵礦石金額')

我們想看看中國的大豆自各國進口的情況,用

soybean = comtrade_data(r="156",px="HS",ps="2019",p="all",rg='1',cc='1201',type='C',freq="A") soybean = soybean.sort_values(by='TradeValue',ascending=False) soybean.iloc[1:6].iplot(x='ptTitle',y='TradeValue',kind='bar',title='2019年中國大豆進口額')

從上圖可以看到,2019年中國自巴西的大豆進口,明顯高於美國,那麽這種情況,是否是受到中美貿易摩擦的影響呢?我們用如下命令,就可以很清晰的看到,2018年之前,中國自美國和巴西進口大豆的金額比較接近,但是2018年之後,中國自美進口大豆銳減,並從巴西替代,這也是中美貿易摩擦對美國影響的壹個案例。

soybean_import = comtrade_data(r="156",px="HS",ps="all",p="76,842",rg='1',cc='1201',type='C',freq="A") soybean_import_usa = soybean_import[soybean_import['ptTitle']=='USA'].set_index('yr')[['TradeValue']] soybean_import_brazil = soybean_import[soybean_import['ptTitle']=='Brazil'].set_index('yr')[['TradeValue']] soybean_import_all = soybean_import_usa.join(soybean_import_brazil,lsuffix='_USA',rsuffix='_Brazil') soybean_import_all.iplot(kind='bar',title='中國自美國和巴西進口大豆金額',legend={'orientation':'h','x':0.1,'y':-0.1})

五、幾個註意事項

1、如果是訪客用戶的話,ps、r、p三個參數最多只能填5個代碼,最多只有壹個參數可以使用all,cc最多可以填20個代碼,可以使用all

2、查詢國家的時候,只能錄入國家編號,查詢國家對應編號的地址是trade.un.org/Data/cache/reporterAreas.json

3、查詢對手方國家的時候,只能錄入國家編號,查詢對手方國家對應編號的地址是trade.un.org/Data/cache/partnerAreas.json

4、查詢相關商品對應的HS編碼,地址是trade.un.org/Data/cache/classificationHS.json