네이버 API

Jungmin·2022년 10월 27일
1

데이터 분석

목록 보기
15/24

06. NAVER API

1. 네이버 API 사용 등록

  • 네이버 개발자센터
  • https://developers.naver.com/main/
  • APPLICATION
    • 어플리케이션 등록
    • 어플리케이션 이름 DS_STUDY
    • 사용 APR
      -검색
      -데이터랩 (검색어트렌드)
      -데이터랩 (쇼핑인사이트)
    • 환경 추가
      -WEB 설정
      -http://localhost
  • 순서

2. 네이버 검색 API 사용하기

  • 개발 가이드

  • urllib : http 프로토콜에 따라 서버의 요청/응답을 처리하기 위한 모듈

  • urilib.request: 클라이언트의 요처을 처리하는 모듈

  • urllib.parse: url 주소에 대한 분석

# 네이버 검색 API 예제 - 블로그 검색
import os
import sys
import urllib.request

client_id = "9zz06Al_1a9HLrK8ENzN"
client_secret = "*********"

encText = urllib.parse.quote("파이썬")
url = "https://openapi.naver.com/v1/search/blog?query=" + encText # JSON 결과
# url = "https://openapi.naver.com/v1/search/blog.xml?query=" + encText # XML 결과
request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)
response = urllib.request.urlopen(request)
rescode = response.getcode()

if(rescode==200):
    response_body = response.read()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)
{
	"lastBuildDate":"Thu, 27 Oct 2022 16:24:01 +0900",
	"total":361584,
	"start":1,
	"display":10,
	"items":[
		{
			"title":"<b>파이썬<\/b> 강좌 효율적인 프로그램 응용과정",
			"link":"https:\/\/blog.naver.com\/redsdains\/222880206857",
			"description":"저는 본래 비전공자였고, 대학 시절 공대로 편입한 케이스라 졸업 후 관련된 직종에서 근무하고자 C언어, 자바, <b>파이썬<\/b> 등 다양한 언어를 공부했었어요. 그 과정에서 메인으로 학습했던 분야가 바로 <b>파이썬<\/b>이었... ",
			"bloggername":"재밌는 블로그",
			"bloggerlink":"blog.naver.com\/redsdains",
			"postdate":"20220921"
		},
		{
			"title":"<b>파이썬<\/b> 자격증 취득을 원한다면",
			"link":"https:\/\/blog.naver.com\/tigger74\/222870354846",
			"description":"<b>파이썬<\/b>은 C언어에 비해 전통은 짧은 편이지만, 요즘 아주 많은 인기를 끌고 있는 프로그래밍... 그래서 전문적인 교육을 받으면서 스펙을 쌓기 위해 <b>파이썬<\/b> 자격증까지 알아보고, 공부를 시작하게 됐습니다.... ",
			"bloggername":"티거의 DIY세상",
			"bloggerlink":"blog.naver.com\/tigger74",
			"postdate":"20220908"
		},
		{
			"title":"<b>파이썬<\/b>학원 초보자를 위한 교육과정",
			"link":"https:\/\/blog.naver.com\/kkpa1002\/222807750795",
			"description":"친구에게 여러 가지 질문을 한 끝에 <b>파이썬<\/b>학원을 저도 다녀봐야겠다는 확신을 얻을 수 있었습니다.... 그래서 <b>파이썬<\/b>학원을 검색하기 시작했습니다. 어떤 곳이 좋은지 몰랐기에 친구에게 물어봤는데요. 제가... ",
			"bloggername":"최신 트랜드와 지식창고",
			"bloggerlink":"blog.naver.com\/kkpa1002",
			"postdate":"20220711"
		},....

	]
}
response, response.getcode(), response.code, response.status
(<http.client.HTTPResponse at 0x1edb45b43d0>, 200, 200, 200)
# 글자로 읽을 경우 decode 과정이 필요, utf-8
print(response_body.decode("utf-8"))
{
	"lastBuildDate":"Thu, 27 Oct 2022 16:24:01 +0900",
	"total":361584,
	"start":1,
	"display":10,
	"items":[
		{
			"title":"<b>파이썬<\/b> 강좌 효율적인 프로그램 응용과정",
			"link":"https:\/\/blog.naver.com\/redsdains\/222880206857",
			"description":"저는 본래 비전공자였고, 대학 시절 공대로 편입한 케이스라 졸업 후 관련된 직종에서 근무하고자 C언어, 자바, <b>파이썬<\/b> 등 다양한 언어를 공부했었어요. 그 과정에서 메인으로 학습했던 분야가 바로 <b>파이썬<\/b>이었... ",
			"bloggername":"재밌는 블로그",
			"bloggerlink":"blog.naver.com\/redsdains",
			"postdate":"20220921"
		},
		{
			"title":"<b>파이썬<\/b> 자격증 취득을 원한다면",
			"link":"https:\/\/blog.naver.com\/tigger74\/222870354846",
			"description":"<b>파이썬<\/b>은 C언어에 비해 전통은 짧은 편이지만, 요즘 아주 많은 인기를 끌고 있는 프로그래밍... 그래서 전문적인 교육을 받으면서 스펙을 쌓기 위해 <b>파이썬<\/b> 자격증까지 알아보고, 공부를 시작하게 됐습니다.... ",
			"bloggername":"티거의 DIY세상",
			"bloggerlink":"blog.naver.com\/tigger74",
			"postdate":"20220908"
		},...

	]
}
## 검색 : 책
import os
import sys
import urllib.request

client_id = "9zz06Al_1a9HLrK8ENzN"
client_secret = "bvmUlSfXQA"

encText = urllib.parse.quote("파이썬")
url = "https://openapi.naver.com/v1/search/book?query=" + encText # JSON 결과
# url = "https://openapi.naver.com/v1/search/blog.xml?query=" + encText # XML 결과
request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)
response = urllib.request.urlopen(request)
rescode = response.getcode()

if(rescode==200):
    response_body = response.read()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)
{
	"lastBuildDate":"Thu, 27 Oct 2022 15:50:03 +0900",
	"total":791,
	"start":1,
	"display":10,
	"items":[
		{
			"title":"혼자 공부하는 파이썬 (1:1 과외하듯 배우는 프로그래밍 자습서)",
			"link":"https:\/\/search.shopping.naver.com\/book\/catalog\/32507605957",
			"image":"https:\/\/shopping-phinf.pstatic.net\/main_3250760\/32507605957.20221019133018.jpg",
			"author":"윤인성",
			"discount":"18810",
			"publisher":"한빛미디어",
			"pubdate":"20220601",
			"isbn":"9791162245651",
			"description":"『혼자 공부하는 파이썬』이 더욱 흥미있고 알찬 내용으로 개정되었습니다. 프로그래밍이 정말 처음인 입문자도 따라갈 수 있는 친절한 설명과 단계별 학습은 그대로! 혼자 공부하더라도 체계적으로 계획을 세워 학습할 수 있도록 ‘혼공 계획표’를 새롭게 추가했습니다. 또한 입문자가 자주 물어보는 질문과 오류 해결 방법을 적재적소에 배치하여 예상치 못한 문제에 부딪혀도 좌절하지 않고 끝까지 완독할 수 있도록 도와줍니다. 단순한 문법 암기와 코딩 따라하기에 지쳤다면, ..."
		},
		{
			"title":"파이썬과 40개의 작품들 (자동화, 크롤링, 이미지처리, 데이터분석, 웹페이지, GUI 프로그램, 게임)",
			"link":"https:\/\/search.shopping.naver.com\/book\/catalog\/32472041705",
			"image":"https:\/\/shopping-phinf.pstatic.net\/main_3247204\/32472041705.20221019105332.jpg",
			"author":"장문철",
			"discount":"16080",
			"publisher":"앤써북",
			"pubdate":"20220228",
			"isbn":"9791185553931",
			"description":"이 책은 내 업무와 생활에 바로 적용할 수 있는 40개의 프로그램을 직접 코딩해서 만들어보고, 동시에 파이썬을 자연스럽게 이해할 수 있게 구성하였다!\n\n파이썬 기초 문법 떼고 자동화, 크롤링, 이미지처리, 데이터분석, 웹페이지, GUI 프로그램, 게임, 인공지능 관련 40개 프로그램 직접 파이썬 코딩하며 만들어 본다.  \n\n이 책은 파이썬 기초 문법을 익힌 후 총 40개의 주제별 프로그램을 직접 코딩하며 만들어볼 수 있도록 구성하였다."
		},...

	]
}
## 검색 : 영화(movie)
import os
import sys
import urllib.request

client_id = "9zz06Al_1a9HLrK8ENzN"
client_secret = "bvmUlSfXQA"

encText = urllib.parse.quote("파이썬")
url = "https://openapi.naver.com/v1/search/movie?query=" + encText # JSON 결과
# url = "https://openapi.naver.com/v1/search/blog.xml?query=" + encText # XML 결과
request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)
response = urllib.request.urlopen(request)
rescode = response.getcode()

if(rescode==200):
    response_body = response.read()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)
{
	"lastBuildDate":"Thu, 27 Oct 2022 15:50:04 +0900",
	"total":1,
	"start":1,
	"display":1,
	"items":[
		{
			"title":"<b>파이썬<\/b> 앤 가드",
			"link":"https:\/\/movie.naver.com\/movie\/bi\/mi\/basic.nhn?code=152070",
			"image":"https:\/\/ssl.pstatic.net\/imgmovie\/mdi\/mit110\/1520\/152070_P01_145336.jpg",
			"subtitle":"PYTHON AND GUARD",
			"pubDate":"2015",
			"director":"안톤 디아코프|",
			"actor":"",
			"userRating":"0.00"
		}
	]
}
## 검색 : 카페 (cafearticle)
import os
import sys
import urllib.request

client_id = "9zz06Al_1a9HLrK8ENzN"
client_secret = "bvmUlSfXQA"

encText = urllib.parse.quote("파이썬")
url = "https://openapi.naver.com/v1/search/cafearticle?query=" + encText # JSON 결과
# url = "https://openapi.naver.com/v1/search/blog.xml?query=" + encText # XML 결과
request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)
response = urllib.request.urlopen(request)
rescode = response.getcode()

if(rescode==200):
    response_body = response.read()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)
{
	"lastBuildDate":"Thu, 27 Oct 2022 16:24:12 +0900",
	"total":149133,
	"start":1,
	"display":10,
	"items":[
		{
			"title":"<b>파이썬<\/b> 수업하시는 쌤께 여쭈어요",
			"link":"http:\/\/cafe.naver.com\/forasteacher\/180616",
			"description":"같구요 <b>파이썬<\/b> 시작할건데.... 초5이고 시영재 다니고 흡수력 상위의 학생입니다 수학 중3 수준 함수 알고리즘 이해 우수하구요 그기다 영어도 고등수준ㅋ <b>파이썬<\/b>도 아주 잘할거라 짐작됩니다. 이런 아이 <b>파이썬<\/b> 교재... ",
			"cafename":"방세아.방과후.돌봄.공부방.유치원",
			"cafeurl":"https:\/\/cafe.naver.com\/forasteacher"
		},...
	]
}
## 검색 : 쇼핑 (shop)
import os
import sys
import urllib.request

client_id = "9zz06Al_1a9HLrK8ENzN"
client_secret = "bvmUlSfXQA"

encText = urllib.parse.quote("파이썬")
url = "https://openapi.naver.com/v1/search/shop?query=" + encText # JSON 결과
# url = "https://openapi.naver.com/v1/search/blog.xml?query=" + encText # XML 결과
request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)
response = urllib.request.urlopen(request)
rescode = response.getcode()

if(rescode==200):
    response_body = response.read()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)
{
	"lastBuildDate":"Thu, 27 Oct 2022 16:24:13 +0900",
	"total":187329,
	"start":1,
	"display":10,
	"items":[
		{
			"title":"방송에서만 10만원 잘모이 리얼 <b>파이톤<\/b> 엘레나 플랩백",
			"link":"https:\/\/search.shopping.naver.com\/gate.nhn?id=34672541979",
			"image":"https:\/\/shopping-phinf.pstatic.net\/main_3467254\/34672541979.20220914131221.jpg",
			"lprice":"52130",
			"hprice":"",
			"mallName":"네이버",
			"productId":"34672541979",
			"productType":"1",
			"brand":"잘모이",
			"maker":"",
			"category1":"패션잡화",
			"category2":"여성가방",
			"category3":"숄더백",
			"category4":""
		},...
	]
}
## 검색 : 백과사전(encyc)
import os
import sys
import urllib.request

client_id = "9zz06Al_1a9HLrK8ENzN"
client_secret = "bvmUlSfXQA"

encText = urllib.parse.quote("파이썬")
url = "https://openapi.naver.com/v1/search/encyc?query=" + encText # JSON 결과
# url = "https://openapi.naver.com/v1/search/blog.xml?query=" + encText # XML 결과
request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)
response = urllib.request.urlopen(request)
rescode = response.getcode()

if(rescode==200):
    response_body = response.read()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)
{
	"lastBuildDate":"Thu, 27 Oct 2022 16:24:15 +0900",
	"total":491,
	"start":1,
	"display":10,
	"items":[
		{
			"title":"<b>파이썬<\/b>",
			"link":"https:\/\/terms.naver.com\/entry.naver?docId=3580815&cid=59088&categoryId=59096",
			"description":"‘<b>파이썬<\/b>’이다. 간결한 문법으로 입문자가 이해하기 쉽고, 다양한 분야에 활용할 수 있기 때문이다. 이 외에도 <b>파이썬<\/b>은 머신러닝, 그래픽, 웹 개발 등 여러 업계에서 선호하는 언어로 꾸준히... ",
			"thumbnail":"http:\/\/openapi-dbscthumb.phinf.naver.net\/4749_000_1\/20170118193349632_0CHSSS5Y6.png\/01_16.png?type=m160_160"
		},...

	]
}

3. 상품 검색

  • '몰스킨'
import os
import sys
import urllib.request

client_id = "9zz06Al_1a9HLrK8ENzN"
client_secret = "bvmUlSfXQA"

encText = urllib.parse.quote("몰스킨")
url = "https://openapi.naver.com/v1/search/shop?query=" + encText # JSON 결과
# url = "https://openapi.naver.com/v1/search/blog.xml?query=" + encText # XML 결과
request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)
response = urllib.request.urlopen(request)
rescode = response.getcode()

if(rescode==200):
    response_body = response.read()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)
{
	"lastBuildDate":"Thu, 27 Oct 2022 16:24:18 +0900",
	"total":34637,
	"start":1,
	"display":10,
	"items":[
		{
			"title":"다니엘크레뮤 22FW 헤비 코튼 <b>몰스킨<\/b> 팬츠 3종",
			"link":"https:\/\/search.shopping.naver.com\/gate.nhn?id=35297774696",
			"image":"https:\/\/shopping-phinf.pstatic.net\/main_3529777\/35297774696.20221018121155.jpg",
			"lprice":"118670",
			"hprice":"",
			"mallName":"네이버",
			"productId":"35297774696",
			"productType":"1",
			"brand":"다니엘크레뮤",
			"maker":"",
			"category1":"패션의류",
			"category2":"남성의류",
			"category3":"바지",
			"category4":""
		},
		{
			"title":"<b>몰스킨<\/b> 2023 다이어리 어린왕자 한정판 위클리 포켓",
			"link":"https:\/\/search.shopping.naver.com\/gate.nhn?id=82635708485",
			"image":"https:\/\/shopping-phinf.pstatic.net\/main_8263570\/82635708485.jpg",
			"lprice":"34000",
			"hprice":"",
			"mallName":"베스트펜",
			"productId":"82635708485",
			"productType":"2",
			"brand":"몰스킨",
			"maker":"몰스킨",
			"category1":"생활\/건강",
			"category2":"문구\/사무용품",
			"category3":"다이어리\/플래너",
			"category4":"다이어리"
		},...
	]
}

(1) gen_search_url() : url 페이지 생성

# api node : 쇼핑몰인지 카페인지 등 분류 

def gen_search_url(api_node, search_text, start_num, disp_num):
    base = 'https://openapi.naver.com/v1/search'
    node = '/' + api_node + ".json"
    param_query = "?query=" + urllib.parse.quote(search_text)
    param_start = "&start=" + str(start_num)
    param_disp = "&display=" + str(disp_num)
    
    return base + node + param_query + param_start + param_disp
gen_search_url("shop", "TEST", 10, 3)
'https://openapi.naver.com/v1/search/shop.json?query=TEST&start=10&display=3'

(2) get_result_onpage : 하나의 페이지에서 데이터를 받아오는 함수

import json
import datetime
import requests

def get_result_onpage(url):
    request = urllib.request.Request(url)
    request.add_header("X-Naver-Client-Id",client_id)
    request.add_header("X-Naver-Client-Secret",client_secret)
    response = urllib.request.urlopen(request)
    print("[%s] Url Request Success" % datetime.datetime.now())
    return json.loads(response.read().decode('utf-8'))
datetime.datetime.now()
datetime.datetime(2022, 10, 27, 16, 33, 57, 646550)
print(gen_search_url("shop", "몰스킨", 1, 5))
https://openapi.naver.com/v1/search/shop.json?query=%EB%AA%B0%EC%8A%A4%ED%82%A8&start=1&display=5
url = gen_search_url("shop", "몰스킨", 1, 5)
one_result = get_result_onpage(url)
one_result
[2022-10-27 16:34:00.227484] Url Request Success





{'lastBuildDate': 'Thu, 27 Oct 2022 16:34:01 +0900',
 'total': 34631,
 'start': 1,
 'display': 5,
 'items': [{'title': '다니엘크레뮤 22FW 헤비 코튼 <b>몰스킨</b> 팬츠 3종',
   'link': 'https://search.shopping.naver.com/gate.nhn?id=35297774696',
   'image': 'https://shopping-phinf.pstatic.net/main_3529777/35297774696.20221018121155.jpg',
   'lprice': '118670',
   'hprice': '',
   'mallName': '네이버',
   'productId': '35297774696',
   'productType': '1',
   'brand': '다니엘크레뮤',
   'maker': '',
   'category1': '패션의류',
   'category2': '남성의류',
   'category3': '바지',
   'category4': ''},..]}
one_result["items"][0]["title"]
'다니엘크레뮤 22FW 헤비 코튼 <b>몰스킨</b> 팬츠 3종'
one_result["items"][0]["lprice"]
'118670'

(3) get_fields() : 데이터프레임으로 만드는 기능

one_result['items'][0]
{'title': '다니엘크레뮤 22FW 헤비 코튼 <b>몰스킨</b> 팬츠 3종',
 'link': 'https://search.shopping.naver.com/gate.nhn?id=35297774696',
 'image': 'https://shopping-phinf.pstatic.net/main_3529777/35297774696.20221018121155.jpg',
 'lprice': '118670',
 'hprice': '',
 'mallName': '네이버',
 'productId': '35297774696',
 'productType': '1',
 'brand': '다니엘크레뮤',
 'maker': '',
 'category1': '패션의류',
 'category2': '남성의류',
 'category3': '바지',
 'category4': ''}
import pandas as pd

def get_fields(json_data):
    title = [each["title"] for each in json_data["items"]]
    link = [each["link"] for each in json_data["items"]]
    lprice = [each["lprice"] for each in json_data["items"]]
    mall_name = [each["mallName"] for each in json_data["items"]]
    
    result_pd = pd.DataFrame({
        "title" : title,
        "link" : link,
        "lprice" :  lprice,
        "mall" : mall_name,
    }, columns=["title","lprice", "link", "mall"])
    return result_pd
get_fields(one_result)
title lprice link mall
0 다니엘크레뮤 22FW 헤비 코튼 <b>몰스킨</b> 팬츠 3종 118670 https://search.shopping.naver.com/gate.nhn?id=... 네이버
1 <b>몰스킨</b> 2023 다이어리 어린왕자 한정판 위클리 포켓 34000 https://search.shopping.naver.com/gate.nhn?id=... 베스트펜
2 <b>몰스킨</b> 2023 데일리 다이어리 P 상품선택 30000 https://search.shopping.naver.com/gate.nhn?id=... 네이버
3 <b>몰스킨</b> 2023 다이어리 클래식 가죽 각인 하드커버 데일리 라지 39000 https://search.shopping.naver.com/gate.nhn?id=... 베스트펜
4 <b>몰스킨</b> 클래식 노트 소프트커버 도트 포켓 머틀그린 20540 https://search.shopping.naver.com/gate.nhn?id=... 네이버

(4) delete_tag()

  • title에 포함된 , 제거
def delete_tag(input_str):
    input_str = input_str.replace("<b>", "")
    input_str = input_str.replace("</b>", "")
    return input_str
def get_fields(json_data):
    title = [delete_tag(each["title"]) for each in json_data["items"]]
    link = [each["link"] for each in json_data["items"]]
    lprice = [each["lprice"] for each in json_data["items"]]
    mall_name = [each["mallName"] for each in json_data["items"]]
    
    result_pd = pd.DataFrame({
        "title" : title,
        "link" : link,
        "lprice" :  lprice,
        "mall" : mall_name,
    }, columns=["title","lprice", "link", "mall"])
    return result_pd
get_fields(one_result)
title lprice link mall
0 다니엘크레뮤 22FW 헤비 코튼 몰스킨 팬츠 3종 118670 https://search.shopping.naver.com/gate.nhn?id=... 네이버
1 몰스킨 2023 다이어리 어린왕자 한정판 위클리 포켓 34000 https://search.shopping.naver.com/gate.nhn?id=... 베스트펜
2 몰스킨 2023 데일리 다이어리 P 상품선택 30000 https://search.shopping.naver.com/gate.nhn?id=... 네이버
3 몰스킨 2023 다이어리 클래식 가죽 각인 하드커버 데일리 라지 39000 https://search.shopping.naver.com/gate.nhn?id=... 베스트펜
4 몰스킨 클래식 노트 소프트커버 도트 포켓 머틀그린 20540 https://search.shopping.naver.com/gate.nhn?id=... 네이버
url = gen_search_url("shop", "몰스킨", 1, 5) # 1~5페이지 까지
json_result = get_result_onpage(url)
pd_result = get_fields(json_result)
[2022-10-27 16:44:12.750650] Url Request Success
pd_result
title lprice link mall
0 다니엘크레뮤 22FW 헤비 코튼 몰스킨 팬츠 3종 118670 https://search.shopping.naver.com/gate.nhn?id=... 네이버
1 몰스킨 2023 다이어리 어린왕자 한정판 위클리 포켓 34000 https://search.shopping.naver.com/gate.nhn?id=... 베스트펜
2 몰스킨 2023 데일리 다이어리 P 상품선택 30000 https://search.shopping.naver.com/gate.nhn?id=... 네이버
3 몰스킨 2023 다이어리 클래식 가죽 각인 하드커버 데일리 라지 39000 https://search.shopping.naver.com/gate.nhn?id=... 베스트펜
4 몰스킨 클래식 노트 소프트커버 도트 포켓 머틀그린 20540 https://search.shopping.naver.com/gate.nhn?id=... 네이버

(5) actMain() : 데이터 모으는 함수

for n in range(1, 1000, 100): # 1~1000까지 100단위로 
    print(n)
1
101
201
301
401
501
601
701
801
901
result_mol = []
for n in range(1, 1000, 100): 
    url = gen_search_url("shop", "몰스킨", n, 100)
    json_result = get_result_onpage(url)
    pd_result = get_fields(json_result)
    
    result_mol.append(pd_result)
result_mol = pd.concat(result_mol)
[2022-10-27 16:47:09.223466] Url Request Success
[2022-10-27 16:47:09.606888] Url Request Success
[2022-10-27 16:47:10.016561] Url Request Success
[2022-10-27 16:47:10.426644] Url Request Success
[2022-10-27 16:47:10.837477] Url Request Success
[2022-10-27 16:47:11.302620] Url Request Success
[2022-10-27 16:47:11.789146] Url Request Success
[2022-10-27 16:47:12.192799] Url Request Success
[2022-10-27 16:47:12.582407] Url Request Success
[2022-10-27 16:47:12.982425] Url Request Success
result_mol.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1000 entries, 0 to 99
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   title   1000 non-null   object
 1   lprice  1000 non-null   object
 2   link    1000 non-null   object
 3   mall    1000 non-null   object
dtypes: object(4)
memory usage: 39.1+ KB
result_mol.reset_index(drop=True, inplace=True)
result_mol.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000 entries, 0 to 999
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   title   1000 non-null   object
 1   lprice  1000 non-null   object
 2   link    1000 non-null   object
 3   mall    1000 non-null   object
dtypes: object(4)
memory usage: 31.4+ KB
result_mol["lprice"] = result_mol["lprice"].astype("float")
result_mol.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000 entries, 0 to 999
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   title   1000 non-null   object 
 1   lprice  1000 non-null   float64
 2   link    1000 non-null   object 
 3   mall    1000 non-null   object 
dtypes: float64(1), object(3)
memory usage: 31.4+ KB

(5) to_excel() : 엑셀로 내보내기

# !pip install xlsxwriter
writer = pd.ExcelWriter("../data/06_moleskin_diary_in_naver_shop.xlsx", engine="xlsxwriter")
result_mol.to_excel(writer, sheet_name="Sheet1")

workbook = writer.book
worksheet = writer.sheets["Sheet1"]
worksheet.set_column("A:A",4 )
worksheet.set_column("B:B",60 )
worksheet.set_column("C:C",10 )
worksheet.set_column("D:D",10 )
worksheet.set_column("E:E",10 )
worksheet.set_column("F:F",10 )

worksheet.conditional_format("C2:C1001", {"type" : "3_color_scale"})
writer.save()

(6) 시각화

import matplotlib.pyplot as plt
import seaborn as sns
import platform
%matplotlib inline 

from matplotlib import font_manager, rc

path = "C:/Windows/Fonts/malgun.ttf"
if platform.system() == "Darwin":
    rc("font", family="Arial Unicode MS")
elif platform.system() == "Windows":
    font_name = font_manager.FontProperties(fname=path).get_name()
    rc("font", family=font_name)
else:
    print("Unknown system. sorry")
    
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(15,6))
sns.countplot(
    result_mol["mall"],
    data = result_mol,
    palette="RdYlGn",
    order=result_mol["mall"].value_counts().index
)
plt.xticks(rotation=90)
plt.show()
C:\Users\User\anaconda3\lib\site-packages\seaborn\_decorators.py:36: FutureWarning: Pass the following variable as a keyword arg: x. From version 0.12, the only valid positional argument will be `data`, and passing other arguments without an explicit keyword will result in an error or misinterpretation.
  warnings.warn(

profile
데이터분석 스터디노트🧐✍️

0개의 댓글