原数据用透视表取数,示例如下:
没有数据的单元格为空,如用cumsum计算累计,则空值列不显示数据;
import pandas as pd
import numpy as np
import datetime
today=str(datetime.date.today())
import os
import glob
filepath1='/Users/kangyongqing/Documents/kangyq/202209/OKR预占/2024到期不续费/统一周期待处理文件/'
filepath2='/Users/kangyongqing/Documents/kangyq/202209/OKR预占/2024到期不续费/统一周期处理后累计值文件/'
# file1='17学生首课尾课及课时余额明细附版本158460_2024_12_04.csv'
lists=os.listdir(filepath1)
print(lists)
keyword='流失用户'
files=[]
for file in glob.glob(os.path.join(filepath1,'*')):
if os.path.isfile(file) and keyword in file:
files.append(file)
for file in files:
if '拓展P1' in file:
print('liebiao:',file)
nf=pd.read_excel(file)
nf=nf.set_index(['firmonth', '新用户数']).copy()
i=57
j=0
while i>=4:
nf.iloc[j,:i]=nf.iloc[j,:i].fillna(0)
i-=1
j+=1
nf.to_excel(filepath2+'ceshi1.xlsx')
nf.cumsum(axis=1).to_excel(filepath2+'ceshi2.xlsx')
经过以上处理,可以把空值填充为0,但又不会过多的填充,结果如下:
即可使用cumsum()进行累加处理,得出累计留存率