首页 > 其他分享 >【matplotlib 实战】--折线图

【matplotlib 实战】--折线图

时间:2023-09-28 10:23:46浏览次数:45  
标签:group -- key2 key1 matplotlib dict 折线图 数据

折线图是一种用于可视化数据变化趋势的图表,它可以用于表示任何数值随着时间或类别的变化。

折线图由折线段和折线交点组成,折线段表示数值随时间或类别的变化趋势,折线交点表示数据的转折点。

折线图的方向表示数据的变化方向,即正变化还是负变化,折线的斜率表示数据的变化程度。

1. 主要元素

折线图主要由以下四个元素组成:

  1. 数据点:折线图中的每个数据点都代表着一个时间点或一个数值。
  2. 折线:折线图中的线条代表着数据的变化趋势。
  3. X轴:一般是有序变量,表示数据点的变化区间。
  4. Y轴:数据点在不同时刻的值。

image.png

2. 适用的场景

折线图适用于以下分析场景:

  • 趋势分析:折线图可以用于展示数据的增长、下降、波动等趋势,帮助分析人员了解数据的变化趋势。
  • 问题诊断:折线图可以用于数据异常检测,帮助分析人员快速发现数据的异常情况。

3. 不适用的场景

折线图不适用于以下分析场景:

  • 数据分类和分组:折线图不适用于数据分类和分组分析,因为折线图主要用于展示数据的变化趋势,而不是数据的分类和分组情况。
  • 数据回归分析:折线图不适用于数据回归分析,因为回归分析需要建立在数据样本中的线性关系,而折线图主要用于展示数据的变化趋势,不能很好地反映数据的线性关系。

4. 分析实战

4.1. 数据来源

数据来源国家统计局公开数据,已经整理好的csv文件在:https://databook.top/nation/A03

本次分析使用其中的 A0301.csv 文件(总人口数据)。

下面的文件路径 fp 要换成自己实际的文件路径。

import pandas as pd

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

df = pd.read_csv(fp)
df

image.png

4.2. 数据清理

首先看看 zbCN 字段中有多少种不同的人口统计类别。

df.groupby(by="zbCN").count()

image.png

这个数据集中一共有5种不同维度的人口统计:

  1. 年末总人口
  2. 男性人口
  3. 女性人口
  4. 城镇人口
  5. 乡村人口

按照类别,将它们分离成5个不同的数据集,为了绘制折线图做准备。

groups = df.groupby(by="zbCN")

dict_group = {}
for g in groups:
    dict_group[g[0]] = g[1]

for k, v in dict_group.items():
    print("key = {}, value type = {}".format(k, type(v)))

image.png

groupby 函数按照 by 参数指定的字段将数据集分组,每个group是一个二元的元组。
第一个元素是用来分组的字段值,第二个元素是分组之后的数据集。

4.3. 分析结果可视化

拆分好数据集之后,最就是可视化展示。

首先封装一个函数,用来显示2个数据:
(直接使用上面分割好的数据集dict_group

import pandas as pd

import matplotlib
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator

%matplotlib inline

#为了显示中文
matplotlib.rcParams["font.sans-serif"] = ["Microsoft YaHei Mono"]
matplotlib.rcParams["axes.unicode_minus"] = False

#根据key显示两个数据集
def draw(key1, key2):
    with plt.style.context("seaborn-v0_8"):
        fig = plt.figure()
        ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
        ax.xaxis.set_major_locator(MultipleLocator(4))
        ax.xaxis.set_minor_locator(MultipleLocator(2))

        data = dict_group[key1]
        ax.plot(data["sjCN"], data["value"], "b--o", label=key1)

        data = dict_group[key2]
        ax.plot(data["sjCN"], data["value"], "g:d", label=key2)
        ax.legend()

首先看下男女人口的变化趋势:

key1 = "女性人口(万人)"
key2 = "男性人口(万人)"
#男性人口和女性人口的变化趋势
dict_group[key1] = dict_group[key1].sort_values("sj")
dict_group[key2] = dict_group[key2].sort_values("sj")

draw(key1, key2)

image.png

看这个趋势变化,男女人口的差距长期都在几千万上下,所以找不到女朋友也许不是你的责任 : )

再看看城镇和乡村的人口变化。

key1 = "乡村人口(万人)"
key2 = "城镇人口(万人)"
#乡村人口和城镇人口的变化趋势
dict_group[key1] = dict_group[key1].sort_values("sj")
dict_group[key2] = dict_group[key2].sort_values("sj")

draw(key1, key2)

image.png

从图中可以看出,1994年左右,乡村人口开始进入城镇;
2010年左右,城镇人口开始超越乡村人口,且人口差距越来越大。

折线图最适合的场景就是展示这类有趋势变化的数据。

标签:group,--,key2,key1,matplotlib,dict,折线图,数据
From: https://www.cnblogs.com/wang_yb/p/17735068.html

相关文章

  • docker-compose部署rabbitmq
    docker-compose部署rabbitmqdocker-compose部署rabbitmq单机创建一个rabbitmq.yml的文件version:'3'services:rabbit:image:rabbitmq:3.8-managementhostname:rabbitcontainer_name:"rabbitmq3.8"restart:alwaysports:-......
  • Linux centos7内核升级 简单快速的方法
     Linux是支持多版本内核共存的,无非是系统启动的时候应用哪个版本内核而已。关于内核:Linux内核分两种:官方内核(通常是内核开发人员用)和各大Linux发行版内核(一般用户常用)。 关于Linux内核版本号:例如:[root@centos7~]#uname-r3.10.0-1127.19.1.el7.x86_64查询得到的版本号......
  • 力扣-2798-满足目标工作时长的员工数目
    公司里共有n名员工,按从0到n-1编号。每个员工i已经在公司工作了hours[i]小时。公司要求每位员工工作至少target小时。给你一个下标从0开始、长度为n的非负整数数组hours和一个非负整数target。请你用整数表示并返回工作至少target小时的员工数。 示......
  • Modbus动态链接库供多语言使用 | Go
    Modbus协议控制动态链接库应用场景基于各门语言都有各自的modbus协议库,且良莠不齐,而且在具体的框架下可能存在版本依赖问题,而且对modbus协议存在比较多的细节处理,可以查看modbusslave、或者modbuspoll中相关的配置可知,数据类型对应读写寄存器个数、大小端的处理等等细节,所以......
  • 山海鲸数字孪生金融解决方案:智能化改变金融业
    在金融行业的数字化浪潮中,数字孪生技术正以惊人的速度崭露头角。这项技术不仅改变了金融机构的运营方式,还为金融从业者提供了更多机会来提高效率、降低风险以及提供更加个性化的服务。为了解决这一需求,山海鲸可视化退出一系列智慧金融解决方案案例,下面带大家了解一下山海鲸可视化......
  • shell遍历比较文件夹下文件md5值
    #!/bin/bashCURRENT_DIR=$(cd$(dirname$0);pwd)SOURCE_DIR="$CURRENT_DIR/python_data"TARGET_DIR="$CURRENT_DIR/out_bin"cd$SOURCE_DIR>python.md5forfilein$(ls$SOURCE_DIR|grep"data")dosource_file=${SOURCE_......
  • 全球海洋测深DEM(GEBCO)数据集 下载
    1、概述GEBCO(GeneralBathymetricChartoftheOceans)全球DEM数据集(Geo-EngineeringDigitalSavage)是基于“全球地球系统计划”(GlobalEarthSystemProject)的最新数据集。GEBCO数据包括了从格网尺度到流域尺度的全球DEM数据,覆盖了从海平面变化和海洋地形等,将格网DEM与高......
  • 【RocketMQ】DLedger模式下的选主流程分析
    RocketMQ4.5版本之前,可以采用主从架构进行集群部署,但是如果master节点挂掉,不能自动在集群中选举出新的Master节点,需要人工介入,在4.5版本之后提供了DLedger模式,使用Raft算法,如果Master节点出现故障,可以自动选举出新的Master进行切换。Raft协议Raft是分布式系统中的一种共识算法,......
  • 打开Write Cache的命令
    cli/c0/e0/s12showall   查看状态,现在是关闭状态   打开的命令,smartctl-swcache,on/dev/sd* http://10.100.123.213:8080/job/new_frame/job/hba_based/2470/console  当时错误链接 ......
  • 题解 CF1873H【Mad City】
    其他题解怎么又Tarjan又Dijkstra的,这是div4H的样子吗,来个简单好写的做法。题面里的人名太复杂了,本题解中称为警察和小偷。注意到,如果小偷成功到达了环上,那么一定不会被警察抓到。因为小偷知道警察下一步会走到哪里,他可以执行相同的操作(顺时针/逆时针/静止),使得他和警察之间......