如何系统的学习python中的numpy,pandas,matplotlib?太有用了!!!

news2024/11/25 19:31:26

前言

随着大数据、云计算和人工智能的发展,越来越多的企业需要以数据为基础做出决策。数据分析是处理大量数据的过程,分析数据以识别趋势和模式,并从数据中提取有用的信息来支持业务决策。数据分析可以应用于各种不同的领域,如营销、金融、医疗保健、教育等,可以帮助企业更好地了解市场和客户需求,提高效率和生产力,从而增加收益和利润。

Python是一种通用编程语言,具有简洁、易读、易学、可扩展和丰富的生态系统等优点,因此越来越多的数据分析师和科学家选择使用Python作为其主要工具。Python有许多开源库和工具,如Numpy、Pandas、Matplotlib和Scikit-Learn,可以用于数据处理、可视化、建模和机器学习等任务。此外,Python具有良好的社区支持和优秀的文档,使得Python对新手用户更加友好,使其更容易上手并开始使用数据。

问题很多的小明就问了:那怎么系统的学好python中的numpy,pandas,matplotlib

关注公众号:python技术训练营,精选优质文档,好玩的项目

内容

1.面试专题几十个大厂面试题
2.入门基础教程
3.11模块零基础到精通笔记
4.百个项目实战+爬虫教程+代码
5.量化交易,机器学习,深度学习
6.Python游戏源码
7.交流学习
8.了解接单市场
9.DNF自动识别打怪
10.3263页学习资料

第一章:numpy

一丶numpy基本类型

NumPy是Python中用于数值计算和科学计算的重要库之一,提供了高效的多维数组(ndarray)对象和各种用于数组计算的函数和工具。在NumPy中,数组的数据类型(dtype)是决定其内存占用和数组内容的格式的关键因素。下面是NumPy中常用的数据类型:

1.整数类型:bool、int8、uint8、int16、uint16、int32、uint32、int64、uint64

  • Bool类型:存储True或False的布尔变量
import numpy as np
arr_bool = np.array([True, False, False, True], dtype=bool) 
print(arr_bool.dtype)  # bool
  • Int类型:用于存储有符号或无符号整数,数字越大占用的内存越大,类型名中的数字表示占用的位数。
import numpy as np
arr_int8 = np.array([1, 2, 3, 4], dtype=np.int8)
arr_uint16 = np.array([10, 100, 1000], dtype=np.uint16)

2.浮点类型:float16、float32、float64、float128

  • Float类型:用于存储带有小数点的数字,数字占用的空间越大,数据精度更高。
import numpy as np
arr_float32 = np.array([0.0, 1.0, -1.5, 2.8], dtype=np.float32)
arr_float64 = np.array([0.0, 1.0, -1.5, 2.8], dtype=np.float64)

3.复数类型:complex64、complex128、complex256

  • Complex类型:用于存储复数,complex64表示由两个32位的浮点数组成,一个表示实数部分,一个表示虚数部分。
import numpy as np
arr_complex = np.array([1+2j, 2+3j, 3+4j], dtype=np.complex128)

4.字符串类型:string

  • String类型:用于存储字符串,最长的字符串长度为指定长度。
import numpy as np
arr_str = np.array(['a', 'b', 'c'], dtype=np.string_) #或者 dtype='S1'

5.日期类型:datetime64、timedelta64

  • Datetime类型:用于表示日期和时间,datetime64是用于日期的类型,timedelta64是用于时间差的类型。
import numpy as np
arr_date = np.array(['2022-05-01 12:00:00', '2022-05-02 13:23:35'], dtype='datetime64')

在使用numpy进行数值计算时,正确选择合适的数组类型能够减少内存占用和操作时间,提高代码的效率。因此,了解和理解NumPy数组类型是非常重要的。

二丶numpy基础数据结构

NumPy是Python中用于数值计算和科学计算的重要库之一,提供了高效的多维数组(ndarray)对象和各种用于数组计算的函数和工具。在NumPy中,数组是基本的数据结构,可以用于存储和处理任何数值类型的数据。

1.一维数组:
一维数组也称为一阶数组,是最基本的数组。它包含一系列相同数据类型的元素,并按线性方式排列。可以通过索引访问数组中的元素。

import numpy as np
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)

2.二维数组:
二维数组也称为二阶数组,可以理解为包含多个一维数组的数组,称为行和列。二维数组中每个元素由两个坐标索引指定,一个表示行号,一个表示列号。

import numpy as np
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)

3.三维数组:
三维数组也称为三阶数组,由多个二维数组组成,称为深度。每个元素由三个坐标索引指定,分别表示行,列和深度。

import numpy as np
arr3 = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print(arr3)

4.多维数组:
多维数组可以理解为包含多个n-1维数组的数组,可以是任意维数。在NumPy中,可以用ndim属性来获取数组的维数。

import numpy as np
arr4 = np.array([1, 2, 3], ndmin=5)
print(arr4)
print('数组的维度:', arr4.ndim)

NumPy中的数组数据结构比Python中的list更加灵活和高效,因为NumPy中的数组是按照连续的块存储在内存中的,并且提供了各种数组操作函数和算法,可以满足大量数值计算和科学计算的需求。

三丶numpy通用函数

NumPy(Numerical Python)是用于科学计算和数据分析的Python库之一,在其子模块中包含了许多用于处理多维数组的通用函数(ufuncs)。这些通用函数可以对数组中的元素进行逐个操作,产生一个或多个输出,通常不改变输入数据的形状大小。以下是NumPy中一些常用的通用函数:

1.算术运算:add、subtract、multiply、divide、power、mod、remainder、abs

import numpy as np
x = np.array([1,2,3])
y = np.array([4,5,6])
print(np.add(x, y))     # [5 7 9]
print(np.subtract(x, y)) # [-3 -3 -3]
print(np.multiply(x, y)) # [4 10 18]
print(np.divide(x, y))   # [0.25 0.4  0.5 ]
print(np.power(x, 2))    # [1 4 9]
print(np.mod(y, 2))      # [0 1 0] 
print(np.remainder(y, 2)) # [0 1 0]
print(np.abs([-1,-2,3]))     # [1 2 3]

2.统计函数:mean、std、var、sum、prod、min、max

import numpy as np
arr = np.array([1, 2, 3, 4])
print(np.mean(arr))   # 2.5
print(np.std(arr))    # 1.118033988749895
print(np.var(arr))    # 1.25
print(np.sum(arr))    # 10
print(np.prod(arr))   # 24
print(np.min(arr))    # 1
print(np.max(arr))    # 4

3.三角函数:sin、cos、tan、arcsin、arccos、arctan

import numpy as np
x = np.array([0, 30, 45, 60, 90])
print(np.sin(np.deg2rad(x)))  # [0.         0.5        0.70710678 0.8660254  1.        ]
print(np.cos(np.deg2rad(x)))  # [1.         0.8660254  0.70710678 0.5        0.        ]
print(np.tan(np.deg2rad(x)))  # [0.         0.57735027 1.         1.73205081        inf]
print(np.arcsin(0.5))         # 0.5235987755982989
print(np.arccos(0.5))         # 1.0471975511965979
print(np.arctan(1))           # 0.7853981633974483

4.逻辑运算:greater、less、equal、logical_and、logical_or

import numpy as np
x = np.array([1, 2, 3])
y = np.array([2, 2, 2])
print(np.greater(x, y))            # [False False  True]
print(np.less(x, y))               # [ True False False]
print(np.equal(x, y))              # [False  True False]
print(np.logical_and(x > 1, y < 3)) # [ True  True False]
print(np.logical_or(x < 2, y > 2))  # [ True False  True]

这些通用函数是使用NumPy进行科学计算和数据分析的基础,掌握它们是非常重要的。需要注意的是,在处理大量数据时,使用通用函数可以显著提高程序的执行速度。

四丶numpy索引及切片

NumPy是Python中用于数值计算和科学计算的重要库之一,提供了高效的多维数组(ndarray)对象和各种用于数组计算的函数和工具。在NumPy中,可以使用索引和切片来访问数组元素和子数组。

1.索引

在NumPy中,可以使用方括号[]访问数组中的元素,索引从0开始。可以使用整数或整数序列来指定索引,多个索引可以使用逗号分隔。

import numpy as np
arr = np.array([[1,2,3], [4,5,6]])
print(arr[0, 1])       # 2
print(arr[1])          # [4 5 6]
print(arr[1][2])       # 6
print(arr[1, -2:])     # [5 6]

2.切片

在NumPy中,可以使用切片来访问数组中的子数组,切片用冒号分隔开始和结束索引,返回的是原始数组的子数组,没有进行数据拷贝。可以使用[start🔚step]来定制切片。

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
print(arr[1:5])        # [2 3 4 5]
print(arr[:4])         # [1 2 3 4]
print(arr[4:])         # [5 6 7]
print(arr[::2])        # [1 3 5 7]

对于多维数组,可以对不同维度的切片使用不同的语法:

import numpy as np
arr = np.array([[1,2,3], [4,5,6], [7,8,9]])
print(arr[:2, 1:])      # [[2 3]
                        #  [5 6]]

print(arr[1, :2])       # [4 5]

print(arr[2, ::-1])     # [9 8 7]

需要注意的是,NumPy中的切片与Python中的切片略有不同,主要体现在切片结束点是开区间,不包含结束索引对应的元素,而Python中是闭区间,包含结束索引对应的元素。

五丶numpy随机数

NumPy提供了生成各种分布随机数的函数和工具,这些随机数生成器是伪随机数,基于确定性算法产生的序列,但是看起来像是随机的。

下面是一些常用的随机数函数:

1.np.random.random(size=None)

该函数返回一个[0, 1)之间的随机浮点数,可以使用size参数来指定要生成的随机数数组的形状。

import numpy as np
print(np.random.random())          # 生成一个[0, 1)之间的随机浮点数
print(np.random.random(size=5))    # 生成一个包含5个[0, 1)之间的随机浮点数的一维数组
print(np.random.random(size=(2, 3)))# 生成一个2 x 3的二维数组,其中包含[0, 1)之间的随机浮点数

2.np.random.randint(low, high=None, size=None, dtype=‘l’)

该函数返回一个位于闭区间 [low, high) 之间的随机整数(不包括 high),可以使用 size 参数来指定所需随机数数组的形状,使用 dtype 参数来指定数据类型。

import numpy as np
print(np.random.randint(0, 5))           # 生成一个[0, 5)之间的随机整数
print(np.random.randint(1, size=5))      # 生成一个[0, 1)之间的随机整数数组
print(np.random.randint(1, 5, size=(2,3)))# 生成一个2 x 3的随机整数数组,其中元素位于闭区间[1, 5)
print(np.random.randint(1, 5, size=(2,3), dtype=np.int16)) # 指定数组数据类型为int16

3.np.random.normal(loc=0.0, scale=1.0, size=None)

该函数返回一个满足指定均值和标准差的高斯分布样本,可以使用loc指定均值,使用scale指定标准差。

import numpy as np
print(np.random.normal())           # 生成一个均值为0,标准差为1的高斯分布样本
print(np.random.normal(size=5))     # 生成包含5个高斯分布样本的一维数组
print(np.random.normal(loc=2.0, scale=0.5, size=(2,3))) # 生成2 x 3的数组,均值为2.0,标准差为0.5

4.np.random.random_sample(size=None)

该函数返回一个[0, 1)之间的随机浮点数,可以使用size参数来指定要生成的随机数数组的形状。

import numpy as np
print(np.random.random_sample())      # 生成一个[0, 1)之间的随机浮点数
print(np.random.random_sample(size=5))# 生成包含5个[0, 1)之间的随机浮点数的一维数组
print(np.random.random_sample(size=(2, 3))) # 生成2 x 3的随机浮点数数组,元素位于[0, 1)

5.np.random.seed(seed=None)

该函数用于生成随机数生成器的种子,可以使用整数指定特定的种子,这样每次生成的随机序列都将相同。如果不指定种子,则使用系统时间作为种子。

import numpy as np
np.random.seed(10)       # 指定随机种子为10
print(np.random.random()) # 生成0.77132064
np.random.seed(10)
print(np.random.random()) # 生成0.77132064,与上面的一样

第二章:pandas

一丶pandas核心概念

Pandas是Python编程语言的一个开放源代码软件库,用于数据处理和数据分析。它提供了一些数据结构和函数,使数据操作更简单、更快速。下面是Pandas的一些核心概念。

1.Series

Series是Pandas中最基础的数据结构,类似于numpy中的一维数组。它由两个数组构成,一个数组是数据部分,另一个数组是索引部分,索引部分可以自定义。

import pandas as pd

s = pd.Series([1, 3, 5, np.nan, 6, 8])
print(s)

输出结果:

0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64

2.DataFrame

DataFrame是Pandas中最重要的数据结构,它是由多个Series按照一定的规则排列构成的二维表格,每个Series对应表格中的一列。

import pandas as pd
import numpy as np

data = {'name': ['Alice', 'Bob', 'Charlie'], 
        'age': [22, 25, 20],
        'gender': ['F', 'M', 'M']}
df = pd.DataFrame(data)
print(df)

输出结果:

       name  age gender
0     Alice   22      F
1       Bob   25      M
2  Charlie   20      M

3.Index

Index是Pandas中非常重要的数据结构,它是一种类似于元组的不可变序列。Index主要用于对DataFrame和Series中的行和列进行标记和索引,使用索引可以方便地对数据进行筛选、切片等操作。

import pandas as pd
import numpy as np

s = pd.Series([1, 3, 5, np.nan, 6, 8], index=['a', 'b', 'c', 'd', 'e', 'f']) # 自定义索引
print(s)

输出结果:

a    1.0
b    3.0
c    5.0
d    NaN
e    6.0
f    8.0
dtype: float64

4.Selection、slicing、indexing

Pandas提供了丰富的数据选择、切片、索引功能。使用这些功能可以方便地对DataFrame和Series进行筛选、切片、索引等操作。

import pandas as pd
import numpy as np

data = {'name': ['Alice', 'Bob', 'Charlie'], 
        'age': [22, 25, 20],
        'gender': ['F', 'M', 'M']}
df = pd.DataFrame(data)

# 选择name列
print(df['name'])

# 选择前两行
print(df[:2])

# 选择年龄大于20的行
print(df[df['age'] > 20])

# 选择name列和age列
print(df.loc[:, ['name', 'age']])

5.Operations

Pandas提供了很多数据处理和操作功能,包括数据聚合、分组、重塑、过滤等。这些功能可以方便地对数据进行处理和分析。

import pandas as pd
import numpy as np

data = {'name': ['Alice', 'Bob', 'Charlie'], 
        'age': [22, 25, 20],
        'gender': ['F', 'M', 'M']}
df = pd.DataFrame(data)

# 计算年龄的平均值
print(df['age'].mean())

# 按性别分组计算平均年龄
print(df.groupby('gender')['age'].mean())

# 对数据进行重塑
print(df.pivot(index='name', columns='gender', values='age'))

二丶数据结构series索引

Pandas中的Series是一种带标签的一维数组结构,可以看作是一个单列的DataFrame。

Series的索引提供了一种访问数据的方法。在Pandas中,Series的索引有两种类型:隐式索引(整数索引)和显式索引(自定义索引)。下面将深入介绍这两种索引的用法。

1.隐式索引(整数索引)

Series对象的隐式索引是从0开始的连续整数值。通过位置访问一个Series中的值需要用到隐式索引。具体用法如下:

import pandas as pd

# 定义一个Series对象
s = pd.Series([1, 3, 5, 7, 9])

# 访问元素
s[0] # 输出:1

# 切片
s[1:4] # 输出:3 5 7

# 过滤
s[s > 5] # 输出:7 9

2.显式索引(自定义索引)

显式索引是由用户定义的索引值,可以是任何标签或值,如下面给出的字符串序列、日期或者任何对象等。定义显式索引需要在Series对象初始化时通过index参数指定。具体用法如下:

import pandas as pd

# 定义一个Series对象,指定显式索引
s = pd.Series([1, 3, 5, 7, 9], index = ["a", "b", "c", "d", "e"])

# 按照标签访问元素
s["a"] # 输出:1

# 切片
s["b":"d"] # 输出:3 5 7

# 过滤
s[s > 5] # 输出:7 9

需要注意的是,由于Series对象的显式索引是用户定义的,因此不能通过位置访问,即不能用整数索引来访问元素。

除了以上基本用法,Series的索引还支持许多其他特性。例如,可以为Series对象设置名称,及使用重复索引,其具体用法如下:

为Series设置名称

import pandas as pd

# 定义一个Series对象
s = pd.Series([1, 3, 5, 7, 9], index = ["a", "b", "c", "d", "e"])
s.name = "SeriesName"  # 设置Series的名称

重复索引

import pandas as pd

# 定义一个Series对象,使用重复索引
s = pd.Series([1, 3, 5, 7, 9], index = ["a", "a", "b", "c", "d"])

# 按照标签访问元素
s["a"] # 输出:a 1 a 3

# 访问重复索引的所有值
s.loc["a"] # 输出:a 1 a 3

总的来说,Pandas的Series提供了丰富的索引功能,可以通过隐式和显式索引来访问和操作数据,便于处理和分析各种类型的数据。

三丶数据结构Dataframe基本概念及创建

Pandas中最常用的数据结构是DataFrame,它是一个由行和列构成的二维表格。与Excel中的工作表类似,DataFrame允许我们将数据按照行和列组织起来,并且提供了一系列强大的数据处理和分析工具。

1.创建DataFrame

创建Pandas中的DataFrame主要有以下几种方法:

  • 从CSV或文本文件读取数据
import pandas as pd

df = pd.read_csv('data.csv', header=0, sep=',')

其中,header=0表示将第一行作为表头,sep=',‘表示用’,'作为分隔符。

  • 从字典创建DataFrame
import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charles'], 'age': [23, 34, 45], 'sex': ['F', 'M', 'M']}
df = pd.DataFrame(data)
  • 从numpy数组创建DataFrame
import pandas as pd
import numpy as np

data = np.array([[1,2,3],[4,5,6],[7,8,9]])
df = pd.DataFrame(data, columns=['a', 'b', 'c'])

2.DataFrame的索引与切片

DataFrame的索引和切片与Series类似,也有隐式索引和显式索引。

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charles'], 'age': [23, 34, 45], 'sex': ['F', 'M', 'M']}
df = pd.DataFrame(data)

# 使用loc访问具有显式索引的行和列
df.loc[0]         # 获取第一行
df.loc[:, 'name'] # 获取所有行中的'name'列数据
df.loc[0, 'age']  # 获取第一行age列中的数据

# 使用iloc访问具有隐式索引的行和列
df.iloc[0]       # 获取第一行
df.iloc[:, 0]    # 获取第一列
df.iloc[0, 1]    # 获取第一行第二列的值

3.数据的增、删、改、查

DataFrame可以通过增、删、改、查操作来对数据进行处理。

import pandas as pd

# 新增一列
df['score'] = [89, 93, 87]

# 删除一列
df.drop('sex', axis=1, inplace=True)

# 修改一列
df.loc[0, 'name'] = 'Lucy'

# 查询符合条件的行
df[df.age > 30]

4.DataFrame数据的基本统计信息

Pandas中的DataFrame还提供了数据处理和数据分析所需的各种统计函数,比如describe()函数可以为DataFrame提供一些基本的统计信息。

import pandas as pd

df = pd.read_csv('data.csv', header=0, sep=',')
df.describe()

这将返回DataFrame的基本统计信息,如总数、均值、标准差、最小值、最大值等。

以上就是Pandas中DataFrame的基本概念,包括DataFrame数据结构的创建、索引与切片、数据的增、删、改、查以及基本统计信息的计算。Pandas强大的数据处理和分析能力,使得我们在处理数据时更加的便利和高效。

四丶Dataframe索引

在 Pandas 中,可以通过 loc、iloc、at 和 iat 等方式来访问 DataFrame 中的元素,实现对 DataFrame 的索引。其中,loc 和 at 主要用于基于索引标签访问,而 iloc 和 iat 则主要用于基于整数下标访问。

1.使用 loc 和 at 进行基于标签的索引

在 Pandas 中,使用 loc 就可以基于标签索引 DataFrame 中的元素,其基本语法类似于 Python 中的索引方式,只需要指定需要访问的行和列名即可。

import pandas as pd

# 创建 DataFrame
data = {'name': ['Alice', 'Bob', 'Charles'], 'age': [23, 34, 45], 'sex': ['F', 'M', 'M']}
df = pd.DataFrame(data)

# 使用 loc 访问 DataFrame 中的元素
print(df.loc[0, 'name'])     # Alice
print(df.loc[0:1, ['name', 'age']])  # 通过标签名选取第 0 至 2 行,name 和 age 两列的数据

# 使用 at 访问单个元素
print(df.at[0, 'name'])      # Alice

2.使用 iloc 和 iat 进行基于整数下标的索引

类似于 loc 和 at,可以使用 iloc 和 iat 进行基于整数下标的索引。iloc 和 iat 的区别在于 iat 是一个标量,而 iloc 则返回多行多列的 DataFrame。

import pandas as pd

# 创建 DataFrame
data = {'name': ['Alice', 'Bob', 'Charles'], 'age': [23, 34, 45], 'sex': ['F', 'M', 'M']}
df = pd.DataFrame(data)

# 使用 iloc 访问 DataFrame 中的元素
print(df.iloc[0, 0])     # Alice
print(df.iloc[0:2, 0:2])    # 通过整数下标选取第 0 至 1 行,第 0 至 1 列的数据

# 使用 iat 访问单个元素
print(df.iat[0, 0])      # Alice

综上所述,通过 loc、iloc、at 和 iat 等索引方式,可以轻松实现对 DataFrame 中元素的访问,帮助我们更加高效地进行数据处理和分析。

第三章:Matplotlib

1.Matplotlib简介及图表窗口

Matplotlib 是 Python 中最经典的数据可视化库之一,为广大数据分析者和科学家们提供了强大且易用的绘图工具。

Matplotlib 主要包含两个基础模块:pyplot 和 pylab。其中,pyplot 是 Matplotlib 的关键模块,提供了 plt 对象,方便我们进行绘图操作。而 pylab 则是 Matplotlib 至关重要的一个子模块,提供了 matplotlib 命名空间,并且将 NumPy 和 Matplotlib 导入到命名空间中,避免了频繁的命名空间重复操作。

下面我们来了解一下 Matplotlib 中常用的图表窗口:

1.Figure 图表窗口

在 Matplotlib 中,一个 Figure 对象代表着一个图表窗口,可以通过指定图表窗口的大小和分辨率等参数,来创建自己所需的图表窗口。我们可以通过以下代码创建一个图表窗口:

import matplotlib.pyplot as plt

# 创建一个 8 寸高、6 寸宽的图表窗口
fig = plt.figure(figsize=(8, 6))

2.Subplot 子图窗口

在 Matplotlib 中,Subplot 是 Figure 中的一部分,我们可以在一个 Figure 对象中创建多个 Subplot。通过 Subplot,我们可以将同一 Figure 中的多幅图表绘制在不同的子图窗口里。我们可以通过以下代码在一个 Figure 对象中创建两个子图窗口:

import matplotlib.pyplot as plt

# 创建一个 8 寸高、6 寸宽的图表窗口
fig = plt.figure(figsize=(8, 6))

# 在图表窗口中创建 2 个子图窗口,排列格式是 2 行 1 列
ax1 = fig.add_subplot(2, 1, 1)
ax2 = fig.add_subplot(2, 1, 2)

# 在第一个子图中绘制折线图
ax1.plot([1, 2, 3, 4], [2, 4, 3, 5])

# 在第二个子图中绘制散点图
ax2.scatter([1, 2, 3, 4], [1, 3, 2, 4])

通过 add_subplot 可以实现在一个 Figure 对象中创建多份绘图。

除了 Figure 和 Subplot 窗口之外,Matplotlib 还提供了其他窗口元素,如 Axes,Legend 等,方便我们更加高效地进行数据可视化。

综上所述,Matplotlib 是 Python 数据分析中不可或缺的一部分,提供了众多强大的图表绘制工具,使得数据可视化变得更加轻松和高效。不同的图表窗口提供不同的展现方式,可以根据需求来实现自己想要的图表效果。

二丶图表的基本元素

Matplotlib 是 Python 中最经典的数据可视化库之一,提供了多种数据可视化的图表类型,包括折线图、散点图、柱状图、饼图等等。在 Matplotlib 中,每个图表都是由多个元素组成的,下面我们来了解一下 Matplotlib 图表的基本元素。

1.Figure(图表)

Figure 表示整张画布,它是所有可绘制元素的容器。在 Matplotlib 中,通常情况下,我们在开始绘图前会创建一个 Figure 对象。

2.Axes(坐标轴)

Axes(轴)代表数学坐标轴,是我们绘制图表的基本元素。在二维图表中,通常由两条轴组成:x 轴和 y 轴。我们可以在轴上绘制数学函数、散点图、柱状图等图表类型。

3.Axis(坐标轴刻度)

Axis(刻度)表示坐标轴上的刻度标记和标签。在 Matplotlib 中,刻度标记通常由刻度线和刻度标签组成。

4.Title(标题)

Title(标题)是图表的核心部分之一,用于说明图表的主题或主要内容。在 Matplotlib 中,我们可以通过 add_title() 方法来添加标题。

5.Legend(图例)

Legend(图例)是说明图表中不同元素含义的辅助工具,通常用于标注每个数据系列对应的标签。在 Matplotlib 中,我们可以通过 add_legend() 方法来添加图例。

6.Label(标签)

Label(标签)是针对不同元素的说明文本,包括轴标签、刻度标签、图例标签等。在 Matplotlib 中,我们可以通过 xlabel()ylabel() 等方法来添加轴标签,也可以使用 set_text() 方法来修改其他标签的文本。

以上就是 Matplotlib 中常见的图表元素,了解它们的意义和作用,可以更好地理解 Matplotlib 图表的结构和绘制方式,并且可以引导我们正确地选择和调整图表元素以获得更好的数据可视化效果。

三丶Matplotlib图表的样式参数

在 Matplotlib 中,绘制图表的样式可以使用多个样式参数来控制。下面是一些常用的样式参数:

1.颜色参数:使用颜色来区分不同的数据系列。可以使用常规颜色名(如 ‘red’、‘blue’ 等),RGB 数值(如 (0.1, 0.2, 0.3))和十六进制颜色代码(如 ‘#FF0000’)。

2.线宽参数:控制绘制线条的宽度,通常使用整数或浮点数表示。

3.线型参数:控制绘制线条的样式,包括实线(‘-’)、虚线(‘–’)、点线(‘:’)等。

4.标记参数:标记是指在绘制散点图等类型图表时用来表示每个数据点的符号,可以使用不同的标记来区分不同的数据系列。

5.字体参数:控制文字的大小、粗细、颜色等属性,包括字体大小(‘fontsize’)、字体颜色(‘color’)等。

6.图表尺寸参数:控制图表的大小,包括图表宽度(‘figwidth’)、图表高度(‘figheight’)等。

7.边框参数:控制图表边框的样式和颜色,包括线条样式(‘linestyle’)、线条宽度(‘linewidth’)和颜色(‘edgecolor’)等。

以上是 Matplotlib 中常见的样式参数。要使用这些样式参数,我们可以在绘制图表时添加相应的参数,并根据需要进行调整和修改,以获得满意的可视化效果。

四丶Matplotlib刻度、图表输出丶注解

在 Matplotlib 中,有许多刻度、图表输出和注解相关的功能,可以帮助我们更好地掌握数据可视化。下面介绍一些有用的可视化技巧。

1.刻度标签格式化

在 Matplotlib 中,我们可以使用 matplotlib.ticker 模块中的 Formatter 类来格式化轴上的刻度标签。其中,常见的格式类型包括字符串格式(如 “%d”、“%f” 等)、百分数格式(如 “%0.1f%%” 等)和科学计数法格式(如 “%0.1e”、“%0.1E” 等)等。

例如,以下代码使用科学计数法格式来格式化 y 轴上的刻度标签:

from matplotlib import pyplot as plt
from matplotlib.ticker import FormatStrFormatter
import numpy as np

# 生成测试数据
x = np.linspace(0, 100, 101)
y = np.power(10, x)

# 绘制图表
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_ylabel("Y Axis")

# 设置 y 轴刻度标签的格式为科学计数法
formatter = FormatStrFormatter('%0.1e')
ax.yaxis.set_major_formatter(formatter)

plt.show()

2.图表输出格式

在 Matplotlib 中,我们可以使用 savefig() 方法来将图表保存为文件,保存格式包括 PNG、PDF、SVG、PS 等多种格式。我们可以通过指定文件名和文件格式来完成图表的保存。

例如,以下代码将图表保存为 PDF 格式的文件:

from matplotlib import pyplot as plt

# 在 Matplotlib 中绘制图表

# 将图表保存为 PDF 文件
plt.savefig("output.pdf")

3.注解添加

在 Matplotlib 中,我们可以使用 text() 方法和 annotate() 方法来添加文本注解或箭头注解。其中,text() 方法添加的注解为纯文本注解,而 annotate() 方法可以添加带箭头的注解。

例如,以下代码在图表中添加了一个文本注解和一个箭头注解:

from matplotlib import pyplot as plt

# 在 Matplotlib 中绘制图表

# 添加文本注解
plt.text(0.5, 0.5, "Text Annotation", ha="center", va="center")

# 添加箭头注解
plt.annotate("Arrow Annotation", xy=(0.5, 0.7), xytext=(0.7, 0.8),
             arrowprops=dict(facecolor='black', shrink=0.05))

在图表的注解中,我们可以修改注解的文本、字体、颜色、大小、箭头样式等属性,以达到更好的可视化效果。

综上所述,刻度、图表输出和注解是 Matplotlib 中常用的几个可视化技巧。掌握这些技巧,可以帮助我们更好地处理和展示数据,让数据可视化更加生动有趣。

总结

学习 Python 中的 NumPy、Pandas 和 Matplotlib 等数据科学库可以带来许多好处,如下所述:

  • 带来更高效、更便捷的数据科学编程体验:NumPy、Pandas 和 Matplotlib 等数据科学库提供了许多高效的函数和方法,可以方便地进行数据操作和可视化,从而减少了冗长的代码编写和调试时间。

  • 拓展 Python 数据科学相关的功能和应用:Python 原生的数据处理、数据分析和数据可视化功能相对较弱,学习使用 NumPy、Pandas 和 Matplotlib 等数据科学库可以拓展这些功能,从而进行更深入的数据科学应用探索。

  • 提升数据分析和数据可视化能力:学习使用 NumPy、Pandas 和 Matplotlib 等数据科学库可以提高数据科学从业者的数据分析和数据可视化能力,可以更好地理解和应用各种分析技术和可视化方法,从而更好地进行数据科学工作。

  • 丰富数据科学简历及职业发展:在数据科学领域中,掌握并能够应用多种数据科学库的相关知识将会成为一个优势,通过使用这些库来实现各种数据操作、分析和可视化的项目和经验,将会对个人职业发展和简历上升产生积极影响。

综上所述,学习 Python 中的数据科学库可以帮助我们更高效、便捷地实现数据分析、数据处理和数据可视化等任务,同时提高我们在数据科学领域的能力和竞争力,是在数据科学领域中的必要技能之一。

关注公众号:python技术训练营,精选优质文档,好玩的项目

内容

1.面试专题几十个大厂面试题
2.入门基础教程
3.11模块零基础到精通笔记
4.百个项目实战+爬虫教程+代码
5.量化交易,机器学习,深度学习
6.Python游戏源码
7.交流学习
8.了解接单市场
9.DNF自动识别打怪
10.3263页学习资料

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

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

相关文章

性能测试如何做?性能测试-稳定性场景设计详细,晋升之路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 我们谈到测试设计…

liunx服务器安装kafka

liunx服务器安装kafka 1. 初始化安装环境1.1 安装jdk1.1.1 找到对应的jdk版本1.1.2 下载并安装1.1.2.1 配置jdk环境变量 1.2 安装 zookeeper1.2.1 查找kafka对应zookeeper版本启动 2. 下载kafka 安装包 kafka 3.0.0 之前 &#xff08;包括3.0.0版本&#xff09;支持jdk 8 &…

浏览器唤醒本地应用

我们在使用一些应用的时候&#xff0c;需要通过本地浏览器来唤醒本地应用的需求。 就像我们以前使用QQ一样&#xff0c;在网页上点击了某个按钮&#xff0c;会唤醒本地安装的QQ应用。 这里来介绍一下怎么使用自定义协议来唤醒本地的Electron应用&#xff08;其他框架写的应用同…

汽车电子Autosar之以太网SOME/IP(续)

前言 首先&#xff0c;请问大家几个小小问题&#xff0c;你清楚&#xff1a; 你知道什么是SOME/IP SD吗&#xff1f;SOME/IP-SD有何作用呢&#xff1f;SOME/IP-SD 包含哪些内容呢&#xff1f;SOME/IP-TP 为什么会存在&#xff1f; 今天&#xff0c;我们就来一起探索并回答这…

Mysql数据库表管理和用户管理与授权

一、表结构管理 1. 修改表名 ALTER TABLE 旧表名 RENAME 新表名 2.扩展表结构&#xff08;增加字段&#xff09; ALTER TABLE 表名 ADD 字段名 数据类型; 3.修改字段名&#xff0c;添加唯一健 change ALTER TABLE 表名 CHANGE 旧字段名 新字段名 [数据类型] [约束]; 4.删除字段…

Linux 多路转接 —— select

目录 传统艺能&#x1f60e;select&#x1f60d;fd_set 结构&#x1f612;timeval 结构&#x1f923; socket 就绪条件&#x1f601;读条件&#x1f923;写就绪&#x1f60d;异常就绪&#x1f612; select 工作流程&#x1f618;select 服务器实现&#x1f602;socket 类&#…

极致呈现系列之:Echarts饼图的千变万化

目录 创建一个最简单的饼图美化饼图修改颜色修改饼图的边框线条样式修改饼图的标签样式添加饼图的阴影效果添加修改饼图的图例样式 添加交互饼图的变化环形图动画装饰仪表盘 创建一个最简单的饼图 这个没什么好说的&#xff0c;懂的都懂&#xff0c;直接上代码 //安装 Echart…

LlamaIndex 简介:LLM 应用程序的数据框架

LlamaIndex 是一个非凡的工具&#xff0c;创建为一个全面的“数据框架”&#xff0c;以促进 LLM&#xff08;大型语言模型&#xff09;应用程序的开发。该框架与 ChatGPT 集成&#xff0c;充当大型语言模型和用户私人数据之间的桥梁。 借助 LlamaIndex&#xff0c;用户可以轻松…

Apache Zeppelin系列教程第九篇——Zeppelin NoteBook数据缓存

背景 在使用Zeppelin JDBC Intercepter 对于Hive 数据进行查询过程中&#xff0c;如果遇到非常复杂的sql&#xff0c;查询效率是非常慢 比如&#xff1a; select dt,count(*) from table group by dt做过数据开发的同学都知道&#xff0c;在hive sql查询过程中&#xff0c;hive…

MySQL - 第1节 - MySQL数据库基础

1.数据库的概念 数据库是按照数据结构来组织、存储和管理数据的仓库&#xff0c;是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 虽然单纯的使用文件也可以存储数据&#xff0c;但会存在如下缺点&#xff1a; • 安全性问题&#xff1a;数据误操…

深搜-选数类问题

目录 1.问题引入 2.知识讲解 3.例题解析 【例题1】全排列。 【例题2】素数环Ⅱ。 【样例3】素数分解。 1.问题引入 上一节探讨了迷宫类问题&#xff0c;和平时遇到的迷宫小游戏类似&#xff0c;可以使用搜索程序求得迷宫的路径和最短路。本小节继续研究深搜的另一类问…

MySQL数据库的认识及基础命令操作

目录 一、数据库的基本概念 1、数据库定义 &#xff08;1&#xff09; 数据 &#xff08;2&#xff09;表 &#xff08;3&#xff09; 数据库 2、 数据库管理系统&#xff08;DBMS&#xff09; 3、 数据库系统&#xff08;DBS&#xff09; 二、数据库系统发展史 1、 第一…

【RabbitMQ教程】第五章 —— RabbitMQ - 死信队列

&#x1f4a7; 【 R a b b i t M Q 教程】第五章—— R a b b i t M Q − 死信队列 \color{#FF1493}{【RabbitMQ教程】第五章 —— RabbitMQ - 死信队列} 【RabbitMQ教程】第五章——RabbitMQ−死信队列&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人…

SpringCloud:分布式事务Seata

1.什么是分布式事务 分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上&#xff0c;简单的说&#xff0c;就是一次大的操作由不同的小操作组成&#xff0c;这些小的操作分布在不同的服务器上&#xff0c;且属…

【Flutter】Flutter 创建每个页面公用的底部框

文章目录 一、 前言二、 创建公用底部框的步骤1. 创建一个公用的底部框 Widget2. 在页面中使用公用的底部框 Widget 三、 示例&#xff1a;电商应用中的公用底部框1. 创建电商应用的底部框 Widget2. 在电商应用的各个页面中使用底部框 Widget 四、 完整代码示例五、 一些注意事…

第一次ubuntu wsl ssh远程登录各种报错+解决

第一次ubuntu wsl ssh远程登录各种报错+解决 最新推荐文章于 2023-04-13 20:23:43 发布 kh3064 于 2020-11-03 15:12:16 发布 1869 收藏 5 文章标签: ubuntu

计算理论导引实验三:构造图灵机

计算理论导引实验三&#xff1a;构造图灵机 实验描述形式化定义图灵机M的状态图 算法设计与描述状态转移关系类键盘输入及逻辑处理类 编码实现测试运行 实验描述 要求构造一个能够识别语言L的图灵机。语言L的描述和实验内容如下图所示 形式化定义 根据实验描述&#xff0c;可…

【批量修改后缀名】如何批量去修改文件后缀名(亲测图文结合)

【写在前面】前段时间&#xff0c;因为素材需要&#xff0c;就去之前我制作相册的一个网站上下载了一批照片&#xff0c;但是照片下载下来的格式居然是.png!600*0&#xff0c;这种格式的也打不开&#xff0c;于是乎我自己就吭哧吭哧的去一个个的修改&#xff0c;然后我一想他娘…

EBU5476 Microprocessor System Design 知识点总结_5 GPIO

GPIO General Purpose Input Output, Memory-Mapped IO 把设备&#xff0c;控制等寄存器映射到内存里。好处就是访问设备方式和内存一样&#xff0c;也不用设计复杂的IO电路&#xff0c;便捷&#xff1b;缺点在于占用了内存空间。 Peripheral-Mapped IO IO有一块专门的存储…

Vue|单文件组件与脚手架安装

一、单文件组件1.1 介绍1.2 文件组成1.3 加深认知 二、脚手架安装2.1 什么是脚手架?2.2 使用镜像2.3 全局安装vue/cli2.4 创建并启动项目 一、单文件组件 1.1 介绍 [.vue]文件&#xff0c;称为单文件组件&#xff0c;是Vue.js自定义的一种文件格式&#xff0c;一个.vue文件就…