如何绘制月度候选人流失率趋势图以分析季节性波动
解决按年份区分的月度候选人流失率趋势可视化问题
核心问题分析
- 你的
Candidate_%列被错误标注为datetime64[ns]类型,这会导致绘图时无法正确识别为数值型Y轴数据 - 直接用完整
Date列做X轴会混同年月,无法单独对比各年份的月度趋势
分步解决方案
1. 修正数据类型
先将Candidate_%列转换为数值类型(根据实际存储格式调整代码):
# 若为带%的字符串格式,先去除符号再转浮点数 df['Candidate_%'] = df['Candidate_%'].str.replace('%', '').astype(float) # 若为误存为datetime的数值,先转字符串再转浮点数 # df['Candidate_%'] = df['Candidate_%'].dt.strftime('%Y%m%d').astype(float)
2. 提取月份和年份字段
从Date列中拆分出用于分组和展示的维度字段:
df['Month'] = df['Date'].dt.month # 提取1-12的月份数字 df['Year'] = df['Date'].dt.year # 提取年份(如2022、2023)
3. 绘制按年份区分的月度趋势图
使用seaborn生成目标可视化图表:
import seaborn as sns import matplotlib.pyplot as plt plt.figure(figsize=(10,6)) sns.lineplot(x='Month', y='Candidate_%', data=df, hue='Year', marker='o') plt.xlabel('月份') plt.ylabel('候选人流失率(%)') plt.title('各年份月度候选人流失率趋势') plt.xticks(range(1,13)) # 强制显示1-12月完整刻度 plt.legend(title='年份') plt.show()
效果说明
- X轴固定显示1-12月,可清晰对比不同年份同一月份的流失率差异
- 不同颜色线条区分各年份,能直观捕捉季节性波动规律(如特定月份流失率普遍偏高)
内容的提问来源于stack exchange,提问作者technical
相关产品推荐
相关产品推荐

