counts = pd.cut(data_new_drop2['CERT_AGE'],[0,7,12,16,18,45,100],right=False) #展示价格分布区间 count_price = pd.value_counts(counts) print(count_price) count_price.plot.bar(count_price,list) plt.title('年龄比例分析图') plt.ylabel('人数(人)') plt.xlabel('区间')这段代码如何让其显示柱形图数值
时间: 2023-12-08 09:04:08 浏览: 75
你可以添加以下代码来显示柱形图数值:
```
for i in range(len(count_price)):
plt.text(i, count_price[i], count_price[i], ha='center', va='bottom')
```
这将在每个柱形图的顶部显示相应的数值。完整的代码如下:
```
counts = pd.cut(data_new_drop2['CERT_AGE'],[0,7,12,16,18,45,100],right=False)
count_price = pd.value_counts(counts)
count_price.plot.bar(count_price,list)
plt.title('年龄比例分析图')
plt.ylabel('人数(人)')
plt.xlabel('区间')
for i in range(len(count_price)):
plt.text(i, count_price[i], count_price[i], ha='center', va='bottom')
plt.show()
```
相关问题
len_stage = pd.cut(title_len, bins=bins, labels=level).value_counts().sort_index()详解释
这行代码主要是对标题长度进行分组,并统计每组出现的频次。具体解释如下:
- `pd.cut()` 函数将 `title_len` 这个 Series 对象的数据按照 `bins` 参数指定的区间进行划分,并将划分后的结果转换为一个 Categorical 对象。
- `bins` 参数指定了划分的区间,可以是一个整数表示划分的组数,也可以是一个列表或数组表示划分的具体区间。例如,如果 `bins=[0, 10, 20, 30, 40, 50]`,则表示将标题长度分为五组,分别是长度小于等于 10、10 到 20、20 到 30、30 到 40、40 到 50 和大于 50。
- `labels` 参数指定了划分后每一组的标签,可以是一个列表或数组。例如,如果 `labels=['very short', 'short', 'medium', 'long', 'very long']`,则表示将长度小于等于 10 的组标记为 'very short',长度在 10 到 20 之间的组标记为 'short',以此类推。
- `value_counts()` 方法统计每个标签出现的频次,并返回一个 Series 对象。
- `sort_index()` 方法按照标签的顺序对结果进行排序。
最终,`len_stage` 是一个 Series 对象,其中索引是标签,值是相应的频次。
# 划分区间 bins = [0,1,2,3,4,5,10,15,20,25,30,35,40,45,50,60,70,80,90,100,1220] data = data_forecast_is_stk_bs_rpt_zq_befor_big['本年比上一年归母倍数'] data1 = data_forecast_is_stk_bs_rpt_cw_befor_big['本年比上一年归母倍数'] # 统计每个柱子的数据 hist, edges = pd.cut(data, bins=bins, right=False, include_lowest=True, retbins=True) hist1, edges1 = pd.cut(data1, bins=bins, right=False, include_lowest=True, retbins=True) counts = hist.value_counts() counts1 = hist1.value_counts() # 按照 hist 的顺序重新排序 counts counts = counts.reindex(hist.cat.categories) counts1 = counts1.reindex(hist1.cat.categories) # 按照 bins 的顺序给每个柱子指定标签 labels = counts.index.astype(str) labels1 = counts1.index.astype(str) fig, ax = plt.subplots(figsize=(18, 6)) # 绘制柱形图 #plt.bar(labels, counts) plt.bar(labels, counts, width=0.4, align='center', label='Data 1') plt.bar(labels1, counts1, width=0.4, align='center', label='Data 2') 2个柱子合并了能不能分开
可以分开绘制,只需要将绘制柱状图的代码分别写在两个子图中即可。可以参考如下代码:
```
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(18, 6))
# 绘制第一个子图
hist, edges = pd.cut(data, bins=bins, right=False, include_lowest=True, retbins=True)
hist1, edges1 = pd.cut(data1, bins=bins, right=False, include_lowest=True, retbins=True)
counts = hist.value_counts()
counts1 = hist1.value_counts()
counts = counts.reindex(hist.cat.categories)
counts1 = counts1.reindex(hist1.cat.categories)
labels = counts.index.astype(str)
labels1 = counts1.index.astype(str)
ax1.bar(labels, counts, width=0.4, align='center', label='Data 1')
ax1.set_title('Data 1')
# 绘制第二个子图
ax2.bar(labels1, counts1, width=0.4, align='center', label='Data 2')
ax2.set_title('Data 2')
# 添加图例
fig.legend(loc='upper right')
plt.show()
```
这里使用了 `subplots` 函数创建了两个子图,并将绘制柱状图的代码分别写在了两个子图中。同时,为了方便区分两个子图,我在每个子图的标题中添加了不同的数据标识。最后,通过 `fig.legend` 函数添加了图例。
阅读全文