pandas处理excel文件的程序(备份)

import pandas as pd
import numpy as np

# 导入excel数据
file_path = r'./excel.xlsx'
ict_data = pd.read_excel(file_path, sheet_name='一季度新兴ICT新签合同报表', header=1)
idc_data = pd.read_excel(file_path, sheet_name='一季度IDC项目新签合同报表', header=1)
# print('格式化输出ICT:\n{0}'.format(ict_data))
# print('格式化输出IDC:\n{0}'.format(idc_data))
ict_data = ict_data.fillna(0)  # 将NaN的位置用零填充
idc_data = idc_data.fillna(0)  # 将NaN的位置用零填充

# 取出ict中需要用到的数据
ict_7 = ict_data.loc[:, '含税合同总金额(万元)'].values
ict_8 = ict_data.loc[:, '项目毛利率%'].values
ict_15 = ict_data.loc[:, '预计本年计收收入(万元)'].values
ict_21 = ict_data.loc[:, '本年累计计收毛利率'].values

# 取出idc中需要用到的数据
idc_7 = idc_data.loc[:, '含税合同总金额(万元)'].values
idc_8 = idc_data.loc[:, '项目毛利率%'].values
idc_15 = idc_data.loc[:, '预计本年计收收入(万元)'].values

############ 计算ICT的总积分 ############
# 计算ict第8列对应的系数
coeff = []
for i in ict_8:
    if i >= 0.3:
        coeff.append(1.7)
    elif 0.3 > i >= 0.2:
        coeff.append(1.4 + 0.2 * (i - 0.2) / 0.1)
    elif 0.2 > i >= 0.1:
        coeff.append(1.0 + 0.2 * (i - 0.1) / 0.1)
    elif 0.1 > i >= 0.05:
        coeff.append(0.5 + 0.2 * (i - 0.05) / 0.05)
    elif 0.05 > i > 0:
        coeff.append(0.3)
    else:
        coeff.append(0)
coeff_8 = np.transpose(coeff)  # 转置

# ict第21列数据'本年累计计收毛利率'中存在汉字,需要核实一下怎么回事???,此处先将其置零
coeff = []
for i in ict_21:
    if i != 0:
        if i == '网元专线':
            coeff.append(0)
        elif i == '其他':
            coeff.append(0)
        elif i == '对应业务收入':
            coeff.append(0)
        else:
            if i >= 0.3:
                coeff.append(1.7)
            elif 0.3 > i >= 0.2:
                coeff.append(1.4 + 0.2 * (i - 0.2) / 0.1)
            elif 0.2 > i >= 0.1:
                coeff.append(1.0 + 0.2 * (i - 0.1) / 0.1)
            elif 0.1 > i >= 0.05:
                coeff.append(0.5 + 0.2 * (i - 0.05) / 0.05)
            elif 0.05 > i > 0:
                coeff.append(0.3)
            else:
                coeff.append(0)
    else:
        coeff.append(0)
coeff_21 = np.transpose(coeff)  # 转置

# 总积分=[第7列*第8列对应的系数+第15列*(10/3)*第21列对应的系数]*标杆系数
ict_result = []
for i in ict_data.index.values:
    result_temp = coeff_8[i] * ict_7[i] + ict_15[i] * (10 / 3) * coeff_21[i]
    if ict_8[i] > 0.15:
        ict_result.append(result_temp)
    else:
        ict_result.append(result_temp * 1.1)
ict_data['ict_result'] = ict_result  # 将ict的总积分加入表格数据中

# 按照ict的总积分排序
sorted_ict = ict_data.sort_values(by='ict_result', axis=0, ascending=False, inplace=False,
                                  kind='quicksort',na_position='last')
print('排序后的ICT:\n',sorted_ict)
# 输出ict排序后的数据到新的表格
new_file_path = r'./sorted_ict.xlsx'
sorted_ict.to_excel(new_file_path,sheet_name='一季度新兴ICT新签合同报表(排序后)')

############ 计算IDC的总积分 ############
idc_result = []
for i in idc_data.index.values:
    result_temp = (idc_7[i] + idc_15[i] * (10 / 3))
    if idc_8[i] > 0.15:
        idc_result.append(result_temp)
    else:
        idc_result.append(result_temp * 1.1)
idc_data['idc_result'] = idc_result # 将idc的总积分加入表格数据中
# 按照idc的总积分排序
sorted_idc = idc_data.sort_values(by='idc_result', axis=0, ascending=False, inplace=False,
                                  kind='quicksort',na_position='last')
print('排序后的IDC:\n',sorted_idc)
# 输出idc排序后的数据到新的表格
new_file_path = r'./sorted_idc.xlsx'
sorted_idc.to_excel(new_file_path,sheet_name='一季度IDC项目新签合同报表(排序后)')
发布了197 篇原创文章 · 获赞 35 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/PoGeN1/article/details/90143854