背景:
有一个Excel,我们需要对表中的两列数据进行数据透视
要求:
先对Excel进行数据透视,
将结果输出到一个新的excel;
import pandas as pd
# 文件路径
File_path = r'C:\TELCEL_MEXICO_BOT\A\KPI.xlsx'
output_path = r'C:\TELCEL_MEXICO_BOT\A\KPI_Pivot.xlsx' # 保存路径
# 读取数据
df_KPI = pd.read_excel(File_path)
print("原始数据:")
print(df_KPI)
原始数据:
DAY Cell Cluster EARFCNDL pmHoExeSucc pmUeCtxEstabSucc
0 2025-03-01 C01 S001 10663 2350 330
1 2025-03-02 C01 S001 10663 10000 569
2 2025-03-03 C01 S001 10663 358 2980
3 2025-03-04 C02 S001 2988 88930 6893
4 2025-03-05 C02 S001 2988 120 29056
5 2025-03-06 C02 S001 2988 3578 25990
6 2025-03-07 C02 S001 2988 9820 5689
7 2025-03-08 C03 S008 10667 42359 9860
8 2025-03-09 C03 S008 10667 210 9560
9 2025-03-10 C03 S008 10667 100035 2583
10 2025-03-11 C03 S008 10667 2586 1029
11 2025-03-12 C03 S008 10667 2359 12
# 创建数据透视表
df_KPI_pivot = df_KPI.pivot_table(
index=['Cluster', 'EARFCNDL'], # 分组依据
values=['pmHoExeSucc', 'pmUeCtxEstabSucc'], # 需要聚合的列
aggfunc='sum', # 聚合函数
fill_value=0 # 填充缺失值为0
)
print("\n透视表结果:")
print(df_KPI_pivot)
透视表结果:
pmHoExeSucc pmUeCtxEstabSucc
Cluster EARFCNDL
S001 2988 102448 67628
10663 12708 3879
S008 10667 147549 23044
# 如果需要将多层索引的 Cluster 列填充(向前填充),可以重置索引
df_KPI_pivot_reset = df_KPI_pivot.reset_index()
df_KPI_pivot_reset['Cluster'] = df_KPI_pivot_reset['Cluster'].fillna(method='ffill')
print("\n填充 Cluster 列后的透视表:")
print(df_KPI_pivot_reset)
填充 Cluster 列后的透视表:
Cluster EARFCNDL pmHoExeSucc pmUeCtxEstabSucc
0 S001 2988 102448 67628
1 S001 10663 12708 3879
2 S008 10667 147549 23044
# 将透视表保存到 Excel 文件
df_KPI_pivot_reset.to_excel(output_path, index=False)
print(f"\n透视表已保存到 {output_path}")
透视表已保存到 C:\TELCEL_MEXICO_BOT\A\KPI_Pivot.xlsx