python计算公司销售额的同比增长率

     同比、环比一直在很多场合中广泛地被使用到,今天是基于一个小数据集来计算一下销售额的同比增长率,对于同比和环比的了解之前主要是来源于业务方面的需求,这里为了更加准确定义同比,贴上百度百科的定义如下:

比如说2017年8月的产值100万,2018年8月的产值300万,同比增长为:(300-100)÷100*100%=200% 
同比增长率一般是指和上一年同期相比较的增长率。
某个指标的同比增长率=(现年的某个指标的值-上年同期这个指标的值)/上年同期这个指标的值。
某个指标的同期比=(本年的某个指标的值-去年同期这个指标的值)/去年同期这个指标的值

    数据集如下:

    数据集中的数据记录数量很少,一共50条记录左右,具体同比计算实践如下:

#!usr/bin/env python
#encoding:utf-8
from __future__ import division


'''
__Author__:沂水寒城
功能:计算企业销售额的同比增长率
'''

import sys
import xlrd
reload(sys)
sys.setdefaultencoding("utf-8")


def dataPairCal(one,two):
    '''
    单对同期数据计算
    '''
    if one and two:
        return two/one-1
    else:
        return 0


def handleData(datapath='data.xlsx'):
    '''
    从Excel中抽取出来数据,并计算同比
    '''
    data_dict,res_dict={},{}
    for year in [2016,2017,2018]:
        data_dict[year]={}
        for one in range(1,13):
            data_dict[year][one]=0
    workbook=xlrd.open_workbook(datapath,'rb')
    sheet_one=workbook.sheets()[0]
    row_num,col_num=sheet_one.nrows,sheet_one.ncols
    name_list=[]
    for i in range(4,row_num):
        company,money=sheet_one.cell_value(i,0),sheet_one.cell_value(i,1)
        month,year=sheet_one.cell_value(i,2),sheet_one.cell_value(i,3)
        data_dict[year][month]=money
    print data_dict
    dict1,dict2,dict3=data_dict[2016],data_dict[2017],data_dict[2018]
    for i in range(1,13):
        one_tmp_key='2016_2017_'+str(i)
        res_dict[one_tmp_key]=dataPairCal(dict1[i],dict2[i])
    for i in range(1,13):
        one_tmp_key='2017_2018_'+str(i)
        res_dict[one_tmp_key]=dataPairCal(dict2[i],dict3[i])
    print res_dict







if __name__ == '__main__':
    handleData(datapath='data.xlsx')

    结果如下:

{2016: {1: 0, 2: 0, 3: 2932137.0, 4: 5601712.0, 5: 4555366.0, 6: 7754956.0, 7: 3190944.0, 8: 19781.0, 9: 10909596.0, 10: 1697156.0, 11: 16921888.0, 12: 673851.0}, 2017: {1: 690055.0, 2: 584111.0, 3: 947528.0, 4: 579917.0, 5: 539401.0, 6: 459675.0, 7: 485340.0, 8: 9544196.0, 9: 6345747.0, 10: 12599740.0, 11: 4262813.0, 12: 14145928.0}, 2018: {1: 13135177.0, 2: 1773997.0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 0, 11: 0, 12: 0}}



{'2016_2017_8': 481.4930994388555, '2016_2017_9': -0.4183334561609797, '2016_2017_6': -0.9407250021792516, '2016_2017_7': -0.8479008092902915, '2016_2017_4': -0.8964750419157572, '2016_2017_5': -0.8815899754267824, '2016_2017_2': 0, '2016_2017_3': -0.676847296016523, '2016_2017_1': 0, '2016_2017_10': 6.424031733087589, '2016_2017_11': -0.7480888066390701, '2016_2017_12': 19.99266455047184, '2017_2018_10': 0, '2017_2018_11': 0, '2017_2018_12': 0, '2017_2018_2': 2.037088840990839, '2017_2018_3': 0, '2017_2018_1': 18.034971125489996, '2017_2018_6': 0, '2017_2018_7': 0, '2017_2018_4': 0, '2017_2018_5': 0, '2017_2018_8': 0, '2017_2018_9': 0}

    结果中2016_2017_8表示的是2017年和2016年8月销售额的同比分析计算结果,很简单的小功能,主要是熟悉一下同比的概念。

猜你喜欢

转载自blog.csdn.net/Together_CZ/article/details/83927789