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

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

一、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()

三、效果展示

出生数和死亡数折线图

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

汇编:x86汇编环境搭建与基础框架(32位)

32位汇编代码编写环境:Visual Studio(笔者用的版本为2017);先来说一下在Visual Studio 2017中编写汇编代码的准备操作: ①创建空项目 ②设置项目属性:平台工具集设置为Visual Studio 2015(v140)&#xff0…

怎么用PHP语言实现远程控制两路照明开关

怎么用PHP语言实现远程控制两路开关呢? 本文描述了使用PHP语言调用HTTP接口,实现控制两路开关,两路开关可控制两路照明、排风扇等电器。 可选用产品:可根据实际场景需求,选择对应的规格 序号设备名称厂商1智能WiFi墙…

搜索与图论:深度优先搜索

搜索与图论&#xff1a;深度优先搜索 题目描述参考代码 题目描述 参考代码 #include <iostream>using namespace std;const int N 10;int n; int path[N]; bool st[N];void dfs(int u) {// u n 搜索到最后一层if (u n){for (int i 0; i < n; i) printf("%d …

中国游戏产业月度报告分享 | 洞察游戏行业市场

作为中国音像与数字出版协会主管的中国游戏产业研究院的战略合作伙伴&#xff0c;伽马数据发布了《2024年4月中国游戏产业月度报告》。 数据显示&#xff0c; 2024年4月&#xff0c;中国游戏市场实际销售收入224.32亿元&#xff0c;环比下降4.21%&#xff0c;同比下降0.27%。移…

Qt无边框

最简单的可拖动对话框(大小不可改变) #ifndef DIALOG_H #define DIALOG_H/*** file dialog.h* author lpl* brief 无边框dialog类* date 2024/06/05*/ #include <QDialog> #include <QMouseEvent> namespace Ui { class Dialog; } /*** brief The Dialog class* 无…

如何把试卷上的字去掉再打印?分享三种方法

如何把试卷上的字去掉再打印&#xff1f;随着科技的不断发展&#xff0c;现代教育和学习方式也在逐渐变革。在学习过程中&#xff0c;我们经常需要对试卷进行整理和分析&#xff0c;以便更好地掌握知识点和复习。然而&#xff0c;传统的试卷整理方法往往效率低下且容易出错。幸…

六月的魔力:揭秘2024年加密市场与Reflection的创新与收益

回想过去加密货币市场的沉浮&#xff0c;一年中市场的阶段性牛市大多发生在下半年&#xff0c;六月似乎是一个神奇的时间节点。每年六月一到&#xff0c;加密货币市场仿佛突然被按下启动按钮&#xff0c;沉寂的土狗开始扶苏&#xff0c;经过半年准备的各大项目方开始蠢蠢欲动。…

27-unittest之断言(assert)

在测试方法中需要判断结果是pass还是fail&#xff0c;自动化测试脚本里面一般把这种生成测试结果的方法称为断言&#xff08;assert&#xff09;。 使用unittest测试框架时&#xff0c;有很多的断言方法&#xff0c;下面介绍几种常用的断言方法&#xff1a;assertEqual、assert…

MySql每天从0开始生成特定规则自增编号

一、前言 1、按一定规则生单号&#xff0c;要求不重复 2、例如&#xff1a;前缀 日期 不重复流水号&#xff0c;whgz-20240528-00001 二、数据库操作 1、MySQL新建一张表sys_sequence seq_name 序列名称 current_val 当前编号 increment_val 步长 CREATE TABLE sys_sequ…

kafka-消费者-消费异常处理(SpringBoot整合Kafka)

文章目录 1、消费异常处理1.1、application.yml配置1.2、注册异常处理器1.3、消费者使用异常处理器1.4、创建生产者发送消息1.5、创建SpringBoot启动类1.6、屏蔽 kafka debug 日志 logback.xml1.7、引入spring-kafka依赖1.8、消费者控制台&#xff1a;1.8.1、第一次启动SpringK…

【案例分享】明道数云为阿联酋迪拜公司Eastman BLDG打造外贸管理系统

内容概要 本文介绍了Eastman公司与明道数云软件的合作&#xff0c;通过数字化解决方案提升了Eastman在贸易管理中的效率。Eastman公司位于阿联酋迪拜&#xff0c;周边城市有门店&#xff0c;人数大概在30&#xff0c;是一家主营瓷砖和石材类产品的贸易公司&#xff0c;面临着各…

C#,JavaScript实现浮点数格式化自动保留合适的小数位数

目标 由于浮点数有漂移问题&#xff0c;转成字符串时 3.6 有可能得到 3.6000000000001&#xff0c;总之很长的一串&#xff0c;通常需要截取&#xff0c;但按照固定长度截取不一定能使用各种情况&#xff0c;如果能根据数值大小保留有效位数就好了。 C#实现 我们可以在基础库里…

linux实验报告

实验一&#xff1a;Linux操作系统的安装与配置 实验目的&#xff1a; 1.掌握虚拟机技术&#xff1b; 2.掌握Linux的安装步骤&#xff1b; 3.掌握安装过程中的基本配置要求。 4.掌握正确启动Linux的方法&#xff1b; 5.掌握正确退出Linux的方法&#xff1b; 6.熟悉已安装…

【Python】把xmind转换为指定格式txt文本

人工智能训练通常需要使用文本格式&#xff0c;xmind作为一种常规格式不好进行解析&#xff0c;那如何把xmind转换为txt格式呢&#xff1f; 软件信息 python python -v Python 3.9.13 (tags/v3.9.13:6de2ca5, May 17 2022, 16:36:42) [MSC v.1929 64 bit (AMD64)] on win32…

C#知识|通过ADO.NET实现应用程序对数据库的查询操作。

哈喽,你好啊,我是雷工! 前边学习了通过ADO.NET实现C#应用程序对数据库的增、删、改操作。 接下来接着学习查询操作,以下为学习笔记。 查询返回有两种类型,一种是单行单列的单一结果,一种是结果集,首先了解查询结果是单行单列结果的写法。 01 查询返回单一结果 以前方的…

Python编程学习第一篇——Python零基础快速入门(五)—元组(Tuple)操作

Python元组是一种不可变的有序集合&#xff0c;可以存储多个不同类型的数据。元组使用小括号来表示&#xff0c;其中的元素用逗号分隔开。与列表不同&#xff0c;元组的元素不能被修改、删除或添加。它的一些常规操作包括元组的创建、访问、添加、修改、删除、运算等等&#xf…

编译原理-程序设计语言的设计

变量 存储单元及它的名称由变量的概念来代替; 可以代表一个或一组单元,可以修改。 绑定 绑定:一个实体(或对象)与其某种属性建立起某种联系的 过程,称为绑定。 静态绑定:凡是在编译时能确定的属性,称为静态属性; 若绑定在编译时完成,运行时不改变,称为静态…

武汉科技大学,计算机考研全面改考408,24计算机专硕复试线仅298分!武汉科技大学计算机考研考情分析!

武汉科技大学&#xff08;Wuhan University of Science and Technology&#xff09;简称“武科大”&#xff0c;坐落于湖北省武汉市&#xff0c;是湖北省人民政府、教育部和六家国家特大型企业共建高校&#xff0c;是湖北省“双一流”建设重点高校&#xff0c;入选国家“中西部…

高考志愿填报自动更新数据小程序开源版开发

高考志愿填报自动更新数据小程序开源版开发 版本一&#xff1a;java开源域名授权&#xff08;自动更新数据&#xff09;&#xff1b;5999 自研RSCH算法&#xff0c;专业和测评综合推算 微信一键登录注册&#xff0c;免注册获取微信头像、昵称 支持院校和专业优先&#xff0c;…

28 - 只出现一次的最大数字(高频 SQL 50 题基础版)

28 - 只出现一次的最大数字 select (selectnumfromMyNumbers group bynum havingcount(num)1order by num desc limit 1) as num;