지난 포스팅에서는 년주(년지+년간)를 계산하는 방법과 절기의 역할에 대해 알아보았습니다. 이번 글에서는 이어서 월주 세우기 방법에 대해 설명하고 구현 코드 예시로 정리해 보겠습니다.( * 이 글에서는 '년'은 그대로 '년'으로 표기하겠습니다.)
사주팔자 월주 정하는 법
월지 찾기
월주는 출생일이 속한 절기를 기준으로 월지지가 결정됩니다. 여기서 중요한 점은 음력 월과는 다르게 양력 절기 기준으로 월이 정해진다는 것입니다.
예를 들어, 보통 2월 4일경에 입춘이 있으므로 이 날짜 이전에 태어났다면 ‘축월’, 이후라면 ‘인월’로 판단하게 됩니다.
월간(월의 천간)은 년간을 기준으로 5간씩 순환하여 배정됩니다. 이때 사용하는 절기 기준은 다음과 같이 12개입니다.
self.JULGI_JIJI = {
'인': '02-04', '묘': '03-06', '진': '04-05',
'사': '05-06', '오': '06-06', '미': '07-07',
'신': '08-08', '유': '09-08', '술': '10-08',
'해': '11-07', '자': '12-07', '축': '01-05'
}
위 딕셔너리는 편의상 대략적인 날짜를 지정했을 뿐이고, 더욱 정확하게 계산하기 위해서는 해당하는 해의 정확한 절기가 언제였는지 파악해야만 합니다.
이전 글에서 2001년 5월 2일 오전 8시 생을 기준으로 년주를 세워봤어요. 이전 글에서 이 생년월일의 년주는 "신사" 였죠.
그러면 이 "신사"년 을 기준으로 월주를 계산해 볼게요.
우선, 5월 2일이 절기상 어디에 해당하는지 확인합니다. 위 딕셔너리에서 5월 2일은, 4월 5일에서 5월 6일 사이니까 "진"에 해당합니다. 때문에 절기를 기준으로 월주의 지지는 "진" 됩니다.
월간 찾기
이제 월간을 따져봐야 하는데, 이 월간을 따지려면 명리학의 기초 이론에 대해 알아야만 어떻게 구성되는 건지 이해할 수 있어요. 음양오행과 이들의 상생관계에 대해 이야기를 하자면 너무 길기 때문에 여기에서는 예시로 '이런 게 있다' 정도로 소개할게요.
먼저, 년천간의 합이란 게 있어요. 년(연)간과 그 짝이 되는 천간이 합하여 오행의 어떤 기운을 나타낸다는 것이에요. 예를 들면,
- 갑(木)과 기(土)가 합하여 토(土)의 기운을 나타낸다.
- 을(木)과 경(金)이 합하여 금(金)의 기운을 나타낸다.
- 병(火)과 신(金)이 합하여 수(水)의 기운을 나타낸다.
이런 식으로 갑,을,병,정... 천간 10개가 합을 이루어 오행을 나타냅니다. 이렇게 나타난 오행을 생(生)하는 그 오행의 양간을 그 해 인월의 월간으로 정합니다. 오행의 생상 관계를 간단하게 말하면 다음과 같아요.
- 목은 화를 생하고
- 화는 토를 생하고,
- 토는 금을 생하고,
- 금을 목을 생한다.
이 말은 이렇게도 표기할 수 있겠죠. 목(木) > 화(火) > 토(土) > 금(金) > 수(水) > 목(木)
즉, 병(火)과 신(金)년 천간의 합은 수(水)가 되며, 수(水)를 생하는 기운은 금(金)이므로 신년에 해당하는 신사년의 인월은 10 천간의 금(金)에 해당하는 경인월이 되는 거예요. 이때 천간의 금(金)은 경(庚)뿐만 아니라 신(辛)도 있는데요? 할 수 있어요. 그런데, 인월은 음양 중 양에 해당하는 천간만 사용합니다.
어렵죠? 그냥 '이런 이론에 기초해서 정해진다.' 정도로 생각하시면 됩니다.
자, 그럼 이제 다시 돌아가서,
앞서 우리는 5월 2일생의 월지를 "진"이라 했어요. 그럼 인월이 경인월이므로 진월까지는 지지에서 인, 묘, 진 순서로 3번째에 해당하므로, 경에서부터 3번째 천간 경, 신, 임이 되겠네요. 따라서 월주는 "임진"월이 됩니다.
월주 파이썬 코드 예시
이를 파이썬으로 구현한다면 다음과 같이 간단하게 만들 수도 있죠.
def calculate_month_ganzhi(self, year_ganzhi, month, day, is_leap_month):
cgan = year_ganzhi[0]
...
if cgan in ['기', '경', '신', '임', '계']:
cgan = {'기': '갑', '경': '을', '신': '병', '임': '정', '계': '무'}[cgan]
result = self.day_dungan_df.loc[self.day_dungan_df['JIJI'] == jiji, cgan].values[0]
return f"{result}월"
여기에서 day_dungan_df는 앞서 설명한 천간합과 오행에 대해 미리 다 계산한 후 따로 선언하여 사용했어요.
월주 세우기만 이야기해도 너무 길게 얘기했네요. 오늘은 여기까지 하고, 또 다음 글에 이어서 일주, 시주를 정리해 보도록 할게요.
출생년월일 시주 계산 하기 - 사주 천간, 지지 정하는 핵심 원리 #4
출생년월일 시주 계산 하기 - 사주 천간, 지지 정하는 핵심 원리 #4
이 글에서는 시주 계산 방법을 자세히 설명하며, 제공된 년주, 월주, 일주 계산 방법(참고 URL)을 기반으로 전통 명리학 원리에 따라 작성되었습니다. 출생년월일 시주 계산 하기한국의 전통 점술
maos.tistory.com
Python으로 만드는 사주 풀이 프로그램 #3 - 사주팔자 일주 계산 방법
Python으로 만드는 사주 풀이 프로그램 #3 - 사주팔자 일주 계산 방법
이번에는 사주팔자 네 기둥 중 핵심이 되는 일주(日柱) 세우는 방법을 설명하고, 파이썬 코드로 어떻게 구성하는지 살펴보겠습니다. 사주팔자 일주 계산 방법명리학(命理學)에서 일주(日柱)는
maos.tistory.com
OpenAI API로 만드는 사주 풀이 프로그램 #1 - 천간 지지 기반 년주 계산 방법
OpenAI API로 만드는 사주 풀이 프로그램 #1 - 천간 지지 기반 년주 계산 방법
이전 글에서 챗지피티 사주 풀이에 대해 살펴봤어요. 궁금하신 분은 본문 아래 링크를 참고하시고요.오늘부터는 챗지피티 홈페이지인 OpenAI.com에서 제공하는 OpenAI API를 이용해서 나만의 사주 프
maos.tistory.com
'IT 트랜드' 카테고리의 다른 글
1인 개발자의 생성형 AI 도전, 어디까지 가능할까? - AI 모델 선택 기준 #1 (0) | 2025.04.22 |
---|---|
Python으로 만드는 사주 풀이 프로그램 #3 - 사주팔자 일주 계산 방법 (0) | 2025.04.17 |
OpenAI API로 만드는 사주 풀이 프로그램 #1 - 천간 지지 기반 년주 계산 방법 (0) | 2025.04.10 |
생성형 인공지능과 AI 검사기 Grok 3 의 문체 분석과 한계 (0) | 2025.04.01 |
AI 에이전트 기술과 인공지능 검색 엔진의 진화, 그리고 검색 방식 - AI Agent #1 (0) | 2025.03.20 |