파이썬(Python)/해외시장조사 데이터 Plotly Guage Chart

[무역|7|Plotly] 해외시장조사 데이터 Guage chart 만들기

JJ Goh[Certified customs broker] 2020. 7. 11. 06:00

[무역|7|Plotly] 해외시장조사 데이터 Guage chart 만들기

 

 

응답 받은 데이터의 XML tree구조 이해 및 parser 코드 구성하기

 

 

 우선 요청메시지를 브라우저에 넣고 나온 결과를 보시겠습니다.

 

 <response>

<header>
<resultCode>00</resultCode>
<resultMsg>NOMAL_CODE</resultMsg>
</header>
<body>
<items>
<item>
<cntCd>
<data>AB</data>
<datatype>1유형</datatype>
</cntCd>
<critYear>
<data>2016</data>
<datatype>1유형</datatype>
</critYear>
<hsCd>
<data>870120</data>
<datatype>1유형</datatype>
</hsCd>
<rank>
<data>6498</data>
<datatype>1유형</datatype>
</rank>
<bhrcNatn>
<data>아루바</data>
<datatype>1유형</datatype>
</bhrcNatn>
<mrktAcblt>
<data>73</data>
<datatype>1유형</datatype>
</mrktAcblt>
<acbltMrktbGnrlz>
<data>52</data>
<datatype>1유형</datatype>
</acbltMrktbGnrlz>
<acbltAvgTrfrt>
<data>12</data>
<datatype>1유형</datatype>
</acbltAvgTrfrt>
<mrktAttrc>
<data>10</data>
<datatype>1유형</datatype>
</mrktAttrc>
 
(중략)  
 
</updDt>
</item>
</items>
<numOfRows>1</numOfRows>
<pageNo>50</pageNo>
<totalCount>971138</totalCount>
</body>
</response>

 

 원문 자체가 길기 때문에 중략하였지만, 이 xml의 tree구조를 보시면 <items>안에 다시 <item>이라는 태그를 두고 있습니다. 바로 이 <item>태그 안에 우리가 관심을 갖고 있는 항목값들이 존재하고 해당 항목값은 <data>태그로 붙여진 속성 아래에 존재합니다. 

 

 우리가 지난 포스팅에서 보았던 관세청의 무역통계xml에서는 <item>태그아래에 바로 항목태그가 나오고, 해당값이 해당 항목태그에 바로 배치되어 있었던 반면, 이번 xml은 다시 <data>와 <datatype>이라고 하는 2개의 속성항목을 분리해 두고, <data>태그 아래에 우리가 원하는 값을 넣었습니다. 지난번 보다 한단계 더 깊이 들어가는 것이지요.

 

 따라서, 지난번 parser를 그대로 사용할 수 없고, 한단계 더 아래로 내려가 값을 취하도록 약간의 수정을 가해야 합니다.

 굉장히 골치 아플것 같지만 사실 매우 간단합니다.

 

 지난번 코드는 아래와 같습니다.

for x in contents:
    year = x.find("year").text
    statCd = x.find("statcd").text
    hsCode = x.find("hscd").text

 즉, contents로 불러낸 값 안에서 year태그가 붙은 모든 항목을 찾아서 text형태로 year변수에 넣어달라고 하였습니다. 왜냐하면, year태그에 원하는 값이 그대로 들어 있기 때문이었습니다. 하지만, 이번에는 똑같은 경우에서 year태그 아래에 다시 data태그로 내려가야 우리가 추출할 값이 있습니다. 이럴 경우에는 data라는 태그명은 고정되어 있으므로, 단순히 .data만 더 붙여주면 해당 data태그안의 값이 추출됩니다.

 

 

 

 

 

 

 

 그렇게 수정을 가한 코드는 아래와 같습니다.

for x in contents:
    bhrcNatn = x.find("bhrcnatn").data.text
    hsCd = x.find("hscd").data.text
    mrktAcblt = x.find("mrktacblt").data.text
    mrktAttrc = x.find("mrktattrc").data.text
    mrktGrwth = x.find("mrktgrwth").data.text
    mrktCmppw = x.find("mrktcmppw").data.text


    rows.append({"국가명":bhrcNatn, "HS":hsCd, "시장접근성점수":mrktAcblt,
                 "시장매력도점수": mrktAttrc, "시장성장성점수":mrktGrwth, '시장경쟁력점수':mrktCmppw}) 

 

이제 rows 라는 빈 리스트안에 위 코드와 같이 항목명을 붙여서 series형태를 구성할 수 있도록 만들어 줍니다. 이후 이 rows를 DataFrame으로 변환합니다.

 

df = pd.DataFrame(rows,columns=["국가명", "HS", "시장접근성점수", "시장매력도점수", "시장성장성점수",'시장경쟁력점수'])

 

이로서 시각화를 위해 필요한 df라는 이름의 DataFrame이 확보되었습니다.

 

그럼 이어지는 3부에서 Plotly의 Guage Chart 작성 코드를 보시겠습니다.

 

 

(3부에 계속..)

 

 

 

NPU(엔피유) 관세사무소

대표관세사 고장주

Tel) 031-986-7190

E-mail) sales@npucus.com

[NPU관세사무소 프로모션 페이지] https://www.tradenpu.com/npu_cus/

[무역비지니스 인텔리전스 서비스 | TradeNPU] https://www.tradenpu.com

[파이썬 실용 예제. 무역과 공공데이터] https://pdatinmylife.tistory.com

Certified Customs Broker JangJu Goh

Executive Customs Broker @ NPU Customs Consulting

CEO @ JG TradePlus

sales@npucus.com

Trade Compliance / Customs clearance management at foreign company

Working experience of Air export freight forwarding

Data Visualization / Independent development of business automation application – copyright of JGPO_Manager, JG Data Center, AutoCC and etc.

B2B consignment & direct export/import, B2C Overseas Buying Office consulting

Alibaba.com B2B trade / taobao B2C trade / Amazon.com global selling etc. Online trade regulation consulting.

Import license / Quarantine

English communication available

[TradeNPU for partnership proposal - JGTP] https://www.tradenpu.com/jgtp/

반응형