matplotlib---直方图

本文介绍了如何使用matplotlib库绘制直方图,包括选择合适的组数和组距以避免统计误差,以及直方图在用户年龄分布、点击次数分布和活跃时间分布等场景的应用。并提供了一个案例,展示如何统计电影时长的分布状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

把数据分成多少组进行统计

注意:组数要适当,太少会有较大的统计误差,太多规律不明显

组数:将数据分组,当数据在100个以内时,按数据多少需分5-12组

组距:指每个小组的两个端点的距离,公式如下:

\LARGE zushu=\frac{max(a)-min(a)}{binwidth}

组数=极差/组距

应用场景

  • 用户的年龄分布状态
  • 一段时间内用户的点击次数的分布状态
  • 用户活跃时间的分布状态

案例

现有250个数据,分别是电影的时间长度,统计每个时间段内的电影数或出现的频率


# import random

# print([random.randint(70, 200) for i in range(250)])

from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname='/usr/share/fonts/cjkuni-uming/uming.ttc')

a = [154, 191, 101, 153, 95, 118, 184, 98, 159, 120, 191, 159, 115, 172, 131, 172, 191, 102, 180, 139, 189, 170, 174,
     188, 111, 132, 148, 74, 195, 151, 92, 181, 172, 124, 149, 151, 172, 139, 111, 124, 152, 167, 167, 185, 195, 170,
     172, 147, 175, 154, 151, 182, 169, 91, 136, 113, 112, 70, 153, 82, 148, 110, 178, 194, 87, 133, 148, 180, 151,
     173, 127, 148, 186, 197, 162, 138, 196, 150, 103, 76, 130, 78, 71, 128, 187, 91, 90, 161, 72, 112, 98, 190, 93,
     182, 182, 93, 150, 138, 76, 135, 187, 196, 169, 134, 129, 151, 146, 109, 152, 88, 119, 100, 120, 122, 119, 182,
     95, 183, 110, 181, 81, 160, 138, 89, 97, 166, 182, 127, 108, 87, 158, 73, 88, 162, 105, 128, 79, 79, 193, 162,
     181, 128, 130, 145, 129, 111, 87, 169, 87, 105, 86, 92, 149, 80, 106, 198, 188, 140, 179, 149, 125, 163, 95, 131,
     185, 187, 143, 82, 193, 148, 157, 179, 146, 107, 82, 87, 75, 98, 75, 112, 102, 163, 152, 112, 160, 129, 84, 186,
     161, 200, 196, 93, 141, 86, 95, 83, 93, 112, 127, 149, 109, 145, 92, 130, 195, 85, 178, 175, 194, 170, 170, 177,
     180, 158, 148, 93, 190, 134, 72, 158, 156, 180, 146, 80, 156, 86, 70, 163, 172, 185, 183, 77, 132, 107, 167, 173,
     134, 130, 167, 96, 118, 189, 82, 170, 118, 119, 168, 82, 174, 119]

plt.figure(figsize=(20, 8), dpi=80)

# 计算组数
d = 5  # 组距
num_bins = (max(a)-min(a))//d

plt.hist(a, num_bins)

# 设置x轴的刻度
plt.xticks(range(min(a), max(a)+d, d))

plt.grid()

plt.show()

如果计算出现的频率,只需改动一处

plt.hist(a, num_bins, normed=True)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秒不可闫M先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值