던파 API 데이터 전처리

JoonQpa·2022년 5월 1일
0

개인프로젝트

목록 보기
5/6
post-thumbnail

api 서버에서 데이터 추출부터 분석을 하기위해 전처리 하는 과정에서 겪는 사소한 장애물들과 해결책을 기록해보려 한다.

pandas로 csv파일 인코딩하기

import pandas

df = pd.read_csv('item_list1.csv', encoding='cp949') # csv파일 인코딩
df.head()


한글 텍스트 URL로 인코딩하기

urllib 라이브러리의 parse.quote()를 사용하면 된다.

import urllib
from urllib import parse

parse.quote()

내가 사용한 방법, 뭔가 이상한 걸 알지만 아직은 왜 아래의 반복문을 썼을때 값이 이상하게 들어가고, 어떻게 해야 깔끔하게 넣을 수 있는 지는 모르겠다. 그치만 어쨌튼 원했던 결과를 얻을 수 있는 코드니까 기록




api 요청 주소에 원하는 값 넣기

내가 원하는 값의 요청주소를 한 곳에 모으기 위해서, 단순하게 텍스트 사이에 +itemUrl+를 집어넣어주면 된다.


api = 'https://api.neople.co.kr/df/items?itemName='+itemUrl+'&wordType=<wordType>&hashtag='+hashtagUrl+',<hashtag>&q=minLevel:<minLevel>,maxLevel:<maxLevel>,rarity:<rarity>&limit=<limit>&apikey=lpxl9qTO4rIgZIVSczjFyChj8rLaoGR2'
df_item['api']= api
df_item.head()


api 요청 값 리스트에 넣는 방법


api 요청 값을 텍스트로 변환해준뒤 .append를 이용하여 미리 만들어 놓은 리스트에 다 넣어 주면 된다.

total = []
for i in api:
    k = requests.get(i).text
    total.append(k)
    print(total)



에러 값 제거하기

조금은 단순하게 error가 아닌 rows로 시작되는 데이터만 가져오기 위해서 {"rows"로 시작하는 데이터를 3번째 글자가 r로 시작하는 데이터를 가져오라는 방식으로 에러 값을 제거했다.


# rows로 시작하는 값 가져오기 (에러제거)

itemId = []
for i in total:
    if i[2] == 'r':
       itemId.append(i)
print(itemId)



str값을 json로 변환하는 방법

ast라이브러리를 이용해서 str를 json값으로 변환할 수 있다. 에러 값을 제거하는 방식과 비슷한 방식으로 모든 데이터를 이 방식으로 할 수는 없겠지만, api데이터를 가져올때 유용하게 쓰였던 함수.



리스트 안의 딕셔너리 값을 추출하는 방법

리스트 안에 복잡하게 이중 으로 딕셔너리 값이 들어가 있을때 추출할 수 있는 방법.
개인적으로 내가 이 코드를 직접 만들어서 원하는 결과 값을 도출했다는 것에 엄청나게 뿌듯함을 느꼈던 순간이였다.


데이터 원본 생김새

리스트 안에 딕셔너리 안에 리스트... 맞나?


크....이걸 내 손으로 해내다니..!!!

내가 성장하고 있다는 걸 확실하게 느낀 뿌듯한 주말이였다.


profile
Intuition factory: from noob to pro

0개의 댓글