TrendBridge 팀 프로젝트에서 수행한 채용공고 데이터 전처리, 기술스택 분류, 카테고리 매핑, 트렌드 분석, DB 연동 작업을 정리한 저장소입니다.
TrendBridge는 취업 준비생이 자신의 보유 기술과 채용공고에서 요구하는 기술을 비교하고, 부족한 기술스택과 관련 공고를 확인할 수 있도록 구성한 채용공고 매칭 서비스입니다.
이 저장소는 전체 서비스 코드가 아니라, 프로젝트 과정에서 개인적으로 담당한 데이터 분석 및 전처리 작업 기록을 중심으로 구성되어 있습니다.
채용공고 데이터에는 기업명, 지역, 고용형태, 학력, 직무, 스킬, 급여, 지원방법 등의 정보가 포함되어 있습니다. 본 작업에서는 원본 데이터를 분석에 활용 가능한 형태로 정리하고, 공고별 기술스택과 직무 카테고리를 정리하여 서비스 기능에 활용할 수 있는 데이터로 가공했습니다.
주요 작업은 다음과 같습니다.
- 채용공고 원본 데이터 전처리
- 공고등록일 추정 및 날짜 컬럼 정리
- 기술스택 키워드 정규화
- 기술스택별 카테고리 분류 기준 정리
- 공고별 주요 직무 카테고리 분류
- 월별 기술스택 등장 횟수 및 증감률 분석
- 분석 결과를 Oracle DB에 연동하기 위한 데이터 정리
- Python과 pandas를 활용한 채용공고 데이터 전처리
- 분석에 불필요하거나 결측치가 많은 컬럼 제거
- 지원마감일 기반 공고등록일 추정 컬럼 생성
- 기술스택 키워드 정규화 및 카테고리 분류 기준 정리
- 공고별 프론트엔드, 백엔드, 인공지능/데이터, 인프라/보안, 모바일 카테고리 분류
- 월별 기술스택 등장 횟수와 증감률 분석
- 전처리 및 분석 결과를 DB에 적재하기 위한 데이터 구조 정리
| 구분 | 사용 기술 |
|---|---|
| Language | Python |
| Data Processing | pandas, NumPy |
| Data Format | Excel |
| Database | Oracle DB |
| Environment | Jupyter Notebook |
원본 채용공고 데이터에서 분석에 필요한 컬럼을 선별하고, 결측치와 분석에 적합하지 않은 데이터를 정리했습니다.
주요 처리 내용은 다음과 같습니다.
- 분석에 필요하지 않은 컬럼 제거
- 결측치가 많은 컬럼 제외
- 직무 또는 스킬 정보가 없는 행 제거
상시채용,채용시마감등 등록일 추정이 어려운 공고 제외- 지원마감일을 날짜형으로 변환
- 지원마감일 기준 30일 전을 공고등록일로 추정
- 2025년 이후 데이터만 필터링
- 최종 분석용 데이터 저장
채용공고에 기재된 기술스택은 표기 방식이 서로 다르기 때문에, 분석에 활용할 수 있도록 정규화 기준을 정리했습니다.
예시:
Js,Javascript,JavaScript등 표기 차이 정리Spring,Spring Boot,Spring Framework등 관련 키워드 구분- 협업 도구와 기술스택 성격이 애매한 키워드 분리
- 문맥에 따라 여러 카테고리에 걸칠 수 있는 키워드 검토
기술스택 키워드를 기준으로 다음과 같은 카테고리를 구성했습니다.
- 프론트엔드
- 백엔드
- 인공지능/데이터
- 인프라/보안
- 모바일
- 기타 또는 분류보류
공고별 기술스택을 바탕으로 주요 카테고리와 복수 카테고리를 산출했습니다.
공고등록일을 기준으로 월별 기술스택 등장 횟수를 집계하고, 특정 기간 사이의 증감률과 변화 유형을 분석했습니다.
분석 내용은 다음과 같습니다.
- 월별 기술스택 등장 횟수 집계
- 기술스택별 증감률 계산
- 신규, 재등장, 증가, 감소, 유지, 소멸 상태 분류
- 트렌드 시각화 및 서비스 화면에 활용할 수 있는 분석용 데이터 생성
전처리와 분석을 거친 결과를 서비스에서 사용할 수 있도록 Oracle DB 적재를 고려해 정리했습니다.
주요 작업은 다음과 같습니다.
- 공고별 카테고리 매핑 데이터 생성
- 기술스택 정규화 결과 DB 연동용 데이터 구성
- 중복 데이터 제거
- 카테고리명과 DB의 카테고리 ID 매핑
- INSERT 대상 데이터 생성 및 적재 테스트
data analysis/
├── 핵심프로젝트 데이터 전처리.ipynb
├── 핵심프로젝트 기술스택 추출.ipynb
├── 핵심프로젝트 기술스택 추출_정규화 사전 만들기.ipynb
├── 핵심프로젝트 데이터 DB 연동.ipynb
├── 핵심프로젝트 정규화 데이터 DB 연동.ipynb
├── 기술스택 키워드 카테고리 분류.ipynb
├── 기술스택 키워드 카테고리 분류_2.ipynb
├── 기술스택 키워드 카테고리 분류_3, DB 연동.ipynb
├── 기술스택 트렌드 분석.ipynb
├── 공고 카테고리 분류.ipynb
└── 공고 카테고리 DB 연동.ipynb
| 파일명 | 내용 |
|---|---|
핵심프로젝트 데이터 전처리.ipynb |
원본 채용공고 데이터 정리, 결측치 처리, 날짜 컬럼 변환, 공고등록일 추정, 분석용 데이터 생성 |
핵심프로젝트 기술스택 추출.ipynb |
채용공고 내 기술스택 키워드 추출 및 정리 |
핵심프로젝트 기술스택 추출_정규화 사전 만들기.ipynb |
기술스택 표기 차이 정리 및 정규화 기준 구성 |
기술스택 키워드 카테고리 분류.ipynb |
기술스택 키워드를 프론트엔드, 백엔드, 인공지능/데이터, 인프라 등으로 분류 |
공고 카테고리 분류.ipynb |
공고별 기술스택을 기준으로 주요 직무 카테고리와 복수 카테고리 산출 |
기술스택 트렌드 분석.ipynb |
월별 기술스택 등장 횟수, 증감률, 변화 유형 분석 |
공고 카테고리 DB 연동.ipynb |
공고와 카테고리 간 매핑 데이터를 DB에 적재하기 위한 작업 |
핵심프로젝트 데이터 DB 연동.ipynb |
전처리된 채용공고 데이터를 DB에 연동하기 위한 작업 |
핵심프로젝트 정규화 데이터 DB 연동.ipynb |
정규화된 기술스택 데이터를 DB에 연동하기 위한 작업 |
원본 데이터에는 공고등록일이 명확하게 포함되어 있지 않아, 지원마감일을 기준으로 공고등록일을 추정했습니다. 상시채용 또는 채용시마감 공고는 등록일 추정이 어렵기 때문에 분석 대상에서 제외했습니다.
채용공고마다 기술명 표기가 다르게 작성되어 있어, 동일하거나 유사한 기술을 하나의 기준으로 정리하는 과정이 필요했습니다. 이 과정에서 단순 문자열 매칭만으로 처리하기 어려운 키워드는 별도로 검토 대상으로 분리했습니다.
기술스택 하나가 여러 직무 영역과 연결될 수 있기 때문에, 단일 카테고리뿐 아니라 복수 카테고리도 함께 산출했습니다. 예를 들어 Python은 인공지능/데이터와 관련이 크지만, Django나 Flask와 함께 등장하는 경우 백엔드 성격도 가질 수 있어 문맥 기반 보정 규칙을 적용했습니다.
기술스택의 단순 등장 빈도뿐 아니라 월별 변화 흐름을 보기 위해 증감률과 상태값을 함께 계산했습니다. 이를 통해 특정 기술이 증가, 감소, 신규 등장, 재등장, 소멸했는지 확인할 수 있도록 정리했습니다.
- 전처리 완료 채용공고 데이터
- 기술스택 정규화 결과
- 공고별 직무 카테고리 분류 결과
- 기술스택별 월별 등장 횟수 및 증감률 데이터
- DB 적재용 공고-카테고리 매핑 데이터
- 공고등록일을 직접 수집하지 못해 지원마감일 기준으로 추정했습니다.
- 기술스택 분류는 키워드 기반 규칙을 사용했기 때문에 문맥을 완전히 반영하기에는 한계가 있습니다.
- 일부 기술스택은 여러 직무 영역에 걸칠 수 있어 추가적인 검토 기준이 필요합니다.
- 향후에는 공고 본문 전체를 활용한 분류 모델 적용, 기술스택 사전 고도화, 실제 사용자 GitHub 기술스택과의 매칭 기준 개선이 필요합니다.
본 저장소는 TrendBridge 팀 프로젝트에서 제가 담당한 채용공고 데이터 분석 작업을 정리한 개인 기록 저장소입니다. 전체 서비스 코드는 팀 레포지토리에서 관리되었습니다.
- Team Repository: 팀_레포_URL