Python利用随便一组数据绘制直方图

文章目录

0 环境

  • python: ×64位的3.6.4
  • 包: matplotlib、pandas、numpy

1 实操

 如果是一组数据,要绘制它的直方图,这个时候,我们既没有这组数据的唯一值,又没有唯一值出现过的次数。那我们首先就需要得到这些唯一值,以及他们出现的次数。
 如果是小数据样本(w级以下),那么不用担心,你完全可以利用for循环进行统计。但是,当数据样本量过大,for循环的统计效率就没有那么高了。此时,我们可以利用pandas中的某些函数,来达到一个高效统计的效果,方便绘制直方图。具体操作如下:

  • 1 统计唯一值及出现次数
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 模拟100个[1, 10]之间的整数,用来绘制直方图
data = [np.random.randint(1, 10) for a in range(1, 101)]
# 将列表转换成pandas的Series格式(因为里边有自带的函数可以统计元素出现的个数, for统计列表中元素出现的次数,效率过慢,不适用于大数据量)
data_pd = pd.Series(data)
l_unique_data = list(data_pd.value_counts().index)  # 该数据中的唯一值
l_num = list(data_pd.value_counts())  # 唯一值出现的次数
  • 2 绘制直方图
plt.bar(l_unique_data, l_num, width=0.1)
plt.show()
  • 3 添加标注
    如果需要再图上标注某些点位,就可以:
plt.bar(l_unique_data, l_num, width=0.1)
plt.plot(5, l_num[l_unique_data.index(5)], 'rs', label='标注')  # 标注点位
show = '({}, '.format(5) + str(l_num[l_unique_data.index(5)]) + ')'  # 注释的str
plt.annotate(show, xy=(5, l_num[l_unique_data.index(5)]))  # 进行注释
plt.ylabel('x轴')
plt.xlabel('y轴')
plt.legend()
plt.show()
  • 4 初始化plt制图格式

初始化图像的格式能够在一下情况帮助到你: 坐标轴的字符、标注的字符可能是中文字符的时候,需要转换字体格式;在文章写作的时候,有些图片被要求固定的比例;坐标轴字体过小的时候。

plt.rcParams['font.sans-serif'] = ['FangSong']  # 用来显示中文字符
plt.rcParams['figure.figsize'] = (6.6, 5)  # 控制图片的比例
plt.tick_params(labelsize=15)   # 坐标轴的字体大小

成果展示:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40260867/article/details/93625818