0
点赞
收藏
分享

微信扫一扫

Python数据分析和科学计算

公众号:黑客编程狮,专做免费编程知识分享!

预计更新
第一章. Python 简介

  • Python 简介和历史
  • Python 特点和优势
  • 安装 Python

第二章. 变量和数据类型

  • 变量和标识符
  • 基本数据类型:数字、字符串、布尔值等
  • 字符串操作
  • 列表、元组和字典

第三章. 控制语句和函数

  • 分支结构:if/else 语句
  • 循环结构:for 和 while 循环
  • 函数
  • 参数传递与返回值
  • Lambda 表达式

第四章. 模块和文件 IO

  • 模块的概念
  • 导入模块
  • 文件 IO
  • 序列化和反序列化

第五章. 异常处理

  • 异常简介
  • try/except 语句
  • 自定义异常

第六章. 面向对象编程

  • 类和对象
  • 继承和多态
  • 属性和方法
  • 抽象类和接口

第七章. 正则表达式

  • 正则表达式概述
  • 匹配和搜索
  • 替换和分割

第八章. 并发编程

  • 多线程
  • 多进程
  • 协程和异步编程

第九章. 数据库编程

  • 关系型数据库介绍
  • 使用 SQLite 数据库
  • 使用 MySQL 数据库
  • 使用 PostgreSQL 数据库

第十章. 网络编程

  • Socket 编程简介
  • TCP Socket 编程
  • UDP Socket 编程
  • HTTP 编程

第十一章. Web 开发框架 Flask

  • Flask 简介
  • 安装 Flask
  • 路由和视图函数
  • 模板和静态文件

第十二章. 数据分析和科学计算

  • NumPy 基础
  • Pandas 基础
  • Matplotlib 基础

第十三章 机器学习入门

  • 机器学习概述
  • 监督学习和非监督学习
  • Scikit-Learn 简介
  • 利用 Scikit-Learn 进行数据预处理和模型训练

第十四章. 自然语言处理

  • 自然语言处理概述
  • 中文分词和处理
  • 文本分类和情感分析

第十五章. 游戏开发与 Pygame

  • Pygame 简介
  • Pygame 基础
  • 开发一个简单的游戏

第十二章. 数据分析和科学计算

  • NumPy 基础
  • Pandas 基础
  • Matplotlib 基础

NumPy 基础
NumPy 是一个用于科学计算的 Python 库,它提供了高效的多维数组对象以及相关工具。NumPy 的核心是 ndarray(N-dimensional array),它是一个通用的同构数据多维容器,并提供了许多高效的操作接口。除此之外,NumPy 还提供了对线性代数、随机数生成等方面的支持。

本文将从 NumPy 的安装、数组创建和操作、逐步深入到 NumPy 的高级特性,包括数组广播、数组组合、线性代数、随机数生成等方面进行详细介绍。

安装

在开始使用 NumPy 之前,需要先安装它。可以通过以下命令来安装 NumPy:

pip install numpy

安装完成后,就可以在 Python 中使用 NumPy 了。

数组创建和操作

创建数组

在 NumPy 中,最重要的对象是 ndarray,它是一个 n 维数组对象。下面是一些常用的方法来创建 ndarray。

使用 array 函数

可以使用 array 函数从 Python 列表或元组中创建一个数组:

import numpy as np

a = np.array([1, 2, 3])
b = np.array((4, 5, 6))
print(a) # 输出 [1 2 3]
print(b) # 输出 [4 5 6]

使用 arange 函数

arange 函数类似于 Python 内置的 range 函数,它返回一个 ndarray 对象,包含一个给定区间内的等间隔值:

import numpy as np

a = np.arange(10)
print(a) # 输出 [0 1 2 3 4 5 6 7 8 9]

使用 linspace 函数

linspace 函数返回一个 ndarray 对象,它包含一个给定区间内的等间隔值,但与 arange 函数不同的是,它的终止值是包含在数组中的。

import numpy as np

a = np.linspace(0, 1, 5)
print(a) # 输出 [0.   0.25 0.5  0.75 1.  ]

使用 ones 和 zeros 函数

ones 和 zeros 函数分别返回一个全为 1 或 0 的数组:

import numpy as np

a = np.ones((2, 3))
b = np.zeros((2, 3))
print(a) # 输出 [[1. 1. 1.] [1. 1. 1.]]
print(b) # 输出 [[0. 0. 0.] [0. 0. 0.]]

数组属性

每个 ndarray 都有一些基本的属性,如形状、大小和数据类型。

形状

可以通过 shape 属性获取数组的形状:

import numpy as np

a = np.array([[1, 2], [3, 4]])
print(a.shape) # 输出 (2, 2)

大小

可以通过 size 属性获取数组中元素的总数:

import numpy as np

a = np.array([[1, 2], [3, 4]])
print(a.size) # 输出 4

数据类型

可以通过 dtype 属性获取数组中元素的数据类型:

import numpy as np

a = np.array([1, 2, 3])
print(a.dtype) # 输出 int64

数组索引和切片

在 ndarray 中,可以像列表或元组那样对数组进行索引和切片。下面是一些例子:

import numpy as np

a = np.array([[1, 2], [3, 4], [5, 6]])

# 索引第一个元素
print(a[0, 0]) # 输出 1

# 切片取出前两行
print(a[:2]) # 输出 [[1 2] [3 4]]

# 切片取出第二列
print(a[:, 1]) # 输出 [2 4 6]

数组的运算

NumPy 支持很多数组的运算,包括数学运算、逻辑运算和比较运算等。下面是一些常用的运算:

数学运算

import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 加法
print(a + b) # 输出 [5 7 9]

# 减法
print(a - b) # 输出 [-3 -3 -3]

# 乘法
print(a * b) # 输出 [4 10 18]

# 除法
print(b / a) # 输出 [4.  2.5 2. ]

逻辑运算

import numpy as np

a = np.array([True, False, True])
b = np.array([False, False, True])

# 逻辑与
print(np.logical_and(a, b)) # 输出 [False False  True]

# 逻辑或
print(np.logical_or(a, b)) # 输出 [ True False  True]

# 逻辑非
print(np.logical_not(a)) # 输出 [False  True False]

比较运算

import numpy as np

a = np.array([1, 2, 3])
b = np.array([2, 2, 2])

# 大于
print(a > b) # 输出 [False False  True]

# 小于等于
print(a <= b) # 输出 [ True  True False]

# 等于
print(a == b) # 输出 [False  True False]

广播

当 NumPy 对两个数组进行运算时,它会检查这些数组的形状是否相容。如果数组的形状不同,NumPy 会尝试广播它们,以使它们的形状相同。例如,当某一个数组的维度比另一个数组少的时候,NumPy 会自动将其扩展到相应的形状。

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([10, 20])

print(a + b) # 输出 [[11 22] [13 24]]

上面的例子中,因为数组 a 的形状是 (2, 2),而数组 b 的形状是 (2,),所以 NumPy 将 b 扩展成了 (2, 2) 的形状,然后再进行加法运算。

数组组合

在 NumPy 中,可以使用 concat、stack 和 hstack 等函数来将多个数组组合在一起。

concat 函数

concat 函数用于连接沿现有轴的序列号数据。它接受一个序列类型的参数,并返回一个串联好的 ndarray 对象。

import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

c = np.concatenate((a, b))
print(c) # 输出 [1 2 3 4 5 6]

stack 函数

stack 函数用于沿新轴堆叠数组序列。它接受一个序列类型的参数,并返回一个沿新轴串联好的 ndarray 对象。

import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

c = np.stack((a, b), axis=0)
print(c) # 输出 [[1 2 3] [4 5 6]]

hstack 函数

hstack 函数用于在水平方向上堆叠数组序列。它接受一个序列类型的参数,并返回一个水平方向串联好的 ndarray 对象。

import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

c = np.hstack((a, b))
print(c) # 输出 [1 2 3 4 5 6]

线性代数

NumPy 提供了许多线性代数相关的函数,包括矩阵乘法、逆矩阵、特征值和特征向量等。下面是一些常用的线性代数函数:

矩阵乘法

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])

c = np.dot(a, b)
print(c) # 输出 [[19 22] [43 50]]

逆矩阵

import numpy as np

a = np.array([[1, 2], [3, 4]])

b = np.linalg.inv(a)
print(b) # 输出 [[-2.   1. ] [ 1.5 -0.5]]

特征值和特征向量

import numpy as np

a = np.array([[1, 2], [3, 4]])

w, v = np.linalg.eig(a)
print(w) # 输出 [5.37228132 -0.37228132]
print(v) # 输出 [[-0.82456484 -0.41597356] [ 0.56576746 -0.90937671]]

随机数生成

NumPy 提供了许多随机数生成函数,可以用于模拟实验结果或测试代码的行为。下面是一些常用的随机数生成函数:

rand 函数

import numpy as np

# 生成一个形状为 (2, 3) 的随机数组
a = np.random.rand(2, 3)
print(a)

randn 函数

import numpy as np

# 生成一个形状为 (2, 3) 的随机数组,元素服从标准正态分布
a = np.random.randn(2, 3)
print(a)

randint 函数

import numpy as np

# 生成一个随机整数,范围在 [0, 10) 内
a = np.random.randint(0, 10)
print(a)

总结

本文介绍了 NumPy 的基础操作,包括数组的创建和操作、数组的运算、广播、数组组合、线性代数和随机数生成等方面。NumPy 是一个十分强大的库,可以极大地提高 Python 在科学计算方面的效率。对于需要进行数值计算的应用,使用 NumPy 库可以使代码更简洁、更易读,并且能够处理大规模数据集。

Pandas 基础
Pandas 是一个用于数据分析和处理的 Python 库,它提供了高效、灵活和易于使用的数据结构来操纵数值表格和时间序列数据。Pandas 的核心是两个数据结构:Series 和 DataFrame,它们可以轻松地处理各种不同类型、大小和形状的数据。除此之外,Pandas 还提供了许多数据清洗、数据转换和数据聚合等操作。

本文将从 Pandas 的安装、Series 和 DataFrame 的创建和操作、数据清洗、数据转换和数据聚合等方面进行详细介绍。

安装

在开始使用 Pandas 之前,需要先安装它。可以通过以下命令来安装 Pandas:

pip install pandas

安装完成后,就可以在 Python 中使用 Pandas 了。

Series 和 DataFrame

Pandas 提供了两种基本数据结构:Series 和 DataFrame。

Series

Series 是一种类似于数组的一维数据结构,它包含了一组数据以及与之相关的标签(索引)。可以使用以下方式创建一个 Series:

import pandas as pd

s = pd.Series([1, 2, 3, 4])
print(s)

输出结果为:

0    1
1    2
2    3
3    4
dtype: int64

从输出结果中可以看出,Series 包含了一组数据,它们被自动分配了索引,这里是默认的数字索引。可以通过以下方式获取 Series 的值和索引:

import pandas as pd

s = pd.Series([1, 2, 3, 4])
print(s.values) # 输出 [1 2 3 4]
print(s.index) # 输出 RangeIndex(start=0, stop=4, step=1)

DataFrame

DataFrame 是一种二维表格数据结构,它包含了一组有序的列,每一列可以是不同的数据类型(数值、字符串、布尔值等)。可以使用以下方式创建一个 DataFrame:

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 30, 35, 40],
    'gender': ['F', 'M', 'M', 'M']
}

df = pd.DataFrame(data)
print(df)

输出结果为:

name  age gender
0     Alice   25      F
1       Bob   30      M
2   Charlie   35      M
3     David   40      M

从输出结果中可以看出,DataFrame 包含了三列数据,分别是姓名、年龄和性别。由于每一列可以是不同的数据类型,因此 Pandas 自动选择了合适的数据类型(如字符串和整数)。

数据操作

Pandas 支持对 Series 和 DataFrame 进行许多不同类型的操作,包括选取子集、排序、填充缺失值等。

选取子集

可以使用 loc 和 iloc 函数选取 DataFrame 的子集。

loc 函数用于选取行和列,可以使用标签(索引)来选择:

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 30, 35, 40],
    'gender': ['F', 'M', 'M', 'M']
}

df = pd.DataFrame(data)
print(df.loc[2, 'name']) # 输出 Charlie

iloc 函数用于选取行和列,可以使用位置(整数)来选择:

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 30, 35, 40],
    'gender': ['F', 'M', 'M', 'M']
}

df = pd.DataFrame(data)
print(df.iloc[2, 0]) # 输出 Charlie

排序

可以使用 sort_values 函数对 DataFrame 进行排序,可以按照某一列或多个列进行排序。以下是按照 age 列进行升序排序的示例:

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 30, 35, 40],
    'gender': ['F', 'M', 'M', 'M']
}

df = pd.DataFrame(data)
print(df.sort_values('age')) # 按照 age 列进行升序排序

输出结果为:

name  age gender
0     Alice   25      F
1       Bob   30      M
2   Charlie   35      M
3     David   40      M

填充缺失值

可以使用 fillna 函数填充 DataFrame 中的缺失值。以下是在 DataFrame 中添加一个缺失值并使用 fillna 函数进行填充的示例:

import pandas as pd
import numpy as np

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, np.nan, 35, 40],
    'gender': ['F', 'M', 'M', 'M']
}

df = pd.DataFrame(data)
print(df.fillna(0)) # 将缺失值填充为 0

输出结果为:

name   age gender
0     Alice  25.0      F
1       Bob   0.0      M
2   Charlie  35.0      M
3     David  40.0      M

数据清洗

数据清洗是数据预处理的一个重要步骤,它可以帮助我们发现和纠正数据集中的错误、缺失值、重复值等问题。Pandas 提供了许多函数来进行数据清洗。

处理缺失值

在实际使用中,经常会出现缺失值的情况,需要对缺失值进行处理。可以使用 dropna 函数删除包含缺失值的行或列,或者使用 fillna 函数填充缺少的值。

以下是在 DataFrame 中添加一个缺失值并使用 fillna 函数进行填充的示例:

import pandas as pd
import numpy as np

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, np.nan, 35, 40],
    'gender': ['F', 'M', 'M', 'M']
}

df = pd.DataFrame(data)
print(df.fillna(0)) # 将缺失值填充为 0

输出结果为:

name   age gender
0     Alice  25.0      F
1       Bob   0.0      M
2   Charlie  35.0      M
3     David  40.0      M

处理重复值

当数据集中存在重复的行时,可能会影响到分析结果,因此需要将其去重。可以使用 drop_duplicates 函数删除 DataFrame 中的重复行。

以下是在 DataFrame 中添加一个重复的行并使用 drop_duplicates 函数进行去重的示例:

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Bob'],
    'age': [25, 30, 35, 40, 30],
    'gender': ['F', 'M', 'M', 'M', 'M']
}

df = pd.DataFrame(data)
print(df.drop_duplicates()) # 去重

输出结果为:

name  age gender
0     Alice   25      F
1       Bob   30      M
2   Charlie   35      M
3     David   40      M

数据转换

数据转换是指将原始数据进行处理,得到我们需要的数据类型或格式。Pandas 提供了许多函数来进行数据转换。

类型转换

可以使用 astype 函数将 DataFrame 中的数据类型进行转换。以下是将 age 列的数据类型从 float64 转换为 int32 的示例:

import pandas as pd data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 30, 35, 40],
    'gender': ['F', 'M', 'M', 'M']
}

df = pd.DataFrame(data)
df['age'] = df['age'].astype('int32')
print(df.dtypes) # 输出每列的数据类型

输出结果为:

name      object
age        int32
gender    object
dtype: object

数据合并

在实际应用中,经常需要将多个数据源进行合并。Pandas 提供了许多函数来进行数据合并。

以下是通过 merge 函数将两个 DataFrame 中的数据进行合并的示例:

import pandas as pd

data1 = {
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 30, 35, 40],
    'gender': ['F', 'M', 'M', 'M']
}

data2 = {
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'salary': [3000, 4000, 5000, 6000],
}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
result = pd.merge(df1, df2, on='name')
print(result)

输出结果为:

name  age gender  salary
0     Alice   25      F    3000
1       Bob   30      M    4000
2   Charlie   35      M    5000
3     David   40      M    6000

数据聚合

数据聚合是指按照某一或某几个维度对数据进行统计分析。Pandas 提供了许多函数来进行数据聚合。

以下是使用 groupby 函数对 DataFrame 中的数据进行聚合的示例:

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eric'],
    'age': [25, 30, 35, 40, 30],
    'gender': ['F', 'M', 'M', 'M', 'M'],
    'salary': [3000, 4000, 5000, 6000, 4000]
}

df = pd.DataFrame(data)
result = df.groupby('gender')['salary'].mean()
print(result)

输出结果为:

gender
F    3000.000000
M    4666.666667
Name: salary, dtype: float64

从输出结果中可以看出,根据 gender 列进行了分组,并计算了每一组的平均工资。

总结

本文介绍了 Pandas 的基础知识,包括 Series 和 DataFrame 的创建和操作、数据清洗、数据转换和数据聚合等方面。Pandas 是一个十分强大的库,可以极大地提高 Python 在数据分析和处理方面的效率。对于需要进行大规模数据分析的应用,使用 Pandas 可以使代码更简洁、更易读,并且能够处理各种不同类型、大小和形状的数据。

Matplotlib 基础
Matplotlib 是 Python 中广泛使用的可视化库。它提供了多种绘图类型和丰富的设置选项,可以轻松绘制各种类型的图表,如折线图、散点图、柱状图、饼图等等。本篇文章将从 Matplotlib 的安装、基础概念、常用绘图类型、样式设置、注释和子图等方面进行详细介绍。

安装

Matplotlib 可以通过 pip 工具进行安装。在终端或命令行中输入以下命令:

pip install matplotlib

安装完成后,在 Python 代码中导入即可开始使用。

import matplotlib.pyplot as plt

基础概念

Figure 和 Axes 对象

Matplotlib 基于面向对象的设计思想,所有的图形都是由 Figure 和 Axes 对象组成的。Figure 对象代表整个绘图区域,而 Axes 对象则代表放置在 Figure 中的具体图形。

一个 Figure 对象可以包含多个 Axes 对象,每个 Axes 对象都可以绘制不同类型的图形,如折线图、散点图、柱状图等等。在绘制图形时,需要先创建 Figure 和 Axes 对象,然后使用 Axes 对象的方法进行绘制。

层级结构

在 Matplotlib 中,图形元素的层级结构如下所示:

  • Figure 对象
  • Axes 对象
  • X 轴
  • 刻度线
  • 标签
  • Y 轴
  • 刻度线
  • 标签
  • 绘图区域
  • 线条、数据点等

坐标系

Matplotlib 中有两种坐标系:数据坐标系和显示坐标系。数据坐标系指的是绘图区域中实际的数值范围,而显示坐标系则指的是屏幕上的像素坐标。

在绘制图形时,需要将数据坐标系转换为显示坐标系。Matplotlib 提供了多种方法来进行坐标系转换,包括自动缩放、手动设置坐标轴范围等。

常用绘图类型

折线图

折线图是 Matplotlib 中最基础的图表类型之一。它可以用于展示一组数据随时间或其他连续变量的变化情况。

以下是绘制一条简单折线的示例:

import matplotlib.pyplot as plt

x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]

plt.plot(x, y)
plt.show()

运行以上代码,就可以得到一条简单的折线。

在上述例子中,使用 plot 函数将 x 和 y 数组作为参数传入,即可得到折线图。接着使用 show 函数来显示图形。

散点图

散点图可以用于展示两组数据之间的相关性或分布情况。每个数据点的位置由其对应的 x、y 值决定。

以下是绘制一个简单散点图的示例:

import matplotlib.pyplot as plt

x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]

plt.scatter(x, y)
plt.show()

运行以上代码,就可以得到一个简单散点图。

在上述例子中,使用 scatter 函数将 x 和 y 数组作为参数传入,即可得到散点图。接着使用 show 函数来显示图形。

柱状图

柱状图可以用于比较多组数据之间的大小或分布情况。每个数据点用一个矩形表示,矩形的高度表示该数据点的数值大小。

以下是绘制一个简单柱状图的示例:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y = [10, 24, 15, 20]

plt.bar(x, y)
plt.show()

运行以上代码,就可以得到一个简单柱状图。

在上述例子中,使用 bar 函数将 x 和 y 数组作为参数传入,即可得到柱状图。接着使用 show 函数来显示图形。

堆叠柱状图

堆叠柱状图可以用于展示多组数据之间的比较和分布情况。每个数据点由多个矩形叠加而成,每层矩形的高度表示该层数据点的数值大小。

以下是绘制一个简单堆叠柱状图的示例:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y1 = [10, 24, 15, 20]
y2 = [5, 12, 10, 8]

plt.bar(x, y1)
plt.bar(x, y2, bottom=y1)

plt.show()

运行以上代码,就可以得到一个简单堆叠柱状图。

在上述例子中,首先使用 bar 函数将 y1 数组作为参数传入,得到第一层矩形。接着再使用 bar 函数将 y2 数组作为参数传入,并设置 bottom 参数为 y1 数组,即可得到第二层叠加的矩形。最后使用 show 函数来显示图形。

饼图

饼图可以用于展示各部分占总体的比例关系。

以下是绘制一个简单饼图的示例:

import matplotlib.pyplot as plt

labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]

plt.pie(sizes, labels=labels)
plt.show()

运行以上代码,就可以得到一个简单饼图。

在上述例子中,使用 pie 函数将 sizes 和 labels 数组作为参数传入,即可得到饼图。接着使用 show 函数来显示图形。

内置饼图

内置饼图可以将某个扇形(或多个扇形)从饼图中割离出来,以突出显示其重要性。

以下是绘制一个简单内置饼图的示例:

import matplotlib.pyplot as plt

labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)

plt.pie(sizes, labels=labels, explode=explode)
plt.show()

运行以上代码,就可以得到一个简单内置饼图。

在上述例子中,使用 pie 函数将 sizes 和 labels 数组作为参数传入,并设置 explode 参数为一个元组,即可得到内置饼图。接着使用 show 函数来显示图形。

直方图

直方图可以用于展示一组数据的分布情况,它将数值划分为多个区间,每个区间用一个矩形表示。

以下是绘制一个简单直方图的示例:

import matplotlib.pyplot as plt

data = [1, 2, 3, 3, 4, 5, 6, 6, 6, 7]

plt.hist(data)
plt.show()

运行以上代码,就可以得到一个简单直方图。

在上述例子中,使用 hist 函数将 data 数组作为参数传入,即可得到直方图。接着使用 show 函数来显示图形。

样式设置Matplotlib 提供了多种方法来对图形进行样式设置,包括线条颜色、线型、标记、填充颜色、字体、标题等。

线条样式

可以使用 plot 函数的参数来指定线条的样式。以下是一些常用的线条样式:

  • 颜色:color 或 c 参数,如 ‘r’ 表示红色,‘g’ 表示绿色。
  • 线型:linestyle 或 ls 参数,如 ‘-’ 表示实线,‘–’ 表示虚线,‘:’ 表示点线,‘-.’ 表示点划线。
  • 标记:marker 参数,如 ‘o’ 表示圆点,‘s’ 表示正方形,‘+’ 表示加号。

例如:

import matplotlib.pyplot as plt

x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]

plt.plot(x, y, color='r', linestyle='--', marker='o')
plt.show()

运行以上代码,就可以得到一条红色虚线,并在每个数据点处显示圆点的折线。

填充颜色

可以使用 fill_between 函数来填充折线和 X 轴之间的区域。

例如:

import matplotlib.pyplot as plt

x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]

plt.plot(x, y)
plt.fill_between(x, y, alpha=0.2)
plt.show()

运行以上代码,就可以得到一条简单折线,并在折线和 X 轴之间填充颜色的图形。

标题和标签

可以使用 title 函数来添加标题,xlabel 和 ylabel 函数来添加 X 轴和 Y 轴标签。

例如:

import matplotlib.pyplot as plt

x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]

plt.plot(x, y)
plt.title('My plot')
plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.show()

运行以上代码,就可以得到一条带有标题和标签的折线。

字体设置

可以使用 rcParams 参数来设置字体的大小、样式等。以下是一些常用的字体参数:

  • 字体:fontfamily 或 fontname 参数,如 ‘Arial’ 表示 Arial 字体,‘Times New Roman’ 表示 Times New Roman 字体。
  • 大小:fontsize 或 size 参数,如 12 表示字体大小为 12。

例如:

import matplotlib.pyplot as plt

plt.rcParams['font.family'] = 'Arial'
plt.rcParams['font.size'] = 12

x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]

plt.plot(x, y)
plt.title('My plot')
plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.show()

运行以上代码,就可以得到一条带有设置字体的折线。

注释

Matplotlib 提供了多种方法来为图形添加注释,包括文本、箭头、图例等。

文本注释

可以使用 text 函数在图形中添加文本注释。需要指定文本的位置和内容。

例如:

import matplotlib.pyplot as plt

x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]

plt.plot(x, y)
plt.text(2, 10, 'Maximum value')
plt.show()

运行以上代码,就可以得到一条带有文本注释的折线。

在上述例子中,使用 text 函数将文本内容和位置作为参数传入,即可得到文本注释。接着使用 show 函数来显示图形。

箭头注释

可以使用 annotate 函数在图形中添加箭头注释。需要指定箭头的起始位置、结束位置和文本内容。

例如:

import matplotlib.pyplot as plt

x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]

plt.plot(x, y)
plt.annotate('Maximum', xy=(2, 10), xytext=(3, 12),
             arrowprops=dict(facecolor='black', shrink=0.05))
plt.show()

运行以上代码,就可以得到一条带有箭头注释的折线。

在上述例子中,使用 annotate 函数将箭头的起始位置、结束位置和文本内容作为参数传入,并使用 arrowprops 参数来设置箭头的样式,即可得到箭头注释。接着使用 show 函数来显示图形。

图例

可以使用 legend 函数在图形中添加图例。需要指定每个数据系列的标签。

例如:

import matplotlib.pyplot as plt

x = [0, 1, 2, 3, 4]
y1 = [0, 1, 4, 9, 16]
y2 = [0, 2, 5, 10, 17]

plt.plot(x, y1, label='A')
plt.plot(x, y2, label='B')
plt.legend()
plt.show()

运行以上代码,就可以得到一条带有图例的折线。

在上述例子中,使用 plot 函数绘制多个数据系列,并使用 label 参数为每个数据系列指定标签。接着使用 legend 函数来显示图例,即可得到图例注释。接着使用 show 函数来显示图形。

保存图像

Matplotlib 可以将图像保存为 PNG、PDF、SVG 等格式的文件。

可以使用 savefig 函数来保存图像。需要指定要保存的文件路径和文件类型。

例如:

import matplotlib.pyplot as plt

x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]

plt.plot(x, y)
plt.title('My plot')
plt.xlabel('X axis')
plt.ylabel('Y axis')

plt.savefig('my_plot.png')

运行以上代码,就可以将图像保存为名为 my_plot.png 的文件。

在上述例子中,使用 savefig 函数将当前图像保存为一个 PNG 文件。接着使用 show 函数来显示图形。##

总结

Matplotlib 是一个功能强大的 Python 数据可视化库,可以绘制多种类型的图表,并提供了丰富的样式设置和注释功能。

本文介绍了 Matplotlib 中常用的绘图函数和样式设置方法,包括线型、标记、填充颜色、字体、标题等。同时也讲解了如何添加注释和保存图像等常见操作。

掌握了 Matplotlib 的基本用法,你就可以使用 Python 来绘制各种类型的数据图表,从而更好地理解和展示数据的特征和规律。

举报

相关推荐

0 条评论