def cal(self, datas): data = datas dateStarts = str(self.dateStart.dateTime().toPyDateTime()) dateEnds = str(self.dateEnd.dateTime().toPyDateTime()) dateStart = dateStarts[0:10] dateEnd = dateEnds[0:10] if dateStart > dateEnd: QMessageBox.warning(self, "提示", "选取时间有误!!!") else: select = self.comboBox_2.currentText() cal_group_name = self.comboBox_3.currentText() # cal_group = np.unique(data[cal_group_name].values).tolist() cal_group = set(data[cal_group_name].values) # print("cal_group:", cal_group) # print(dateEnd) # ①当期回访量:根据“时间段”判断“列T - 回访时间”包含在“开始时间”及“结束时间”之间的excel行数(即工单数); data_cur_visit = data[(data['回访时间'] <= dateEnd) & (data['回访时间'] >= dateStart)] # print("data_cur_visit:", data_cur_visit['回访时间'].count()) # ②当期有效回访量:根据“时间段”判断“列T - 回访时间”包含在“开始时间”及“结束时间”之间,且“列S - 回访状态”为“有效回访”的excel行数(即工单数) data_cur_valid_visit = data[(data['回访时间'] <= dateEnd) & (data['回访时间'] >= dateStart) & (data['回访状态'] == '有效回访')] # ④当期回访满意工单量:根据“时间段”判断“列T - 回访时间”包含在“开始时间”及“结束时间”之间,且“列S - 回访状态”为“有效回访”,且“列X - 您对本次维修总体的满意度感受如何?”为“非常满意”或“满意”的excel行数(即工单数); data_cur_visit_satisfy = data[ (data['回访时间'] <= dateEnd) & (data['回访时间'] >= dateStart) & (data['回访状态'] == '有效回访') & ((data['您对本次维修总体的满意度感受如何?'] == '非常满意') | (data['您对本次维修总体的满意度感受如何?'] == '满意'))] # ⑤当年累计回访量 dateStartYear = self.string2Year(dateStarts) dateEndYear = self.string2Year(dateEnds) if dateEndYear == dateStartYear: dateEndYear = str(int(dateEndYear) + 1) elif dateEndYear > dateStartYear: pass elif dateEndYear < dateStartYear: pass data_cur_visit_year = data[(data['回访时间'] <= dateEndYear) & (data['回访时间'] >= dateStartYear)] # ⑥当年累计有效回访量 data_cur_valid_visit_year = data[(data['回访时间'] <= dateEndYear) & (data['回访时间'] >= dateStartYear) & (data['回访状态'] == '有效回访')] # ⑧当年累计回访满意工单 data_cur_valid_visit_satisfy_year = data[ (data['回访时间'] <= dateEndYear) & (data['回访时间'] >= dateStartYear) & (data['回访状态'] == '有效回访') & ((data['您对本次维修总体的满意度感受如何?'] == '非常满意') | (data['您对本次维修总体的满意度感受如何?'] == '满意'))] group_name = [] cur_visit_list = [] cur_valie_visit_list = [] cur_valie_visit_rate_list = [] cur_visit_satisfy_list = [] cur_visit_satisfy_rate_list = [] cur_visit_year_list = [] cur_valid_visit_year_list = [] cur_valid_visit_year_rate_list = [] cur_valid_visit_satisfy_year_list = [] cur_valid_visit_stasify_year_rate_list = [] items = [] for group in cal_group: cur_visit = 0 cur_valie_visit = 0 cur_valie_visit_rate = 0.0 cur_visit_satisfy = 0 cur_visit_satisfy_rate = 0.0 cur_visit_year = 0 cur_valid_visit_year = 0 cur_valid_visit_year_rate = 0.0 cur_valid_visit_satisfy_year = 0 cur_valid_visit_stasify_year_rate = 0.0 # print("group:", group) if cal_group_name == "分期": pre_group = set( data[data[cal_group_name] == group]['项目'].values) for pre in pre_group: item = [] item.append(pre + group) # 1.当前回访量 data_cur_tmp = data_cur_visit[ (data_cur_visit[cal_group_name] == group) & (data_cur_visit['项目'] == pre)] cur_visit = data_cur_tmp["回访时间"].count() # 2.当前有效回访量 data_cur_valid_visit_tmp = data_cur_valid_visit[ (data_cur_valid_visit[cal_group_name] == group) & (data_cur_valid_visit['项目'] == pre)] cur_valie_visit = data_cur_valid_visit_tmp[ "回访时间"].count() # print("cur_valie_visit:", cur_valie_visit) # 3.当期有效回访率=②当期有效回访量/①当期回访量 if cur_visit != 0: cur_valie_visit_rate = round( cur_valie_visit / cur_visit, 4) # 4.当期回访满意工单量 data_cur_visit_satisfy_tmp = data_cur_visit_satisfy[ (data_cur_visit_satisfy[cal_group_name] == group) & (data_cur_visit_satisfy['项目'] == pre)] cur_visit_satisfy = data_cur_visit_satisfy_tmp[ '回访时间'].count() # 当期回访满意度 if cur_valie_visit != 0: cur_visit_satisfy_rate = round( cur_visit_satisfy / cur_valie_visit, 4) # 5.当年累计回访量 data_cur_visit_year_tmp = data_cur_visit_year[ (data_cur_visit_year[cal_group_name] == group) & (data_cur_visit_year['项目'] == pre)] cur_visit_year = data_cur_visit_year_tmp['回访时间'].count( ) # print("cur_visit_year:", cur_visit_year) # 6.当年累计有效回访量 data_cur_valid_visit_year_tmp = data_cur_valid_visit_year[ (data_cur_valid_visit_year[cal_group_name] == group ) & (data_cur_valid_visit_year['项目'] == pre)] cur_valid_visit_year = data_cur_valid_visit_year_tmp[ '回访时间'].count() # 7.当年累计有效回访率 if cur_valid_visit_year != 0: cur_valid_visit_year_rate = round( cur_valid_visit_year / cur_visit_year, 4) # 8.当年累计回访满意工单 data_cur_valid_visit_satisfy_year_tmp = data_cur_valid_visit_satisfy_year[ (data_cur_valid_visit_satisfy_year[cal_group_name] == group) & (data_cur_valid_visit_satisfy_year['项目'] == pre)] cur_valid_visit_satisfy_year = data_cur_valid_visit_satisfy_year_tmp[ '回访时间'].count() # 9.当年累计回访满意度 if cur_valid_visit_year != 0: cur_valid_visit_stasify_year_rate = round( cur_valid_visit_satisfy_year / cur_valid_visit_year, 4) else: pass group_name.append(pre + group) cur_visit_list.append(cur_visit) cur_valie_visit_list.append(cur_valie_visit) cur_valie_visit_rate_list.append(cur_valie_visit_rate) cur_visit_satisfy_list.append(cur_visit_satisfy) cur_visit_satisfy_rate_list.append( cur_visit_satisfy_rate) cur_visit_year_list.append(cur_visit_year) cur_valid_visit_year_list.append(cur_valid_visit_year) cur_valid_visit_year_rate_list.append( cur_valid_visit_year_rate) cur_valid_visit_satisfy_year_list.append( cur_valid_visit_satisfy_year) cur_valid_visit_stasify_year_rate_list.append( cur_valid_visit_stasify_year_rate) item.append(cur_visit) item.append(cur_valie_visit) item.append(cur_valie_visit_rate) item.append(cur_visit_satisfy) item.append(cur_visit_satisfy_rate) item.append(cur_visit_year) item.append(cur_valid_visit_year) item.append(cur_valid_visit_year_rate) item.append(cur_valid_visit_satisfy_year) item.append(cur_valid_visit_stasify_year_rate) items.append(item) for i in range(len(items)): item = items[i] row = self.tableWidget.rowCount() self.tableWidget.insertRow(row) for j in range(len(item)): item = QTableWidgetItem(str(items[i][j])) self.tableWidget.setItem(row, j, item) items = [] self.pd_dict = { '分组条件': group_name, '当期回访量': cur_visit_list, '当期有效回访量': cur_valie_visit_list, '当期有效回访率': cur_valie_visit_rate_list, '当期回访满意工单量': cur_visit_satisfy_list, '当期回访满意度': cur_visit_satisfy_rate_list, '当年累计有效回访量': cur_valid_visit_year_list, '当年累计回访量': cur_visit_year_list, '当年累计有效回访率': cur_valid_visit_year_rate_list, '当年累计回访满意工单': cur_valid_visit_satisfy_year_list, '当年累计回访满意度': cur_valid_visit_stasify_year_rate_list } else: item = [] item.append(group) # 1.当前回访量 data_cur_tmp = data_cur_visit[ data_cur_visit[cal_group_name] == group] cur_visit = data_cur_tmp["回访时间"].count() # 2.当前有效回访量 data_cur_valid_visit_tmp = data_cur_valid_visit[ data_cur_valid_visit[cal_group_name] == group] cur_valie_visit = data_cur_valid_visit_tmp["回访时间"].count() # 3.当期有效回访率=②当期有效回访量/①当期回访量 if cur_visit != 0: cur_valie_visit_rate = round( cur_valie_visit / cur_visit, 4) # 4.当期回访满意工单量 data_cur_visit_satisfy_tmp = data_cur_visit_satisfy[ data_cur_visit_satisfy[cal_group_name] == group] cur_visit_satisfy = data_cur_visit_satisfy_tmp[ '回访时间'].count() # 当期回访满意度 if cur_valie_visit != 0: cur_visit_satisfy_rate = round( cur_visit_satisfy / cur_valie_visit, 4) # 5.当年累计回访量 data_cur_visit_year_tmp = data_cur_visit_year[ data_cur_visit_year[cal_group_name] == group] cur_visit_year = data_cur_visit_year_tmp['回访时间'].count() # 6.当年累计有效回访量 data_cur_valid_visit_year_tmp = data_cur_valid_visit_year[ data_cur_valid_visit_year[cal_group_name] == group] cur_valid_visit_year = data_cur_valid_visit_year_tmp[ '回访时间'].count() # 7.当年累计有效回访率 if cur_valid_visit_year != 0: cur_valid_visit_year_rate = round( cur_valid_visit_year / cur_visit_year, 4) # 8.当年累计回访满意工单 data_cur_valid_visit_satisfy_year_tmp = data_cur_valid_visit_satisfy_year[ data_cur_valid_visit_satisfy_year[cal_group_name] == group] cur_valid_visit_stasify_year = data_cur_valid_visit_satisfy_year_tmp[ '回访时间'].count() # 9.当年累计回访满意度 if cur_valid_visit_year != 0: cur_valid_visit_stasify_year_rate = round( cur_valid_visit_stasify_year / cur_valid_visit_year, 4) else: pass group_name.append(group) cur_visit_list.append(cur_visit) cur_valie_visit_list.append(cur_valie_visit) cur_valie_visit_rate_list.append(cur_valie_visit_rate) cur_visit_satisfy_list.append(cur_visit_satisfy) cur_visit_satisfy_rate_list.append(cur_visit_satisfy_rate) cur_visit_year_list.append(cur_visit_year) cur_valid_visit_year_list.append(cur_valid_visit_year) cur_valid_visit_year_rate_list.append( cur_valid_visit_year_rate) cur_valid_visit_satisfy_year_list.append( cur_valid_visit_satisfy_year) cur_valid_visit_stasify_year_rate_list.append( cur_valid_visit_stasify_year_rate) item.append(cur_visit) item.append(cur_valie_visit) item.append(cur_valie_visit_rate) item.append(cur_visit_satisfy) item.append(cur_visit_satisfy_rate) item.append(cur_visit_year) item.append(cur_valid_visit_year) item.append(cur_valid_visit_year_rate) item.append(cur_valid_visit_stasify_year) item.append(cur_valid_visit_stasify_year_rate) items.append(item) for i in range(len(items)): item = items[i] row = self.tableWidget.rowCount() self.tableWidget.insertRow(row) for j in range(len(item)): item = QTableWidgetItem(str(items[i][j])) self.tableWidget.setItem(row, j, item) items = [] self.pd_dict = { '分组条件': group_name, '当期回访量': cur_visit_list, '当期有效回访量': cur_valie_visit_list, '当期有效回访率': cur_valie_visit_rate_list, '当期回访满意工单量': cur_visit_satisfy_list, '当期回访满意度': cur_visit_satisfy_rate_list, '当年累计有效回访量': cur_valid_visit_year_list, '当年累计回访量': cur_visit_year_list, '当年累计有效回访率': cur_valid_visit_year_rate_list, '当年累计回访满意工单': cur_valid_visit_satisfy_year_list, '当年累计回访满意度': cur_valid_visit_stasify_year_rate_list } for i in range(len(items)): item = items[i] row = self.tableWidget.rowCount() self.tableWidget.insertRow(row) for j in range(len(item)): item = QTableWidgetItem(str(items[i][j])) self.tableWidget.setItem(row, j, item)