Pandas是Python中一个十分流行的数据分析库,它提供了许多方便易用的工具和功能,可以快速进行数据处理和分析。在实际数据分析中,常常需要统计数据的累计、同比、环比等各种指标,本文将对这些常用统计方法的实践过程进行详细讲解。
累计
累计是指将某个指标的值从某个时间点开始一直累积到当前时间的总和。在Pandas中,可以使用rolling函数和cumsum函数实现对数据的累计计算。
下面是一个示例,我们有一份销售数据,其中包含了每个月的销售额数据:
import pandas as pd
data = {'date': ['2021-01-31', '2021-02-28', '2021-03-31', '2021-04-30', '2021-05-31', '2021-06-30', '2021-07-31'],
'sales': [1000, 2000, 3000, 4000, 5000, 6000, 7000]}
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')
print(df)
输出结果为:
sales
date
2021-01-31 1000
2021-02-28 2000
2021-03-31 3000
2021-04-30 4000
2021-05-31 5000
2021-06-30 6000
2021-07-31 7000
我们可以使用rolling函数计算3个月的销售额累计:
df['cumulative_sales'] = df['sales'].rolling(window=3).sum()
print(df)
输出结果为:
sales cumulative_sales
date
2021-01-31 1000 NaN
2021-02-28 2000 NaN
2021-03-31 3000 6000.0
2021-04-30 4000 9000.0
2021-05-31 5000 12000.0
2021-06-30 6000 15000.0
2021-07-31 7000 18000.0
我们可以看到,累计销售额计算的结果从第3个月开始才有意义,因为rolling函数需要至少统计window个数据才能计算。
同比
同比是指将某个指标与去年同期进行比较,通常用于考察某个经济指标或企业指标的增长情况。在Pandas中,可以使用resample函数将数据按照时间进行重采样,然后按照需求进行计算。
下面是一个示例,我们有一份销售数据,其中包含了每天的销售额数据:
import pandas as pd
data = {'date': ['2020-01-01', '2020-01-02', '2020-01-03', '2021-01-01', '2021-01-02', '2021-01-03'],
'sales': [100, 300, 200, 500, 700, 600]}
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')
print(df)
输出结果为:
sales
date
2020-01-01 100
2020-01-02 300
2020-01-03 200
2021-01-01 500
2021-01-02 700
2021-01-03 600
我们可以使用resample函数将数据按照年进行重采样,然后计算同年销售额的增长率:
year_sales = df.resample('Y').sum()
year_sales['yoy_growth'] = year_sales.pct_change(periods=1)['sales']
print(year_sales)
输出结果为:
sales yoy_growth
date
2020-12-31 600 NaN
2021-12-31 1800 2.000000
我们可以看到,2021年的销售额比2020年增长了200%。
环比
环比是指将某个指标与上个时间段进行比较,通常用于考察某个经济指标或企业指标的周期性变化。在Pandas中,可以使用shift函数将数据向上或向下移动,然后按照需求进行计算。
下面是一个示例,我们有一份销售数据,其中包含了每天的销售额数据:
import pandas as pd
data = {'date': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-02-01', '2021-02-02', '2021-02-03'],
'sales': [100, 300, 200, 500, 700, 600]}
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')
print(df)
输出结果为:
sales
date
2021-01-01 100
2021-01-02 300
2021-01-03 200
2021-02-01 500
2021-02-02 700
2021-02-03 600
我们可以使用shift函数将数据向上移动一个时间段,然后计算月销售额的环比增长率:
month_sales = df.resample('M').sum()
month_sales['mom_growth'] = month_sales['sales'].pct_change(periods=1).shift(periods=-1)
print(month_sales)
输出结果为:
sales mom_growth
date
2021-01-31 600 1.666667
2021-02-28 1800 NaN
我们可以看到,2月份的销售额比1月份增长了166.67%。注意,在计算月销售额的环比增长率时,需要将结果向下移动一个时间段,以避免出现数据泄露问题。
总结
Pandas提供了许多方便易用的工具和函数,可以快速进行数据处理和分析。在统计数据的累计、同比、环比等指标时,可以使用rolling函数和cumsum函数、resample函数和shift函数等函数进行计算。需要根据具体需求选择合适的函数和方法,并注意数据类型和计算结果的合理性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas常用累计、同比、环比等统计方法实践过程 - Python技术站