八字生助克泄耗数据生成

八字命理旺衰是个基本问题,但也是最有争议的问题,这里的旺衰值是从各命书中搜索出来的,整理比较费劲,就不公开了,但是其他的数据生成,可参考下面的代码

#!/usr/bin/python3
# -*- coding:UTF-8 -*
'''
@auther:dzm
@date:2020-07-10 11:34
@description:
'''
import csv
import pandas as pd
from utils.db_config import engine_db

def get_data(engine):
    sql ='select * from bazi_info'
    df = pd.read_sql_query(sql,engine)
    # newline=''是解决换行的问题,encoding='utf_8_sig'是解决excel打开乱码的问题
    f = open('sample.csv','w',encoding='utf_8_sig',newline='')
    csv_writer = csv.writer(f)
    csv_writer.writerow(['bz','ws','yg','mg','hg','yz_b','yz_z','yz_y','mz_b','mz_z','mz_y','dz_b','dz_z','dz_y','hz_b','hz_z','hz_y'])
    for index,row in df.iterrows():
        print(row['year'],row['month'],row['day'],row['hour'])
        features = extract_feature(row)
        csv_writer.writerow(features)
    f.close()

def extract_feature(row):
    year_gan = row['year'][0]
    year_zhi = row['year'][1]
    month_gan = row['month'][0]
    month_zhi = row['month'][1]
    day_gan = row['day'][0]
    day_zhi = row['day'][1]
    hour_gan = row['hour'][0]
    hour_zhi = row['hour'][1]
    features = []
    features.append(row['id'])
    if row['wang_shuai']:
        features.append(row['wang_shuai'])
    else:
        features.append(99)
    features.append(encode(get_sk_relation_gan(day_gan,year_gan)))
    features.append(encode(get_sk_relation_gan(day_gan, month_gan)))
    features.append(encode(get_sk_relation_gan(day_gan, hour_gan)))
    add_zhi_feature(day_gan, year_zhi,features)
    add_zhi_feature(day_gan, month_zhi,features)
    add_zhi_feature(day_gan, day_zhi,features)
    add_zhi_feature(day_gan, hour_zhi,features)
    return features

def encode(val):
    if val =='生':
        return 1
    elif val =='助':
        return 2
    elif val =='克':
        return 3
    elif val =='泄':
        return 4
    elif val =='耗':
        return 5
    else:
        return 0

def add_zhi_feature(gan,zhi,features):
    ben, zhong, yu = get_sk_relation_zhi(gan, zhi)
    features.append(encode(ben))
    features.append(encode(zhong))
    features.append(encode(yu))
    return features

def get_sk_relation_gan(one,two):
    if one == '甲' or one == '乙':
        if two == '甲' or two == '乙':
            return '助'
        elif two == '丙' or two == '丁':
            return '泄'
        elif two == '戊' or two == '己':
            return '耗'
        elif two == '庚' or two == '辛':
            return '克'
        elif two == '壬' or two == '癸':
            return '生'
    elif one == '丙' or one == '丁':
        if two == '甲' or two == '乙':
            return '生'
        elif two == '丙' or two == '丁':
            return '助'
        elif two == '戊' or two == '己':
            return '泄'
        elif two == '庚' or two == '辛':
            return '耗'
        elif two == '壬' or two == '癸':
            return '克'
    elif one == '戊' or two == '己':
        if two == '甲' or two == '乙':
            return '克'
        elif two == '丙' or two == '丁':
            return '生'
        elif two == '戊' or two == '己':
            return '助'
        elif two == '庚' or two == '辛':
            return '泄'
        elif two == '壬' or two == '癸':
            return '耗'
    elif one == '庚' or two == '辛':
        if two == '甲' or two == '乙':
            return '耗'
        elif two == '丙' or two == '丁':
            return '克'
        elif two == '戊' or two == '己':
            return '生'
        elif two == '庚' or two == '辛':
            return '助'
        elif two == '壬' or two == '癸':
            return '泄'
    elif one == '壬' or two == '癸':
        if two == '甲' or two == '乙':
            return '泄'
        elif two == '丙' or two == '丁':
            return '耗'
        elif two == '戊' or two == '己':
            return '克'
        elif two == '庚' or two == '辛':
            return '生'
        elif two == '壬' or two == '癸':
            return '助'

def get_sk_relation_zhi(gan,zhi):
    if gan == '甲' or gan == '乙':
        if zhi == '子':
            return '生','',''
        elif zhi == '丑':
            return '耗','克','生'
        elif zhi == '寅':
            return '助','泄','耗'
        elif zhi == '卯':
            return '助','',''
        elif zhi == '辰':
            return '耗','生','助'
        elif zhi == '巳':
            return '泄','克','耗'
        elif zhi == '午':
            return '泄','耗',''
        elif zhi == '未':
            return '耗','助','泄'
        elif zhi == '申':
            return '克','生','耗'
        elif zhi == '酉':
            return '克','',''
        elif zhi == '戌':
            return '耗','泄','克'
        elif zhi == '亥':
            return '生','助',''
    elif gan == '丙' or gan == '丁':
        if zhi == '子':
            return '克','',''
        elif zhi == '丑':
            return '泄','耗','克'
        elif zhi == '寅':
            return '生','助','泄'
        elif zhi == '卯':
            return '生','',''
        elif zhi == '辰':
            return '泄','克','生'
        elif zhi == '巳':
            return '助','耗','泄'
        elif zhi == '午':
            return '助','泄',''
        elif zhi == '未':
            return '泄','生','助'
        elif zhi == '申':
            return '耗','克','泄'
        elif zhi == '酉':
            return '耗','',''
        elif zhi == '戌':
            return '泄','助','耗'
        elif zhi == '亥':
            return '克','生',''
    elif gan == '戊' or gan == '己':
        if zhi == '子':
            return '耗','',''
        elif zhi == '丑':
            return '助','泄','耗'
        elif zhi == '寅':
            return '克','生','助'
        elif zhi == '卯':
            return '克','',''
        elif zhi == '辰':
            return '助','耗','克'
        elif zhi == '巳':
            return '生','泄','助'
        elif zhi == '午':
            return '生','助',''
        elif zhi == '未':
            return '助','克','生'
        elif zhi == '申':
            return '泄','耗','助'
        elif zhi == '酉':
            return '泄','',''
        elif zhi == '戌':
            return '助','生','泄'
        elif zhi == '亥':
            return '耗','克',''
    elif gan == '庚' or gan == '辛':
        if zhi == '子':
            return '泄', '', ''
        elif zhi == '丑':
            return '生', '助', '泄'
        elif zhi == '寅':
            return '耗', '克', '生'
        elif zhi == '卯':
            return '耗', '', ''
        elif zhi == '辰':
            return '生', '泄', '耗'
        elif zhi == '巳':
            return '克', '助', '生'
        elif zhi == '午':
            return '克', '生', ''
        elif zhi == '未':
            return '生', '耗', '克'
        elif zhi == '申':
            return '助', '泄', '生'
        elif zhi == '酉':
            return '助', '', ''
        elif zhi == '戌':
            return '生', '克', '助'
        elif zhi == '亥':
            return '泄', '耗', ''
    elif gan == '壬' or gan == '癸':
        if zhi == '子':
            return '助','',''
        elif zhi == '丑':
            return '克','生','助'
        elif zhi == '寅':
            return '泄','耗','克'
        elif zhi == '卯':
            return '泄','',''
        elif zhi == '辰':
            return '克','助','泄'
        elif zhi == '巳':
            return '耗','生','克'
        elif zhi == '午':
            return '耗','克',''
        elif zhi == '未':
            return '克','泄','耗'
        elif zhi == '申':
            return '生','助','克'
        elif zhi == '酉':
            return '生','',''
        elif zhi == '戌':
            return '克','耗','生'
        elif zhi == '亥':
            return '助','泄',''


if __name__ == "__main__":
    df = get_data(engine_db())

    print(df)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

warrah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值