Matplotlib实战之直方图绘制详解

 更新时间:2023年08月21日 14:03:41   作者:databook  
直方图,又称质量分布图,用于表示数据的分布情况,是一种常见的统计图表,这篇文章主要为大家详细介绍了如何使用Matplotlib绘制直方图,需要的可以参考下

直方图,又称质量分布图,用于表示数据的分布情况,是一种常见的统计图表。

一般用横轴表示数据区间,纵轴表示分布情况,柱子越高,则落在该区间的数量越大。

构建直方图时,首先首先就是对数据划分区间,通俗的说即是划定有几根柱子(比如,1980年~2020年的数据,每5年划分一个区间的话,共8个区间)。

接着,对落在每个区间的数值进行统计计算, 最后,绘制矩形,高度由每个区间的统计结果决定。

直方图柱状图看似相像,实则完全不同。

前者反映数据分布情况,后者则不具备此功能,只能对数值进行比较。

也就是说,柱状图是离散的因此柱子间有空隙;但直方图的数据是连续的数值变量,因此柱子间是没有空隙的。

1. 主要元素

直方图的主要元素包括:

  • 横轴:表示数据的取值范围或分组区间。
  • 纵轴:表示该区间内数据的频率或数量。
  • 柱状条高度:表示每个区间内数据的频率或数量,柱状条的高度代表该区间内数据的数量多少。
  • 柱状条面积:表示不同区间内数据的总和,有时候面积是无意义的,只看高度。

2. 适用的场景

直方图适用于以下分析场景:

  • 数据分布分析:直方图可以帮助我们了解数据的分布情况,包括数据的中心趋势、离散程度和偏斜程度等。通过观察直方图的形状,我们可以判断数据是正态分布、偏态分布还是有其他特殊的分布形式。
  • 异常检测:直方图可以帮助我们识别出数据中的异常情况。通过观察直方图中的离群点或异常值,我们可以发现数据中的异常情况,从而进行数据清洗和异常检测。
  • 数据预处理:直方图可以指导我们选择合适的数据预处理方法。通过观察直方图,我们可以了解数据的分布范围和形态,从而决定是否需要对数据进行归一化、标准化或对数变换等预处理操作。
  • 数据比较:直方图可以帮助我们比较不同数据集之间的差异。通过绘制多个直方图并进行对比,我们可以观察到不同数据集之间的分布差异,从而进行数据分析和解释。

3. 不适用的场景

直方图可能不适用于以下分析场景:

  • 时间序列分析:直方图通常用于表示数据的分布情况,而对于时间序列数据,直方图无法展示数据随时间变化的趋势和模式。
  • 数据关联分析:直方图无法直接展示数据之间的相关性或关联性。
  • 多维数据分析:直方图主要适用于一维数据的分析,无法直接展示多维数据的分布情况。
  • 数据模型拟合:直方图可以展示数据的分布情况,但无法直接拟合数据的概率分布或模型。
  • 数据聚类分析:直方图无法直接展示数据的聚类情况,无法将数据点分组或分类。

4. 分析实战

本次准备用直方图统计下某个年度我们进出口总额的分布情况。

4.1. 数据来源

这次选用国家统计局公开的对外经济贸易数据:databook.top/nation/A06

fp = "d:/share/A06050101.csv"
df = pd.read_csv(fp)
df

4.2. 数据清理

数据中有很多年份的数据为0,也就是有很多的缺失值。

所以,只选取了2021年亚洲各国的进出口总额数据来分析,

其中有2个数据在分析绘图前需要清理,一个是中国同亚洲其他国家(地区)进出口总额(万美元),与其他值差别很大,所以清理;另一个是中国同亚洲进出口总额(万美元),这是个汇总数据,也清理了。

data = df[(df["sj"] == 2021) & 
        (df["zb"] != "A060501011E") & 
        (df["zb"] != "A0605010101")].copy()
#原始数值太大,单位换成(亿美元)
data["value"] = data["value"] / 10000
data.head()

一共有48条数据,这是前5条。

4.3. 分析结果可视化

绘制直方图比较简单,核心是两个参数:

  • **x **参数:一个列表,也就是这次示例中就是各个亚洲国家的进出口总额
  • **bins **参数:设置数据分成几组,直方图会统计每个分组中的数据个数
plt.hist(data["value"].tolist(), bins=10)
plt.title("中国与亚洲各国进出口总额(亿美元) 分布")
plt.show()

上面绘图时,分了10个组。(可以试试调整分组个数,看看不同的图形效果)

从图中可以看出,2021年,亚洲各国与中国的进出口总额在 0~300(亿美元)左右的国家最多,有30多个;

还有2,3个国家与中国的进出口总额甚至超过了3500亿美元。

以上就是Matplotlib实战之直方图绘制详解的详细内容,更多关于Matplotlib直方图的资料请关注脚本之家其它相关文章!

相关文章

  • Python将运行结果导出为CSV格式的两种常用方法

    Python将运行结果导出为CSV格式的两种常用方法

    这篇文章主要给大家介绍了关于Python将运行结果导出为CSV格式的两种常用方法,Python生成(导出)csv文件其实很简单,我们一般可以用csv模块或者pandas库来实现,需要的朋友可以参考下
    2023-07-07
  • Python中的Xpath和lxml库的使用详解

    Python中的Xpath和lxml库的使用详解

    这篇文章主要介绍了Python中的Xpath和lxml库的使用详解,XPath即 XML路径语言,它是一门在 XML 文档中查找信息的语言,最初被用来搜寻 XML 文档,同时它也适用于搜索 HTML 文档,因此,在爬虫过程中可以使用 XPath 来提取相应的数据,需要的朋友可以参考下
    2023-12-12
  • python获取全国最新省市区数据并存入表实例代码

    python获取全国最新省市区数据并存入表实例代码

    我们在开发中经常会遇到获取省市区等信息的时候,下面这篇这篇文章主要给大家介绍了关于python获取全国最新省市区数据并存入表的相关资料,需要的朋友可以参考下
    2021-08-08
  • python接口调用已训练好的caffe模型测试分类方法

    python接口调用已训练好的caffe模型测试分类方法

    今天小编就为大家分享一篇python接口调用已训练好的caffe模型测试分类方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python-while 计算100以内奇数和的方法

    Python-while 计算100以内奇数和的方法

    今天小编就为大家分享一篇Python-while 计算100以内奇数和的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Django事务transaction的使用以及多个装饰器问题

    Django事务transaction的使用以及多个装饰器问题

    这篇文章主要介绍了Django事务transaction的使用以及多个装饰器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python中缓存lru_cache的基本介绍和讲解

    Python中缓存lru_cache的基本介绍和讲解

    缓存是一种将定量数据加以保存以备迎合后续请求的处理方式,旨在加快数据的检索速度,下面这篇文章主要给大家介绍了关于Python中缓存lru_cache的基本介绍和讲解的相关资料,需要的朋友可以参考下
    2022-01-01
  • python如何修改PYTHONPATH环境变量

    python如何修改PYTHONPATH环境变量

    这篇文章主要介绍了python如何修改PYTHONPATH环境变量问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python3 循环语句(for、while、break、range等)

    Python3 循环语句(for、while、break、range等)

    这篇文章主要介绍了Python3 循环语句(for、while、break、range等),大家把下面的文章看完就基本上就可以了解了python的循环实现方式了
    2017-11-11
  • Python selenium如何设置等待时间

    Python selenium如何设置等待时间

    这篇文章主要为大家详细介绍了Python selenium如何设置等待时间,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09

最新评论