0

我想从数据集中创建评论,详细说明各种市场和产品的增长率、市场份额等。数据集的形式为pd.DataFrame(). 我希望评论中包含基于计算的增加/减少等关键字,例如,如果 2020 年 1 月的销售额为 1000,而 2021 年 1 月的销售额为 1600,则意味着增加60%。

我在外面定义了一个函数,我想问问这个方法是否太笨拙,如果是,我应该如何改进它。

GrowthIncDec = namedtuple('gr_tuple', ['annual_growth_rate', 'quarterly_growth_rate'])

def increase_decrease(annual_gr, quarter_gr):
    if annual_gr > 0:
        annual_growth_rate = 'increased'
    elif annual_gr < 0:
        annual_growth_rate = 'decreased'
    else:
        annual_growth_rate = 'stayed the same'

    if quarter_gr > 0:
        quarterly_growth_rate = 'increased'
    elif quarter_gr < 0:
        quarterly_growth_rate = 'decreased'
    else:
        quarterly_growth_rate = 'stayed the same'
    
    gr_named_tuple = GrowthIncDec(annual_growth_rate=annual_growth_rate, quarterly_growth_rate=quarterly_growth_rate)
    
    return gr_named_tuple


myfunc = increase_decrease(5, -1)
myfunc.annual_growth_rate

output: 'increased'

我的主要代码片段如下来说明上述函数的使用:

def get_comments(grp, some_dict: Dict[str, List[str]]):
    .......

    try:
        subdf = the dataframe
        annual_gr = subdf['Annual_Growth'].values[0]
        quarter_gr = subdf['Quarterly_Growth'].values[0]

        inc_dec_named_tup = increase_decrease(annual_gr, quarter_gr)
        
        inc_dec_annual_gr = inc_dec_named_tup.annual_growth_rate
        inc_dec_quarterly_gr = inc_dec_named_tup.quarterly_growth_rate

        comment = "The {} has {} by {:.1%} in {} {} compared to {} {}"\
                  .format(market, inc_dec_annual_gr, annual_gr, timeperiod, curr_date, timeperiod, prev_year)

        comments_df = pd.DataFrame(columns=['Date','Comments'])
        
        # comments_df['Date'] = [curr_date]
        comments_df['Comments'] = [comment]

        return comments_df
    
    except (IndexError, KeyError) as e:
        # this is for all those nan values which is empty
        annual_gr = 0
        quarter_gr = 0
4

0 回答 0