【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()

三、效果展示

出生数和死亡数折线图

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

  • 25
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值