학습 경험:
오늘도 파이썬으로 데이터를 조작하는 매혹적인 세계에 대해 알아봤습니다. 중학교 국어 교사로서 학생들에게 혁신적인 방법으로 다양한 주제를 가르치는 데 도움이 될 새로운 기술을 배우게 되어 기대가 큽니다.
저는 변수, 데이터 유형, 조건문과 같은 몇 가지 기본적인 Python 개념을 복습하는 것으로 시작했습니다. 그런 다음 list, dictionary, 문자열로 작업하는 방법을 배우기 시작했습니다. 이러한 데이터 구조는 Python에서 데이터를 조작하는 데 필수적인 요소로, 정보를 효율적으로 구성하고 처리할 수 있게 해줍니다.
배운 내용을 연습하기 위해 주식 시장을 예로 들었습니다. API를 사용하여 Alpha Vantage(주가 정보) 및 News API(뉴스 기사 정보)와 같은 웹사이트에서 실시간 금융 데이터를 수집하는 방법을 보여주는 튜토리얼을 따랐습니다. Python의 요청 라이브러리를 사용하여 이러한 API에 HTTP 요청을 전송하고 원하는 데이터를 JSON 형식으로 받을 수 있었습니다.
Code Snippet:
import requests
from newsapi import NewsApiClient
STOCK_NAME = "TSLA"
COMPANY_NAME = "Tesla Inc"
STOCK_ENDPOINT = "https://www.alphavantage.co/query"
STOCK_API_KEY = "XXXXXXXXXXXX"
NEWS_ENDPOINT = "https://newsapi.org/v2/everything"
NEWS_API_KEY = NewsApiClient(api_key="XXXXXXXXXXXXX")
stock_params = {
"function": "TIME_SERIES_DAILY",
"symbol" : STOCK_NAME,
"apikey": STOCK_API_KEY
}
def get_articles(company_name):
articles = NEWS_API_KEY.get_everything(q=company_name,
language='en')
newest_articles = list(articles['articles'][:3])
extracted_articles = [
{'title': article['title'], 'description': article['description']}
for article in newest_articles
]
return extracted_articles
url = STOCK_ENDPOINT
stock_response = requests.get(url, params=stock_params)
stock_data = stock_response.json()["Time Series (Daily)"]
closing_prices = [float(stock_data[day]['4. close']) for day in list(stock_data)[:2]]
difference = closing_prices[0] - closing_prices[1]
percentage = (difference / closing_prices[0]) * 100
if percentage > 1 or percentage < -1:
print(f"{COMPANY_NAME} 등락:{percentage}")
for article in get_articles(COMPANY_NAME):
print(f"제목:{article['title']}")
print(f"내용:{article['description']}")
print()
else:
pass
어려웠던 점:
- get_articles 함수 만들 때, extracted_articles 를 리스트컴프리헨션으로 구현하고 싶었는데, 머리가 잘 안돌아갔다.
- twilio API를 통해 문자 메시지를 보내고 싶은데, 뭐가 문제인지 계속 인증 오류가 뜬다. 서비스센터와 메일을 6번 주고 받았는데도 이제 콘솔에서도 에러가 뜬다.
HTTP Error Your request was:
POST /Accounts/AC3e6bffa166cbe03b1de4c006cb94c51e/Messages.jsonTwilio returned the following information:
Unable to create record: The number +8210XXXXXXXX is unverified. Trial accounts cannot send messages to unverified numbers; verify +8210XXXXXXXX at twilio.com/user/account/phone-numbers/verified, or purchase a Twilio number to send messages to unverified numbers
개인적 성찰:
웹 스크래핑의 개념이 특히 흥미로웠습니다. API를 통해 쉽게 접근할 수 없는 웹사이트에서 데이터를 수집할 수 있게 해줍니다. 이 기술은 학생들이 분석할 수 있도록 대화형 수업을 만들거나 실제 데이터를 수집하는 등 다양한 교육 환경에서 매우 유용할 수 있습니다.
저의 학습 경험과 국어 교사로서의 역할을 연결하면서 저는 일반적으로 파이썬과 코딩이 논리, 시퀀싱, 문제 해결과 같은 추상적인 개념을 가르칠 수 있는 훌륭한 기회를 제공한다는 것을 깨달았습니다. 이러한 기술은 프로그래밍뿐만 아니라 모든 과목을 이해하고 숙달하는 데 필수적입니다.
마무리 생각:
파이썬을 배우는 이 새로운 여정을 시작하면서, 저는 파이썬이 저에게 어떤 도움이 되는지 기대가 됩니다. 내일 저는 BeautifulSoup과 Matplotlib 같은 라이브러리를 사용하여 웹 스크래핑과 데이터 시각화의 세계로 더 깊이 들어갈 계획입니다. 파이썬 프로그래밍을 배우는 저의 경험과 도전을 공유하면서, 저의 독자들도 이 신나는 모험에 함께하기를 바랍니다
'국어교사의 파이썬 일기' 카테고리의 다른 글
중학교 국어 교사의 파이썬 일기: Telco Customer Churn 데이터셋 분석 (1) | 2024.01.15 |
---|---|
중학교 국어 교사의 파이썬 일기: 날짜 다루기- strftime의 활용과 HTTP 요청 (0) | 2024.01.14 |
중학교 국어 교사의 파이썬 일기: 주식 분석을 위한 list와 for 문 탐색하기 (1) | 2024.01.14 |