728x90
최근 포스팅에서 reddit의 데이터 수집을 알아보았는데요~!
이 내용을 바탕으로 이번 2024 대선에 대하여
레딧사용자는 어떻게 생각하는지 알아보겠습니다~!~
1. 코드!
- 데이터가 필요하곘지요!?
지난 코드들을 통하여 header의 인증정보는 준비가되었다는 가정하에!!
아래와 같이 최근의 wallstreetbets 개시물을 가져옵니다!!
import pandas as pd
import os
import numpy as np
import openai
import json
API_KEY = os.getenv('OPENAI_API_KEY')
client = openai.OpenAI(api_key = API_KEY)
content_type = 'new'
# new면 최신!!
# hot 이면 인기 게시물(많은 사람들이 본)
# top이면 최상위 게시물(특정 기간 동안 가장 많은 업보트를 받은 게시물 목록)
url = f'https://oauth.reddit.com/r/wallstreetbets/{content_type}'
df_final = pd.DataFrame()
after_unit = ''
for i in range(3):
# GET 요청 보내기
# 최신 글을 10개 가져오기
params = {'limit': 30} # 원하는 글의 수를 지정
# 최신 글을 10개 가져오기
params = {'limit': 30
,'after' : after_unit} # 원하는 글의 수를 지정
response = requests.get(url, headers=headers, params=params)
best_json = response.json()
best_json
after_unit = best_json['data']['after']
df_ = pd.DataFrame(best_json['data']['children'])
df_final = pd.concat([df_final,df_],axis=0)
2.GPT와함께! 데이터 정제!!
- GPT로 이미지도 분석하고, 내용을 정리해서! 우리가 필요한 형태로 만들어보아요!
title_l = []
content_l = []
imageurl_l = []
url_l = []
imgAnal_l = []
contentAnal_l = []
for idx, row in df_final.iterrows():
content_title = row['data']['title']
content = row['data']['selftext']
print(idx, content_title)
print("CONTENT : ", content)
url = 'https://www.reddit.com' + row['data']['permalink']
print(url)
thumb_nail = row['data']['thumbnail']
if 'preview' in row['data']:
img_url = row['data']['preview']['images'][0]['source']['url'].replace('&','&')
my_prompt = 'reddit 의 wallstreetbets에 나온 투자 관련 이미지야. 이 관점에서 이미지가 어떤 내용일지 해석해줘'
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": my_prompt},
{
"type": "image_url",
"image_url": {
"url": img_url,
},
},
],
}
],
max_tokens=300,
)
img_analy = response.choices[0].message.content
print(img_url)
print(img_analy)
else:
img_url = ''
img_analy = '이미지 없음'
# 메시지 설정
system_message = {
"role": "system",
"content": """
reddit 의 wallstreetbets에 나온 투자 관련글이야
제목 / 본문 / 이미지를 조합해서 해당 글이 어떤 내용인지 한국어로 요약해줘
결과물은 아래와 같은 json 양식으로 써줘.
미국 대통령선거 관련 내용도 있다면 포함해줘
{
"구분" : "투자정보 / 투자후기 등"
"내용요약" : "~~ 가 좋은 종목이다 / ~~를 투자해서 돈을 벌었다 등"
"재미요소" : "작성자가 큰 금액을 날린것을 희화화함 or 작성자가 언어유희 (주커버그를 zuker balls로 함)"
"관련종목" : "META (해당 종목의 티커 산출)"
"대선관련" : "Y 혹은 N "
"대선관련_당선자예측":"N일경우 공백, Y일경우 트럼프 or 해리스 or 중립"
}
"""
}
user_message = {
"role": "user",
"content": f"컨텐츠 제목 : {content_title} / 컨텐츠 본문 : {content} / 이미지 : {img_analy}"
}
# ChatCompletion 호출
response = client.chat.completions.create(
model="gpt-4o",
messages=[system_message, user_message],
temperature=0
)
# 응답 결과
res = response.choices[0].message.content
res_json = json.loads(response.choices[0].message.content.replace('```json','').replace('```',''))
res
print("******** 글 최종분석")
print(res_json)
print('-'*60)
title_l .append(content_title)
content_l .append(content)
imageurl_l .append(img_url)
url_l .append(url)
imgAnal_l .append(img_analy)
contentAnal_l .append(res_json)
df_ttl = pd.DataFrame()
df_ttl['title'] = title_l
df_ttl['content'] = content_l
df_ttl['imageurl'] = imageurl_l
df_ttl['url'] = url_l
df_ttl['imgAnal'] = imgAnal_l
df_ttl['contentAnal'] = pd.Series(contentAnal_l).apply(lambda x : json.dumps(x, ensure_ascii=False))
def convert_to_dict(value):
if value[:1]=='[':
if len(json.loads(value)) >=1:
if len(json.loads(value)[0])>= 1:
return json.loads(value)[0]
return json.loads(value)[0]
else:
return json.loads(value)
df_analy = pd.json_normalize(df_ttl['contentAnal'].apply(convert_to_dict) )
df_ttl = pd.concat([df_ttl, df_analy], axis=1) # pd.json_normalize(df_10['cashflow'].apply(convert_to_dict))],axis=1)
df_ttl
for c in ['title','content','imgAnal','contentAnal']:
df_ttl[c] = df_ttl[c].str.replace('\n',' ').replace('\t',' ').replace('^',' ')
df_ttl.to_csv('wallstreet_president2024.csv',sep='^',encoding='utf-16')
df_ttl
짜잔~~
그래서 나온 데이터는!!
간단하게 아래와 같습니다!!
raw데이터도 참부합니다!
3. 그래서!?!
- 그래서 결론!! 대통령은??
위의 글을을통해 파악해본다면
2024년 미국 대선에서!! 도널드 트럼프(DJT)가 대통령이 될 것이라는 예측이 더 많은 것으로 보입니다.
트럼프에 대한 긍정적인 언급이 여러 글에서 나타나고 있으며, 특히 경제 정책과 관련하여 트럼프의 당선 시 주식 시장과 USD의 강세를 기대하는 의견이 많습니다.
결국 코인.주식투자하는 사람들은 트럼프일까요!!!
최종 결과가 얼마 안남은지금 ㅎㅎ간단하게 데이터로 분석해보았습니다!^^
728x90
'데이터&AI > 데이터분석' 카테고리의 다른 글
Reddit 데이터 수집하기 using API (PYTHON) (2) | 2024.09.12 |
---|---|
Twitter(x)의 데이터를 분석해보기 - 2 (feat. python & MONEY!!) (1) | 2024.09.04 |
Twitter(x)의 데이터를 분석해보기 - 1 (feat. python) (1) | 2024.09.03 |
duckDB를 사용해보기 (feat. 가볍다, 근대 성능은 좋아!!? ) (0) | 2024.08.30 |
데이터 분석가를 위한 쉬운 docker : 편리한 notebook 환경 만들기!! (1) | 2024.06.06 |
댓글