def get_quarter_growth_ratio_df(data_df):

    """
    根据数据生成季度增长率的df

    df的列为: “quarter” 和 “quarter_ration”

    :param data_df:  该stk的K数据
    :return:
    """

    result = list()
    for year in range(2001, int(get_current_date_str().split('-')[0]) + 1):
        for quarter in range(1, 5):

            quarter_temp = str(year) + '0' + str(quarter)
            ratio = get_quarter_growth_ratio(data_df, quarter_temp)

            result.append({
                "quarter":quarter_temp,
                "quarter_ration":ratio
            })

    return pd.DataFrame(result).set_index(keys='quarter')
def get_quarter_start_price_df(data_df):

    """
    根据数据生成季度初始价格的df

    df的列为: “quarter” 和 “q_start_price”

    :param data_df:  该stk的K数据(包含季度列)
    :return:
    """

    result = list()
    for year in range(2001, int(get_current_date_str().split('-')[0]) + 1):
        for quarter in range(1, 5):

            quarter_temp = str(year) + '0' + str(quarter)
            ratio = get_stk_quarter_start_price(data_df, quarter_temp)

            result.append({
                "quarter":quarter_temp,
                "q_start_price":ratio
            })

    return pd.DataFrame(result).set_index(keys='quarter')
def get_ss_sb(codeParam, basic_ele):
    """
    从profit数据库中获取每个stk的数据,转成Dataframe后按时间升序排序,返回!

    :param codeParam:
    :param basic_ele:
    :return:
    """
    result = []

    if basic_ele == "profit":

        for year in range(2001, int(get_current_date_str().split('-')[0]) + 1):
            for quarter in range(1, 5):

                table_name = 'profit' + str(year) + '0' + str(quarter)
                if (int(str(year) + '0' + str(quarter)) < int(
                        get_quarter_date())) & is_table_exist(
                            conn_profit, stk_profit_data_db_name, table_name):
                    db_df = get_total_table_data(conn=conn_profit,
                                                 table_name=table_name)
                    single_basic_ele_data = db_df[db_df.code == codeParam]\
                    .reset_index(drop=True)\
                    .to_dict(orient='index')

                    if len(single_basic_ele_data):
                        single_basic_ele_data = single_basic_ele_data[0]
                        single_basic_ele_data.update(
                            {'date': str(year) + '0' + str(quarter)})
                        result.append(single_basic_ele_data)
                    else:
                        print(
                            "函数get_single_stk_single_basic:profit指标数据为空!季度为:" +
                            str(year) + '0' + str(quarter))

    elif basic_ele == "growth":

        for year in range(2001, int(get_current_date_str().split('-')[0]) + 1):
            for quarter in range(1, 5):

                table_name = 'growth' + str(year) + '0' + str(quarter)
                if (int(str(year) + '0' + str(quarter)) < int(
                        get_quarter_date())) & is_table_exist(
                            conn_growth, stk_growth_data_db_name, table_name):
                    db_df = get_total_table_data(conn=conn_growth,
                                                 table_name=table_name)
                    single_basic_ele_data = db_df[db_df.code == codeParam] \
                        .reset_index(drop=True) \
                        .to_dict(orient='index')

                    if len(single_basic_ele_data):
                        single_basic_ele_data = single_basic_ele_data[0]
                        single_basic_ele_data.update(
                            {'date': str(year) + '0' + str(quarter)})
                        result.append(single_basic_ele_data)
                    else:
                        print(
                            "函数get_single_stk_single_basic:growth指标数据为空!季度为:" +
                            str(year) + '0' + str(quarter))

    elif basic_ele == "operation":

        for year in range(2001, int(get_current_date_str().split('-')[0]) + 1):
            for quarter in range(1, 5):

                table_name = 'operation' + str(year) + '0' + str(quarter)
                if (int(str(year) + '0' + str(quarter)) < int(
                        get_quarter_date())) & is_table_exist(
                            conn_profit, stk_operation_data_db_name,
                            table_name):
                    db_df = get_total_table_data(conn=conn_operation,
                                                 table_name=table_name)
                    single_basic_ele_data = db_df[db_df.code == codeParam] \
                        .reset_index(drop=True) \
                        .to_dict(orient='index')

                    if len(single_basic_ele_data):
                        single_basic_ele_data = single_basic_ele_data[0]
                        single_basic_ele_data.update(
                            {'date': str(year) + '0' + str(quarter)})
                        result.append(single_basic_ele_data)
                    else:
                        print(
                            "函数get_single_stk_single_basic:operation指标数据为空!季度为:"
                            + str(year) + '0' + str(quarter))

    elif basic_ele == "debtpaying":

        for year in range(2001, int(get_current_date_str().split('-')[0]) + 1):
            for quarter in range(1, 5):

                table_name = 'debtpaying' + str(year) + '0' + str(quarter)
                if (int(str(year) + '0' + str(quarter)) < int(
                        get_quarter_date())) & is_table_exist(
                            conn_debtpaying, stk_debtpaying_data_db_name,
                            table_name):
                    db_df = get_total_table_data(conn=conn_debtpaying,
                                                 table_name=table_name)
                    single_basic_ele_data = db_df[db_df.code == codeParam] \
                        .reset_index(drop=True) \
                        .to_dict(orient='index')

                    if len(single_basic_ele_data):
                        single_basic_ele_data = single_basic_ele_data[0]
                        single_basic_ele_data.update(
                            {'date': str(year) + '0' + str(quarter)})
                        result.append(single_basic_ele_data)
                    else:
                        print(
                            "函数get_single_stk_single_basic:debtpaying指标数据为空!季度为:"
                            + str(year) + '0' + str(quarter))

    elif basic_ele == "cashflow":

        for year in range(2001, int(get_current_date_str().split('-')[0]) + 1):
            for quarter in range(1, 5):

                table_name = 'cashflow' + str(year) + '0' + str(quarter)
                if (int(str(year) + '0' + str(quarter)) < int(
                        get_quarter_date())) & is_table_exist(
                            conn_cashflow, stk_cashflow_data_db_name,
                            table_name):
                    db_df = get_total_table_data(conn=conn_cashflow,
                                                 table_name=table_name)
                    single_basic_ele_data = db_df[db_df.code == codeParam] \
                        .reset_index(drop=True) \
                        .to_dict(orient='index')

                    if len(single_basic_ele_data):
                        single_basic_ele_data = single_basic_ele_data[0]
                        single_basic_ele_data.update(
                            {'date': str(year) + '0' + str(quarter)})
                        result.append(single_basic_ele_data)
                    else:
                        print(
                            "函数get_single_stk_single_basic:cashflow指标数据为空!季度为:"
                            + str(year) + '0' + str(quarter))

    else:
        print("函数get_single_stk_single_basic:不识别的basic指标  " + basic_ele)

    try:
        result = DataFrame(result).sort_values(by='date', ascending=True)
    except:
        result = DataFrame()
        print("函数get_single_stk_single_basic:遇到没有数据的指标!" + basic_ele)

    return result
# encoding=utf-8
Example #5
0
# encoding=utf-8