【Python学习1】matplotlib和pandas库绘制人口数变化曲线

news2024/10/6 4:07:01

在这里插入图片描述
✍🏻记录学习过程中的输出,坚持每天学习一点点~
❤️希望能给大家提供帮助~欢迎点赞👍🏻+收藏⭐+评论✍🏻+指点🙏

一、Python库说明

Matplotlib

Matplotlib是一个功能强大的Python 2D绘图库,它允许用户生成具有出版品质的图形,并支持多种硬拷贝格式和跨平台的交互式环境。以下是关于Matplotlib的详细介绍:

1. 基础知识

基本图表元素
x轴和y轴:水平和垂直的轴线。
x轴和y轴刻度:刻度标示坐标轴的分隔,包括最小刻度和最大刻度。
x轴和y轴刻度标签:表示特定坐标轴的值。
绘图区域:实际绘图的区域。
常用属性
hold属性(不推荐使用,有警告):默认为True,允许在一幅图中绘制多个曲线;当设置为False时,每一个plot都会覆盖前面的plot。
网格线:使用grid方法为图添加网格线,可以通过设置参数调整网格线的粗细和明暗程度。
坐标轴范围:除了plt.axis方法,还可以通过xlim和ylim方法设置坐标轴范围。
图例:使用legend方法添加图例,可以通过在plot函数中增加label参数或在legend方法中传入字符串列表来配置。

2. 安装与导入

安装matplotlib的指令:pip install matplotlib(注意,matplotlib需要numpy的支持,如果未安装numpy,请先安装numpy)。
推荐的导入matplotlib的写法:import matplotlib.pyplot as plt

3. 常用函数

pyplot.plot:用于绘制线性图、散点图、条形图等多种图形。
pyplot.scatter:用于绘制散点图,可以指定每个数据点的大小和颜色。
pyplot.bar:用于绘制垂直条形图,如果需要绘制水平条形图,则使用pyplot.barh。
pyplot.pie:用于绘制饼状图,展示不同类别占总数的比例。
pyplot.contour:用于绘制等值线图,展示不同位置的数值高低。
pyplot.imshow:用于展示图像,可以指定二维数组作为图像数据。
pyplot.hist:用于绘制直方图,展示数据的分布情况。

4. 配置

永久配置:matplotlib的配置信息是从配置文件读取的。可以在用户级配置文件(如~/.matplotlib/matplotlibrc)中设置永久有效的默认值。
动态配置:在程序中通过代码进行配置,可以覆盖配置文件中的设置。配置方法的优先级为:Matplotlib函数中的设置 > 当前目录下的matplotlibrc文件 > 用户级matplotlibrc文件 > 全局matplotlibrc文件。

5. 示例

Matplotlib的强大之处在于其能够轻松地绘制出各种复杂且美观的图形。例如,通过组合使用不同的函数和设置,可以创建包含散点图、直方图、饼图等多种图形的复杂图表,用于数据分析和可视化。

总之,Matplotlib是一个功能丰富且易于使用的Python绘图库,适用于各种数据分析和可视化场景。

Pandas

Pandas是一个基于NumPy构建的Python数据分析库,它提供了高效且易于使用的数据结构和数据分析工具。以下是关于Pandas的详细介绍:

1. 基本信息

定义:Pandas是一个开源的Python库,最初由AQR Capital Management于2008年4月开发,并于2009年底开源。Pandas的名字来源于“panel data”(面板数据)和“Python data analysis”(Python数据分析)。
作用:Pandas为Python提供了高性能、易于使用的数据结构和数据分析工具,是Python数据分析的核心库之一。

2. 数据结构

Series:Pandas中的一维数组结构,类似于NumPy的一维数组和Python的列表。它可以保存任何数据类型(整数、浮点数、字符串、布尔值等),并有一个与之相关的数据标签(即索引)。
DataFrame:Pandas中的二维表格型数据结构,类似于电子表格或SQL表。DataFrame由多个Series组成,每个Series代表一列。DataFrame既有行索引也有列索引,可以方便地进行数据查找和操作。
其他数据结构:Pandas还支持Panel(三维数组)、Panel4D(四维数组)和PanelND(更多维数组)等数据结构,但Series和DataFrame是应用最为广泛的数据结构。

3. 主要功能

数据读取与写入:Pandas可以从各种文件格式(如CSV、JSON、Excel、SQL等)读取数据,也可以将数据写入这些文件格式。
数据清洗与预处理:Pandas提供了丰富的数据清洗和预处理功能,如缺失值处理、数据类型转换、重复数据删除、数据排序等。
数据探索性分析:Pandas可以计算数据的描述性统计信息(如平均数、中位数、标准差等),并可以绘制各种图表(如直方图、散点图、折线图等)进行数据可视化。
数据建模与分析:Pandas支持各种数据建模和分析方法,如线性回归、逻辑回归、聚类等。

4. 使用场景

金融数据分析:Pandas最初被作为金融数据分析工具而开发出来,因此它在金融领域有着广泛的应用。
学术研究:Pandas在统计学、数据科学、机器学习等领域的学术研究中也有广泛的应用。
商业智能:Pandas可以帮助企业从大量数据中提取有价值的信息,支持商业决策的制定。

5. 特点

高性能:Pandas基于NumPy构建,继承了NumPy的高性能特性。
易用性:Pandas提供了丰富的API和函数,使得数据分析变得简单而高效。
灵活性:Pandas支持多种数据结构和文件格式,并提供了灵活的数据处理和分析方法。
可扩展性:Pandas是开源项目,有着庞大的社区支持和丰富的插件生态系统,可以方便地扩展其功能。

6. 示例

使用Pandas进行数据分析的示例代码可能包括读取数据、数据清洗、数据探索性分析、数据建模等环节。具体示例可以参考Pandas的官方文档和教程。

二、编码案例

1. 数据准备

提前准备一个文本文件(如CSV),其中包含年份、出生人口数、死亡人口数和人口总数。
在这里插入图片描述

2.读取数据

使用Pandas库来读取数据。

# 读取CSV文件
df = pd.read_csv('PopulationTest.csv')

3.处理数据

将读取的数据转换为适当的数据结构。

# 确保年份是整数(如果需要)
df['Year'] = df['Year'].astype(int)

# 计算人口增长情况
df['PopulationGrowth'] = df['Births'] - df['Deaths']

# 提取年份和增长数据
years = df['Year']
growth_rates = df['PopulationGrowth']

4.绘制图形

使用matplotlib库来绘制曲线。

# 绘制人口和死亡人数曲线
plt.figure(figsize=(12, 6))  # 设置图形大小

# 绘制人口增长曲线
plt.plot(df['Year'], df['Births'], label='Births', marker='o')

# 绘制死亡人数曲线
plt.plot(df['Year'], df['Deaths'], label='Deaths', marker='^', linestyle='--')

# 添加标题和轴标签
plt.title('Births and Deaths Over Time')
plt.xlabel('Year')
plt.ylabel('Number')

# 添加图例
plt.legend()

# 添加网格线
plt.grid(True)

# 显示图形
plt.show()

# 绘制人口增长曲线
plt.figure(figsize=(12, 8))
plt.plot(df['Year'], df['PopulationGrowth'], label='PopulationGrowth', marker='o')

# 为每个数据点添加标签
for i, txt in enumerate(df['PopulationGrowth']):
    if i % 2 == 0:
        plt.annotate(f'{txt:.2f}', (df['Year'][i], txt), textcoords="offset points",
                     xytext=(0, 10), ha='center', color='red')  # xytext是文本相对于数据点的位置
    else:
        plt.annotate(f'{txt:.2f}', (df['Year'][i], txt), textcoords="offset points",
                     xytext=(0, -10), ha='center', color='green')  # xytext是文本相对于数据点的位置

# 添加标题和轴标签
plt.title('PopulationGrowth Over Time')
plt.xlabel('Year')
plt.ylabel('PopulationGrowth')

# 添加图例
plt.legend()

# 添加网格线
plt.grid(True)

# 显示图形
plt.show()

# 绘制柱状图
plt.figure(figsize=(12, 6))
bars = plt.bar(years, growth_rates, color='blue', edgecolor='black')  # 设置柱子的颜色和边框颜色


# 为每个柱子添加标签
def autolabel(bars):
    i = 0
    for bar in bars:
        i+=1
        height = bar.get_height()
        if i%2==0:
            plt.text(bar.get_x() + bar.get_width() / 2., height, f'{height}',
                     ha='center', va='bottom', color='black')  # 设置标签文本、位置、颜色等
        elif i%3==0:
            plt.text(bar.get_x() + bar.get_width() / 2., height-50, f'{height}',
                     ha='center', va='bottom', color='red')  # 设置标签文本、位置、颜色等
        else:
            plt.text(bar.get_x() + bar.get_width() / 2., height-100, f'{height}',
                     ha='center', va='bottom', color='brown')  # 设置标签文本、位置、颜色等


autolabel(bars)

# 添加标题和轴标签
plt.title('Population Growth Rate Over Time')
plt.xlabel('Year')
plt.ylabel('Growth Rate (%)')

# 显示网格线(可选)
plt.grid(True, axis='y', alpha=0.5)

# 显示图形
plt.tight_layout()  # 自动调整子图参数,使之填充整个图像区域
plt.show()

三、效果展示

出生数和死亡数折线图

在这里插入图片描述

出生人口与死亡人口差值折线图

在这里插入图片描述

出生人口与死亡人口差值柱形图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1807230.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【实战项目二】Python爬取豆瓣影评

目录 一、环境准备 二、编写代码 一、环境准备 pip install beautifulsoup4 pip intall lxml pip install requests我们需要爬取这些影评 二、编写代码 我们发现每个影评所在的div的class都相同,我们可以从这入手 from bs4 import BeautifulSoup import request…

修改云主机配置 - 内存增容

文章目录 一、修改云主机配置缘由二、修改云主机配置步骤1、查看云主机概述2、查看master云主机3、更改master云主机配置4、查看master云主机 三、使用Spark Shell玩Saprk SQL1、启动HDFS服务2、启动Spark集群3、启动集群模式Spark Shell4、读取文件生成单例数据帧5、将单列数据…

给浮躁的面试者一个建议

哈喽,大家好,我叫人宅,关于找工作,大家心态非常浮躁,尤其是零零后,或者是九五后。本次为大家分享一下关于就业问题和就业态度。 我讲解的这些其实适合所有高科技行业。我这边就拿程序员为例。 如果你是刚毕…

Python Mistune库:Markdown解析和处理

更多Python学习内容:ipengtao.com Mistune是一个用于Python的快速且功能强大的Markdown解析库。它以其高性能和灵活性著称,能够轻松扩展和定制。Mistune支持标准的Markdown语法,并且可以通过插件扩展支持更多功能,例如数学公式、高…

云服务器Ubuntu系统的vim-plus(youcompleteme)完整安装

一. 安装vim-plus PS:需要在那个用户下配置vim-plus,就到那个用户下执行代码 git clone https://github.com/chxuan/vimplus.git ~/.vimplus cd ~/.vimplus ./install.sh二. 解决没有代码自动补全的问题 随便创建一个Test.cpp文件,vim打开…

线性代数|机器学习-P10最小二乘法的四种方案

文章目录 1. 概述2. SVD奇异值分解3. 最小二乘法方程解4. 最小二乘法图像解释5. Gram-Schmidt 1. 概述 当我们需要根据一堆数据点去拟合出一条近似的直线的时候,就会用到 最小二乘法 .根据矩阵A的情况,有如下四种方法 在r n m 时,SVD奇异…

Apple - Quartz 2D Programming Guide

本文翻译自:Quartz 2D Programming Guide(更新时间:2017-03-21 https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/Introduction/Introduction.html#//apple_ref/doc/uid/TP300010…

SpringCloud中注册中心Nacos的下载与使用步骤

1.前言 Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款服务发现和配置管理工具。它可以帮助用户自动化地进行服务注册、发现和配置管理,是面向微服务架构的一个重要组成部分。 2.下载 链接:https://pan.b…

002-链路聚合

链路聚合 链路聚合是一个重要的计算机网络术语,它涉及将多个物理端口汇聚在一起,形成一个逻辑端口,从而增加网络带宽、实现链路传输的弹性和工程冗余。 定义与基本原理 定义:链路聚合(英语:Link Aggrega…

6.7-6.10作业

1. /*1.使用switch实现银行系统,默认用户为A,密码为1234,余额2000 如果登录失败,则直接结束 如果登录成功,则显示银行页面 1.查询余额 2.取钱 3.存钱 如果是1,则打印余额 如果是2,则输入取钱金…

纳什均衡:博弈论中的运作方式、示例以及囚徒困境

文章目录 一、说明二、什么是纳什均衡?2.1 基本概念2.2 关键要点 三、理解纳什均衡四、纳什均衡与主导策略五、纳什均衡的例子六、囚徒困境七、如何原理和应用7.1 博弈论中的纳什均衡是什么?7.2 如何找到纳什均衡?7.3 为什么纳什均衡很重要&a…

python 判断点和线段相交

python 判断点和线段相交 import numpy as np import cv2 import numpy as npdef point_to_line_distance(points, line_segments):# line_segments [[549, 303], [580, 303]]# points [565, 304]x0, y0, x1, y1line_segments[0][0], line_segments[0][1], line_segments[1]…

手把手带你做一个自己的网络调试助手(1) - TCP服务器准备

程序设计流程图 TCP 服务器 ui界面搭建 Tcp服务器建立连接 - listen() connect() 1.在构造函数中进行如下初始化: 通过 QNetworkInterface 类的 allAddresses 这一API 获得可用IP地址(包括IPv4 和 IPv6) 然后通过QHostAddress类的 protocol 这一AP…

前端-a-date-picker如何设置禁选时间段

想要做到如图所示的效果&#xff0c;代码如下&#xff1a; 第一个是只能选择某一天&#xff0c;第二个是只能选择某一个时间段 <a-date-pickerv-model:value"record.onTimeStr":show-time"{ format: HH:mm }"valueFormat"YYYY-MM-DD HH:mm:ss&qu…

【算法小记】深度学习——时间序列数据分析 Time series Data Analysis

在本篇博客中将简单介绍常见的几种循环神经网络和一维卷积神经网络&#xff0c;并使用一些简答的数据进行拟合分析。本文相对适合刚入门的同学&#xff0c;同时也作为自己过去一段时间学习的总结和记录&#xff0c;现在神经网络框架已经非常完善的支持了很多常见和有效的深度学…

【学永远不嫌晚】Linux操作系统,linux教程,动力节点linux,老杜linux

碎碎念 总是遇到一些恶心的事情 看最新教程 老师安装的是 vm17 pro&#xff0c;想着也去安装&#xff0c;搜了一大堆&#xff0c;都指向官网下载。 https://support.broadcom.com/group/ecx/productdownloads?subfamilyVMwareWorkstationPro 安装显示没有 entitlement&#…

“GPT-4o深度解析:技术演进、能力评估与个人体验综述“

文章目录 每日一句正能量前言对比分析模型架构性能应用场景用户体验技术创新社区和生态系统总结 技术能力语言生成能力语言理解能力技术实现总结 个人感受关于GPT-4o的假设性观点&#xff1a;关于当前语言模型的一般性观点&#xff1a; 后记 每日一句正能量 又回到了原点&#…

2024年CKA模拟系统制作 | step-by-step | 1、基础环境准备

目录 一、软件环境 二、虚拟网络环境准备 1、编辑虚拟网络 2、网络设置 三、新建虚拟主机 1、新建目录 2、新建虚拟主机 四、系统安装 1、装载系统镜像 2、开启虚拟机 3、选择语言 4、键盘选择 5、网络配置 6、代理设置 7、设置软件源 8、存储设置 9、名称设置 …

记一次postgresql拼接函数string_agg() 和row_number() 使用

PG两个函数使用需求和简单介绍 需求背景介绍第一个需求背景是这样的需求升级一下接下来讲讲STRING_AGG()基本语法排序 然后我们再说说ROW_NUMBER()基本语法使用 row_number() over (partition by) 进行分组统计使用 row_num限定每组数量 需求背景介绍 第一个需求背景是这样的 …

6、组件通信详解(父子、兄弟、祖孙)

一、父传子 1、props 用法&#xff1a; &#xff08;1&#xff09;父组件用 props绑定数据&#xff0c;表示为 v-bind:props"数据" &#xff08;v-bind:简写为 : &#xff0c;props可以任意命名&#xff09; &#xff08;2&#xff09;子组件用 defineProps([props&…