{'offer id': '12345'}
# 필요한 라이브러리 가져오기
import pandas as pd
import json
# CSV 파일에서 데이터를 읽어와 Pandas DataFrame에 저장
df = pd.read_csv('/Users/hj/Desktop/python1/sql_project/portfolio.csv')
판다스와 json을 import 해주고,
가공할 데이터셋 불러온다.
Json에서 문자열은 이중따옴표로 둘러싸여 있어야 하지만, 원본 데이터는 홀따옴표로 묶여있는 걸 확인할 수 있다.
홀따옴표(') -> 이중따옴표(")
변경해야 함
replace
함수 사용
{'offer id': '12345'}
{"offer id": "12345"}
json.loads(x)
: 수정된 문자열 'x'를 JSON 객체로 로딩한다. 그리고 파이썬 딕셔너리 형태로 변환한다.
# JSON 문자열에서 정보를 추출하는 함수 정의
def get_offer_value(x):
x = x.replace('\'','"')
return json.loads(x)['offer id']
def get_offer_com(x):
x = x.replace('\'','"')
return json.loads(x)['offer_id']
def get_offer_com_reward(x):
x = x.replace('\'','"')
return json.loads(x)['reward']
def get_trans_value(x):
return x.replace('{\'amount\': ','').replace('}','')
get_trans_value
에서는 'amount' 값을 추출하기 위함
# 'event' 열 값에 따라 다른 전처리 적용
d1 = df[df['event'] == 'offer received']['value'].apply(get_offer_value)
d2 = df[df['event'] == 'offer viewed']['value'].apply(get_offer_value)
d3 = df[df['event'] == 'offer completed']['value'].apply(get_offer_com)
df[df['event'] == 'offer received']
['value']
.apply(get_offer_value)
-> 'event' = 'offer received'인 행들에 대해 'value' 열에서 추출한 'offer id' 값을 포함하는 판다스 시리즈 d1
생성
d1을 실행하면 제 데이터프레임에서 'event'가 'offer received'인 행들의 'value' 열에서 추출한 'offer id' 값들이 출력됨
# DataFrame에 처리된 데이터를 기반으로 새로운 열 생성
df['offer_id'] = pd.concat([d1, d2, d3])
df['reward'] = df[df['event'] == 'offer completed']['value'].apply(get_offer_com_reward)
df['amount'] = df[df['event'] == 'transaction']['value'].apply(get_trans_value)
df['offer_id'] = pd.concat([d1, d2, d3])
df['reward'] = df[df['event'] == 'offer completed']['value'].apply(get_offer_com_reward)
# 수정된 DataFrame을 새로운 CSV 파일로 저장
df.to_csv('./transcript_prep.csv', index=False)
현재 작업 디렉토리에 'transcript_prep.csv' 라는 파일이 생성됨
코드 자체는 파일을 다운로드 하지 않음.