Allen's 데이터 맛집
금융 데이터를 수집하고 분석하는 프로젝트: DART 데이터로 통찰을 얻다 📊 본문
Mini Project/DART 금융 데이터 수집 및 분석
금융 데이터를 수집하고 분석하는 프로젝트: DART 데이터로 통찰을 얻다 📊
Allen93 2024. 12. 18. 12:53이번 포스팅에서는 제가 진행한 DART Financial Statement Data Collection and Analysis 프로젝트에 대해 소개하겠습니다.
이 프로젝트는 대한민국 금융감독원의 전자공시시스템인 DART(전자공시)에서 기업의 재무 데이터를 수집하고, 이를 정리 및 분석하여 인사이트를 도출하는 작업을 목표로 했습니다.
프로젝트 소개
목적
기업의 재무 데이터를 빠르고 정확하게 수집하여, 투자나 경영 관련 의사결정을 지원할 수 있는 데이터를 생성하는 것이 목표였습니다.
DART API를 활용하여 데이터 수집 과정을 자동화하고, 이를 분석 가능한 형태로 정리하여 시각화하는 데 중점을 두었습니다.
활용 가능성
- 투자 분석
- 기업의 재무 데이터를 활용하여 성장 가능성과 리스크 평가.
- 기업 평가
- 매출, 영업이익, 자산 등 주요 지표를 분석하여 기업의 경영 상태를 파악.
- 데이터 기반 의사결정
- 분석 결과를 활용해 효율적인 전략 수립 가능.
프로젝트 주요 단계
1️⃣ DART API를 통한 데이터 수집
DART API는 대한민국 금융감독원에서 제공하는 데이터 서비스로, 기업의 재무제표, 감사보고서 등을 프로그래밍적으로 접근할 수 있습니다.
- 구현 내용:
- 기업코드와 요청 매개변수를 기반으로 공시 데이터를 수집.
- JSON 형식의 응답을 받아 데이터를 정리.
- Python 코드 예제
import requests
# DART API 키와 요청 URL
API_KEY = "your_api_key"
url = "https://opendart.fss.or.kr/api/fnlttSinglAcnt.json"
def fetch_financial_data(corp_code, year, report_code):
params = {
"crtfc_key": API_KEY,
"corp_code": corp_code,
"bsns_year": year,
"reprt_code": report_code
}
response = requests.get(url, params=params)
if response.status_code == 200:
return response.json()
else:
print(f"Error: {response.status_code}")
return None
# 데이터 호출
data = fetch_financial_data("00126380", "2022", "11013") # 예: 삼성전자
2️⃣ 데이터 전처리
수집된 원시 데이터는 분석에 적합하도록 정리와 변환 과정을 거칩니다.
- 주요 작업:
- 불필요한 열과 중복 데이터 제거.
- 주요 재무 지표(매출액, 영업이익, 순이익 등) 추출.
- 결측치 처리 및 데이터 타입 변환.
- Pandas 활용 데이터 정리
import pandas as pd
# JSON 데이터에서 필요한 열만 추출
df = pd.json_normalize(data['list'])
df = df[['corp_name', 'bsns_year', 'revenue', 'operating_income', 'net_income']]
# 결측치 처리
df = df.dropna()
# 숫자형 데이터 변환
df[['revenue', 'operating_income', 'net_income']] = df[['revenue', 'operating_income', 'net_income']].apply(pd.to_numeric)
print(df.head())
3️⃣ 데이터 분석
재무 데이터를 활용하여 기업의 성과와 성장 가능성을 분석했습니다.
여기에서는 트렌드 분석과 지표 간 상관관계 분석을 수행했습니다.
- 트렌드 분석:
- 기업의 매출, 영업이익, 순이익이 연도별로 어떻게 변화했는지 시각화.
- Python 시각화 예제
import matplotlib.pyplot as plt
# 연도별 매출 추이
plt.plot(df['bsns_year'], df['revenue'], label="Revenue", marker='o')
plt.plot(df['bsns_year'], df['operating_income'], label="Operating Income", marker='o')
plt.plot(df['bsns_year'], df['net_income'], label="Net Income", marker='o')
plt.title("Financial Trends by Year")
plt.xlabel("Year")
plt.ylabel("Amount (in Billion KRW)")
plt.legend()
plt.show()
4️⃣ 데이터 시각화 및 리포팅
분석 결과를 시각화하여 투자자나 경영자가 쉽게 이해할 수 있도록 리포트를 제작했습니다.
- 주요 시각화 도구:
- Seaborn: 재무 지표 간 상관관계 히트맵.
- Plotly: 대화형 그래프 생성.
- 상관관계 히트맵 예제
import seaborn as sns
# 상관관계 계산 및 히트맵 생성
correlation = df[['revenue', 'operating_income', 'net_income']].corr()
sns.heatmap(correlation, annot=True, cmap="coolwarm", fmt=".2f")
plt.title("Correlation Matrix")
plt.show()
프로젝트 성과와 배운 점
성과
- 재무 데이터 수집 자동화
- DART API를 활용해 다량의 데이터를 자동으로 수집하는 파이프라인 구축에 성공.
- 재무 지표 분석 및 시각화
- 매출, 영업이익, 순이익 데이터를 분석하여 기업의 성장 가능성을 파악.
- 시각화 결과를 통해 기업 간 비교 분석 수행.
- 데이터 기반 인사이트 도출
- 트렌드 분석을 통해 기업의 재무 안정성과 성과 개선 여부를 평가.
배운 점
- API 활용 능력 강화
- DART API와 같은 외부 데이터를 효과적으로 활용하는 방법을 익혔습니다.
- 금융 데이터의 정교함과 복잡성 이해
- 재무 데이터는 단순히 숫자 집합이 아니라, 이를 분석하기 위해 세심한 전처리와 정리가 필요함을 깨달았습니다.
- 시각화의 중요성
- 숫자 데이터만으로는 전달이 어려운 정보를 시각화하여 더 쉽게 이해할 수 있었습니다.
앞으로의 발전 방향
- 머신러닝 모델 활용
- 수집된 데이터를 기반으로, 기업의 재무 상태를 예측하거나 신용도를 평가하는 머신러닝 모델을 개발.
- 산업별 데이터 비교 분석
- 특정 산업(예: IT, 제조업) 간 재무 지표를 비교하여 업계 트렌드를 도출.
- 리포팅 자동화
- 데이터를 분석하고 시각화하는 과정을 자동화하여, 투자자나 경영자에게 실시간 리포트를 제공.
https://github.com/siilver94/Dart-Financial-Statement-Data-Collection-and-Analysis
GitHub - siilver94/Dart-Financial-Statement-Data-Collection-and-Analysis
Contribute to siilver94/Dart-Financial-Statement-Data-Collection-and-Analysis development by creating an account on GitHub.
github.com