【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 = 0for bar in bars:i+=1height = 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.rhkb.cn/news/342540.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux网络】传输层协议 - UDP

文章目录 一、传输层(运输层)运输层的特点复用和分用再谈端口号端口号范围划分认识知名端口号(Well-Know Port Number)两个问题① 一个进程是否可以绑定多个端口号?② 一个端口号是否可以被多个进程绑定? n…

最大的游戏交流社区Steam服务器意外宕机 玩家服务受影响

易采游戏网6月3日消息:众多Steam游戏玩家报告称,他们无法访问Steam平台上的个人资料、好友列表和社区市场等服务。同时,社区的讨论功能也无法正常使用。经过第三方网站SteamDB的确认,,这一现象是由于Steam社区服务器突…

德国西门子论未来质量管理 - 如何与明天相遇?

未来制造业的质量 -- 如何用软件方案满足质量要求 作者:Bill Butcher 翻译&编辑:数字化营销工兵 【前言】在Frost&Sullivan最近发表的一份白皮书中,他们讨论了制造业的质量投资。质量是制造过程的关键要素,但似乎比其他…

《精通ChatGPT:从入门到大师的Prompt指南》大纲目录

第一部分:入门指南 第1章:认识ChatGPT 1.1 ChatGPT是什么 1.2 ChatGPT的应用领域 1.3 为什么需要了解Prompt 第2章:Prompt的基本概念 2.1 什么是Prompt 2.2 好Prompt的特征 2.3 常见的Prompt类型 第二部分:Prompt设计技巧 第…

MySQL报ERROR 2002 (HY000)解决

今天在连接客户服务器时MySQL的时候报: ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql/mysql.sock’ (2) [rootXXX ~]# mysql -uroot -p Enter password: ERROR 2002 (HY000): Can’t connect to local MySQL server through socket…

【高校科研前沿】新疆生地所陈亚宁研究员团队在GeoSus发文:在1.5°C和2°C全球升温情景下,中亚地区暴露于极端降水的人口增加

目录 文章简介 1.研究内容 2.相关图件 3.文章引用 文章简介 论文名称:Increased population exposures to extreme precipitation in Central Asia under 1.5 ◦C and 2 ◦C global warming scenarios(在1.5C和2C全球变暖情景下,中亚地区…

服务器硬件基础知识学习

服务器硬件基础知识涵盖了从CPU到存储,再到网络连接和总线技术等关键组件。 1. 处理器 - 两大流派:我们常用的处理器主要分为Intel和AMD两大阵营。Intel的Xeon系列和AMD的EPYC系列都是专为服务器设计的,它们支持多核处理,能够应对…

【ARFoundation自学05】人脸追踪(AR Face manager)实现

1. 修改摄像机朝向渲染方式-选中user 这个方式就会调用前置摄像头 2 创建 AR Session、XR Origin,然后在XR Origin上面添加组件 注意:XR Origin 老版本仍然叫 AR Session Origin 接下来在XR Origin上面添加AR Face Manager组件,如下图&am…

【算法速查】万字图解带你快速入门八大排序(下)

君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,首先在这里祝大家中秋国庆双节同乐!!抓住假期的小尾巴,今天来把算法速查的八大排序的后续写完,当…

【数据结构】C语言实现二叉树的基本操作——二叉树的遍历(先序遍历、中序遍历、后序遍历)

C语言实现二叉树的基本操作 导读一、二叉树的遍历二、先序遍历三、中序遍历四、后序遍历五、结点序列六、递归算法与非递归算法的转化结语 导读 大家好,很高兴又和大家见面啦!!! 通过前面的介绍,我们已经认识了二叉树…

一文搞懂常见的数据拆分方案

常见的几种数据拆分方案 1、客户端分片 直接在应用层实现读取分片规则,解析规则,根据规则实现切分逻辑。 这种方案优缺点: 侵入业务(缺点); 实现简单,适合快速上线,容易定位问题; 对开发人员…

QT 信号和槽 一对多关联示例,一个信号,多个槽函数响应,一个信号源如何绑定多个槽函数

在窗体里放置一个单行文本编辑控件(QLineEdit)、一个标签控件(QLabel)和一个文本浏览控件(QTextBrowser),在单行文 本编辑控件里的文本被编辑时,标签控件和文本浏览控件都会同步显示…

Polar Web 【简单】- 被黑掉的站

Polar Web 【简单】- 被黑掉的站 Contents Polar Web 【简单】- 被黑掉的站思路EXP运行&总结 思路 如题目所述,这是一个被黑掉的站点,由此不禁要了解该黑客发现了哪些可以入手的路径,或是留下了什么样的文件供持续访问。 目录扫描该站点发…

前端工程化工具系列(九)—— mddir(v1.1.1):自动生成文件目录结构工具

mddir 是一个基于项目目录结构动态生成 Markdown 格式目录结构的工具,方便开发者在文档中展示文件和文件夹的组织结构。 1. 安装 全局安装改工具,方便用于各个项目。 pnpm i -g mddir2. 使用 在想要生成目录接口的项目内打开命令行工具,输…

【vue3+pinia+uniapp项目问题:使用pinia状态管理时store的数据更新,模板渲染视图不能实时更新】

在这里选择不同的学校后,发现store里面的数据打印出来能更新,但是使用store的数据打印出来并未实时更新且渲染在模板上,必须手动刷新视图才能更新。 原因是因为使用了解构赋值传入参数 解决方法 1.使用computed 现在视图能进行实时更新…

【机器学习】GLM4-9B-Chat大模型/GLM-4V-9B多模态大模型概述、原理及推理实战

​​​​​​​ 目录 一、引言 二、模型简介 2.1 GLM4-9B 模型概述 2.2 GLM4-9B 模型架构 三、模型推理 3.1 GLM4-9B-Chat 语言模型 3.1.1 model.generate 3.1.2 model.chat 3.2 GLM-4V-9B 多模态模型 3.2.1 多模态模型概述 3.2.2 多模态模型实践 四、总结 一、引言…

各平台对象存储

一、阿里云对象存储 官方文档:https://help.aliyun.com/zh/oss/getting-started/getting-started-with-oss?spma2c4g.11186623.0.0.299a646c6nWWcW 1.引入maven 官网:https://help.aliyun.com/zh/oss/developer-reference/java-installation?spma2c…

【代码随想录】【算法训练营】【第30天】 [322]重新安排行程 [51]N皇后 [37]解数独

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 30,周四,好难,会不了一点~ 题目详情 [322] 重新安排行程 题目描述 322 重新安排行程 解题思路 前提:…… 思路:回溯。 重点&…

Android 开机动画的启动过程BootAnimation(基于Android10.0.0-r41)

文章目录 Android 开机动画的启动过程BootAnimation(基于Android10.0.0-r41)1.开机动画的启动过程概述2.为什么设置了属性之后就会播放? Android 开机动画的启动过程BootAnimation(基于Android10.0.0-r41) 1.开机动画的启动过程概述 下面就是BootAnimation的重要部…

Ubuntu系统中Apache Web服务器的配置与实战

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…