You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python绘制频率图:基于时段的行为频次可视化问题

如何用Python绘制基于时段的行为频率图

1. 数据准备与频次统计

先用pandas处理数据,通过交叉表统计每个时段(AM/PM)下不同行为(True/False)的频次:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 构造示例数据(替换为你的真实数据即可)
data = {
    '时段': ['AM', 'AM', 'PM', 'AM', 'PM', 'PM', 'AM', 'PM', 'AM', 'PM'],
    '行为': [True, False, True, True, False, True, False, False, True, True]
}
df = pd.DataFrame(data)

# 统计各时段-行为组合的频次
freq_table = pd.crosstab(df['时段'], df['行为'])
print(freq_table)

运行后会输出如下统计结果:

行为  False  True
时段            
AM       2     3
PM       2     3

2. 绘制频率图

方法一:matplotlib分组条形图

直接基于统计好的频次表绘制,直观对比时段内的行为频次:

freq_table.plot(kind='bar', figsize=(8, 5), rot=0)
plt.title('不同时段的行为频次分布')
plt.xlabel('时段')
plt.ylabel('频次')
plt.legend(title='行为状态')
plt.tight_layout()
plt.show()

方法二:seaborn快速统计绘图

无需提前统计频次,直接基于原始数据生成美观的分组条形图:

plt.figure(figsize=(8, 5))
sns.countplot(data=df, x='时段', hue='行为')
plt.title('不同时段的行为频次分布')
plt.xlabel('时段')
plt.ylabel('频次')
plt.legend(title='行为状态')
plt.tight_layout()
plt.show()

3. 进阶:展示相对频率(占比)

如果需要查看各时段内行为的占比而非绝对频次,可对统计结果做归一化处理:

freq_percent = freq_table.div(freq_table.sum(axis=1), axis=0) * 100
freq_percent.plot(kind='bar', stacked=True, figsize=(8, 5), rot=0)
plt.title('不同时段的行为占比分布')
plt.xlabel('时段')
plt.ylabel('占比 (%)')
plt.legend(title='行为状态')
plt.tight_layout()
plt.show()

内容的提问来源于stack exchange,提问作者Rea101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 23:05:16