【matplotlib 实战】--直方图

matplotlib,实战,直方图 · 浏览次数 : 0

小编点评

## Analysis of Export/Import Distribution in China and Asia This analysis uses a histogram to visualize the distribution of China's and Asia's export/import (exim) values for the year 2021. **Key Points:** 1. **Directly Applicable:** This chart is suitable for analyzing the distribution of continuous numerical data. 2. **Not Suitable for:** - Time series analysis due to lack of trend and pattern. - Data association analysis due to lack of direct correlation between variables. - Multi-dimensional data analysis due to limited capability to represent multi-dimensional data. - Cluster analysis due to lack of ability to group data points based on similarities. 3. **Steps for Analysis:** - Source data from the International Trade Administration (ITA) with the file path provided. - Removed data with missing values using filtering conditions. - Subset data to include only 2021 data for analysis. - Plot the histogram with parameters `x` (country names) and `bins` (number of bins for data points). 4. **Results:** - The chart displays the distribution of export/import values in different Asian countries, with China and Asia taking the top positions. - The chart highlights countries with significant export volumes, with some even exceeding 3500 billion USD. 5. **Conclusion:** - This analysis shows the distribution of China's and Asia's export/import values in 2021, highlighting major contributors. - Further analysis could explore specific country performance and trends over time.

正文

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

一般用横轴表示数据区间,纵轴表示分布情况,柱子越高,则落在该区间的数量越大。
构建直方图时,首先首先就是对数据划分区间,通俗的说即是划定有几根柱子(比如,1980年~2020年的数据,每5年划分一个区间的话,共8个区间)。
接着,对落在每个区间的数值进行统计计算, 最后,绘制矩形,高度由每个区间的统计结果决定。

直方图柱状图看似相像,实则完全不同。
前者反映数据分布情况,后者则不具备此功能,只能对数值进行比较。
也就是说,柱状图是离散的因此柱子间有空隙;但直方图的数据是连续的数值变量,因此柱子间是没有空隙的。

1. 主要元素

直方图的主要元素包括:

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

此图片来自 antv 官网

2. 适用的场景

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

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

3. 不适用的场景

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

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

4. 分析实战

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

4.1. 数据来源

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

fp = "d:/share/A06050101.csv"

df = pd.read_csv(fp)
df

image.png

4.2. 数据清理

数据中有很多年份的数据为0,也就是有很多的缺失值。
所以,只选取了2021年亚洲各国的进出口总额数据来分析,

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

data = df[(df["sj"] == 2021) & 
        (df["zb"] != "A060501011E") & 
        (df["zb"] != "A0605010101")].copy()

#原始数值太大,单位换成(亿美元)
data["value"] = data["value"] / 10000
data.head()

image.png

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

4.3. 分析结果可视化

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

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

image.png

上面绘图时,分了10个组。(可以试试调整分组个数,看看不同的图形效果)
从图中可以看出,2021年,亚洲各国与中国的进出口总额在 0~300(亿美元)左右的国家最多,有30多个;
还有2,3个国家与中国的进出口总额甚至超过了3500亿美元。

与【matplotlib 实战】--直方图相似的内容:

【matplotlib 实战】--直方图

直方图,又称质量分布图,用于表示数据的分布情况,是一种常见的统计图表。 一般用横轴表示数据区间,纵轴表示分布情况,柱子越高,则落在该区间的数量越大。构建直方图时,首先首先就是对数据划分区间,通俗的说即是划定有几根柱子(比如,1980年~2020年的数据,每5年划分一个区间的话,共8个区间)。接着,对

Python从零到壹丨带你了解图像直方图理论知识和绘制实现

摘要:本文将从OpenCV和Matplotlib两个方面介绍如何绘制直方图,这将为图像处理像素对比提供有效支撑。 本文分享自华为云社区《[Python从零到壹] 五十.图像增强及运算篇之图像直方图理论知识和绘制实现》,作者:eastmount。 一.图像直方图理论知识 灰度直方图是灰度级的函数,描述

【matplotlib 实战】--堆叠面积图

堆叠面积图和面积图都是用于展示数据随时间变化趋势的统计图表,但它们的特点有所不同。面积图的特点在于它能够直观地展示数量之间的关系,而且不需要标注数据点,可以轻松地观察数据的变化趋势。而堆叠面积图则更适合展示多个数据系列之间的变化趋势,它们一层层的堆叠起来,每个数据系列的起始点是上一个数据系列的结束点

【matplotlib 实战】--饼图

饼图,或称饼状图,是一个划分为几个扇形的圆形统计图表。在饼图中,每个扇形的弧长(以及圆心角和面积)大小,表示该种类占总体的比例,且这些扇形合在一起刚好是一个完全的圆形。 饼图最显著的功能在于表现“占比”。习惯上,人们通过比较饼图扇形的大小来获得对数据的认知。 使用饼图时,须确认各个扇形的数据加起来等

【matplotlib 实战】--百分比柱状图

百分比堆叠式柱状图是一种特殊的柱状图,它的每根柱子是等长的,总额为100%。柱子内部被分割为多个部分,高度由该部分占总体的百分比决定。 百分比堆叠式柱状图不显示数据的“绝对数值”,而是显示“相对比例”。但同时,它也仍然具有柱状图的固有功能,即“比较”——我们可以通过比较多个柱子的构成,分析数值之间的

【matplotlib 实战】--堆叠柱状图

堆叠柱状图,是一种用来分解整体、比较各部分的图。与柱状图类似,堆叠柱状图常被用于比较不同类别的数值。而且,它的每一类数值内部,又被划分为多个子类别,这些子类别一般用不同的颜色来指代。 柱状图帮助我们观察“总量”,堆叠柱状图则可以同时反映“总量”与“结构”。也就是说,堆叠柱状图不仅可以反映总量是多少?

【matplotlib 实战】--柱状图

柱状图,是一种使用矩形条,对不同类别进行数值比较的统计图表。在柱状图上,分类变量的每个实体都被表示为一个矩形(通俗讲即为“柱子”),而数值则决定了柱子的高度。 1. 主要元素 柱状图是一种用长方形柱子表示数据的图表。它包含三个主要元素: 横轴(x轴):表示数据的类别或时间。 纵轴(y轴):表示数据的

【matplotlib 实战】--平行坐标系

平行坐标系是一种统计图表,它包含多个垂直平行的坐标轴,每个轴表示一个字段,并用刻度标明范围。通过在每个轴上找到数据点的落点,并将它们连接起来形成折线,可以很容易地展示多维数据。随着数据增多,折线会堆叠,分析者可以从中发现数据的特性和规律,比如发现数据之间的聚类关系。 尽管平行坐标系与折线图表面上看起

【matplotlib 实战】--面积图

面积图,或称区域图,是一种随有序变量的变化,反映数值变化的统计图表。 面积图也可用于多个系列数据的比较。这时,面积图的外观看上去类似层叠的山脉,在错落有致的外形下表达数据的总量和趋势。面积图不仅可以清晰地反映出数据的趋势变化,也能够强调不同类别的数据间的差距对比。 面积图的特点在于,折线与自变量坐标

【matplotlib 实战】--折线图

折线图是一种用于可视化数据变化趋势的图表,它可以用于表示任何数值随着时间或类别的变化。 折线图由折线段和折线交点组成,折线段表示数值随时间或类别的变化趋势,折线交点表示数据的转折点。 折线图的方向表示数据的变化方向,即正变化还是负变化,折线的斜率表示数据的变化程度。 1. 主要元素 折线图主要由以下