python dataframe某列数据要做成柱形图 自定义柱形图每个柱子的统计范围,每个柱子范围不一样,添加数据标签
时间: 2023-12-14 15:35:58 浏览: 95
可以使用matplotlib库来绘制自定义柱形图。假设你的数据已经保存在一个DataFrame中,列名为column1。
首先,需要计算每个柱子的统计范围,可以使用numpy库中的linspace函数来实现:
```
import numpy as np
# 定义每个柱子的统计范围
bin_edges = np.linspace(df['column1'].min(), df['column1'].max(), num=5)
```
这里将数据分为5组,可以根据具体情况自定义。
接下来,使用pandas的cut函数将数据划分到各个柱子中:
```
# 将数据划分到各个柱子中
df['bin'] = pd.cut(df['column1'], bins=bin_edges, labels=range(len(bin_edges)-1))
```
这里新建了一列bin来保存每个数据所在的柱子编号。
然后,使用groupby函数计算每个柱子中的数据数量:
```
# 计算每个柱子中的数据数量
counts = df.groupby('bin')['column1'].count()
```
得到counts后,就可以使用matplotlib来绘制柱形图了:
```
import matplotlib.pyplot as plt
# 绘制柱形图
plt.bar(range(len(counts)), counts)
# 添加数据标签
for i, v in enumerate(counts):
plt.text(i, v, str(v), ha='center', va='bottom')
# 设置x轴刻度和标签
plt.xticks(range(len(bin_edges)-1), [f'{bin_edges[i]:.2f}-{bin_edges[i+1]:.2f}' for i in range(len(bin_edges)-1)], rotation=45)
# 显示图形
plt.show()
```
这里使用了plt.bar函数来绘制柱形图,并使用plt.text函数添加数据标签。还使用了plt.xticks函数设置x轴刻度和标签,其中rotation参数用于旋转x轴标签,使其不会重叠。
阅读全文
相关推荐












