在Qlik Sense中基于自定义条件创建条形图的技术需求
实现Pass/Fail计数条形图的完整方案
步骤1:数据预处理(按规则生成标记)
先确保日期列是datetime类型,再按规则生成关键字段:
- 取
date_a与date_b中的较小值作为imp_date - 计算
date_c与imp_date的天数差,差值<60标记为pass,否则为fail
步骤2:代码实现(基于Pandas+Matplotlib)
import pandas as pd import matplotlib.pyplot as plt import numpy as np # 示例数据(替换为你的真实数据即可) data = { 'date_a': ['2023-01-01', '2023-03-15', '2023-05-20', '2023-02-10'], 'date_b': ['2023-01-10', '2023-03-01', '2023-06-01', '2023-02-05'], 'date_c': ['2023-03-01', '2023-04-20', '2023-07-15', '2023-04-20'] } df = pd.DataFrame(data) # 转换日期列为datetime类型 df['date_a'] = pd.to_datetime(df['date_a']) df['date_b'] = pd.to_datetime(df['date_b']) df['date_c'] = pd.to_datetime(df['date_c']) # 计算imp_date:取date_a和date_b的较小值 df['imp_date'] = np.where(df['date_a'] < df['date_b'], df['date_a'], df['date_b']) # 计算天数差并标记Pass/Fail df['result'] = np.where((df['date_c'] - df['imp_date']).dt.days < 60, 'pass', 'fail') # 统计Pass/Fail的计数(确保pass和fail都被统计,缺失则补0) result_counts = df['result'].value_counts().reindex(['pass', 'fail'], fill_value=0)
步骤3:绘制条形图
# 设置绘图风格 plt.style.use('seaborn-v0_8') # 创建条形图 result_counts.plot(kind='bar', color=['#2ecc71', '#e74c3c'], width=0.6) # 添加标签和标题 plt.xlabel('结果') plt.ylabel('计数') plt.title('Pass/Fail 数量统计') plt.xticks(rotation=0) # 保持X轴标签水平 # 在条形上显示数值标签 for i, v in enumerate(result_counts): plt.text(i, v + 0.1, str(v), ha='center') plt.tight_layout() plt.show()
关键说明
- 若你的日期格式不是
YYYY-MM-DD,需在pd.to_datetime中指定format参数(如format='%d/%m/%Y') - 若差值需要按小时/分钟计算,将
.dt.days替换为.dt.total_seconds()/3600(小时)或.dt.total_seconds()/60(分钟),同时调整判断阈值
内容的提问来源于stack exchange,提问作者Zeren
相关产品推荐
相关产品推荐

