如果您只想绘制直方图,可以使用以下代码
import matplotlib.pyplot as plt
plt.hist(list1,bins=[0,2.5,5,7.5,10,12.5,15,17.5])
否则,如果您希望创建一个数据框,其 bin 对应于它们的频率,您可以按照以下步骤操作:
import pandas as pd
import numpy as np
list1=[10.16, 11.13, 15.01, 14.64, 13.8, 14.1, 14.65, 1.36, 1.43, 1.63, 1.7, 2.07]
binned=pd.cut(np.array(list1),bins=[0,2.5,5,7.5,10,12.5,15,17.5])
'''output: [(10.0, 12.5], (10.0, 12.5], (15.0, 17.5], (12.5, 15.0], (12.5, 15.0], ..., (0.0, 2.5], (0.0, 2.5], (0.0, 2.5], (0.0, 2.5], (0.0, 2.5]]
Length: 12
Categories (7, interval[float64]): [(0.0, 2.5] < (2.5, 5.0] < (5.0, 7.5] < (7.5, 10.0] < (10.0, 12.5] < (12.5, 15.0] < (15.0, 17.5]]'''
df=pd.DataFrame({'value':list1,'bins':binned})
df.groupby('bins')['value'].count()
解释:pandas.cut() 帮助我们替换与 list1 中的值对应的 bin。然后使用“list1”和“binned”创建一个数据框。按“分箱”分组并计算 list1 中的频率。