使用python随机生成20个[50, 100)之问的成绩,分别按下面的要求离散化。 1)指定区间边界为[0, 60, 70, 80, 90, 100],输出分箱结果(左闭右开)并统计各区间数据的个数,然后,依次把各区间的标签改为E、D、C、B、A,再次查看各区间数据的个数。 2)使用等宽法离散化数据,5个区间。查看分箱后的区间间隔并统计各区间数据的个数。 3)使用等频法离散化数据,5个区间。在看分箱后的区间间隔并统计各区间数据的个数。
时间: 2024-02-28 18:55:52 浏览: 122
基于python实现在excel中读取与生成随机数写入excel中
好的,以下是我对你的回答:
```python
import random
# 生成20个成绩
scores = [random.randint(50, 99) for _ in range(20)]
# 指定区间边界为[0, 60, 70, 80, 90, 100]
bins = [0, 60, 70, 80, 90, 100]
# 离散化数据并输出分箱结果及各区间数据个数
score_bins = pd.cut(scores, bins=bins, right=False)
print(pd.value_counts(score_bins))
# 把各区间标签改为E、D、C、B、A
score_bins = pd.cut(scores, bins=bins, labels=['E', 'D', 'C', 'B', 'A'], right=False)
print(pd.value_counts(score_bins))
# 使用等宽法离散化数据,5个区间
score_bins = pd.cut(scores, bins=5, right=False)
print(score_bins)
print(pd.value_counts(score_bins))
# 使用等频法离散化数据,5个区间
score_bins = pd.qcut(scores, q=5)
print(score_bins)
print(pd.value_counts(score_bins))
```
解释一下代码:
首先,我们使用 `random` 库中的 `randint` 函数生成了 20 个 [50, 100) 之间的成绩。
接着,我们按照要求使用 `pd.cut` 函数进行了离散化,并输出了分箱结果及各区间数据的个数。
然后,我们把各区间的标签从默认的区间端点改为了 E、D、C、B、A,并再次查看了各区间数据的个数。
接着,我们使用等宽法离散化数据,把数据分为了 5 个区间,并输出了分箱后的区间间隔及各区间数据的个数。
最后,我们使用等频法离散化数据,同样把数据分为了 5 个区间,并输出了分箱后的区间间隔及各区间数据的个数。
阅读全文