Python数据分析简介

核心工具库

NumPy(Numerical Python)

Python中专注于快速数组运算的高性能科学计算库。

核心特性:

  • 强大的N维数组对象ndarray
  • 高效的广播功能
  • 支持与C/C++/Fortran代码的无缝集成
  • 提供线性代数、傅里叶变换、随机数生成等数学功能

Pandas

基于NumPy构建的结构化数据分析工具。

主要优势:

  • 高性能数据处理(依赖NumPy的矩阵运算)
  • 完善的数据清洗和分析功能
  • 两大核心数据结构:
    • Series:一维标签化数组
    • DataFrame:二维表格型数据结构

数据可视化工具

Matplotlib

Python生态系统中最常用的开源数据可视化库,支持创建:

  • 静态图表
  • 动态可视化
  • 交互式图形展示

Seaborn

基于Matplotlib构建的数据可视化库,特点:

  • 集成pandas数据结构
  • 提供更简洁的API
  • 绘制信息更丰富、更具吸引力的图像
  • 与Pandas配合使用比直接使用Matplotlib更方便

机器学习工具

Scikit-learn

基于Python的机器学习工具:

  • 简单高效的数据挖掘和数据分析工具
  • 可重复用于各种环境
  • 建立在NumPy、SciPy和Matplotlib之上

开发环境

Jupyter Notebook/Lab

数据分析的首选开发环境,可以:

  • 创建和共享代码、公式、可视化图表、笔记文档

主要用途

  • 数据清理和转换
  • 数值模拟
  • 统计分析
  • 数据可视化
  • 机器学习

Python数据分析环境搭建

Anaconda简介

最流行的数据分析平台,特点:

  • 附带大量常用数据科学包
  • 基于conda(包管理器和环境管理器)
  • 提供虚拟环境管理工具

包管理功能

安装包命令:

conda install 包名
pip install 包名
pip install 包名 -i https://mirrors.aliyun.com/pypi/simple/  # 通过阿里云镜像安装

虚拟环境作用

  • 解决开源库版本升级导致的API兼容性问题
  • 隔离不同Python版本和库版本
  • 支持不同版本代码在不同环境中运行

Jupyter Notebook使用指南

启动方式

conda activate 虚拟环境名
jupyter notebook

基本概念

  • Cell:代码输入框和输出显示区域
  • 命令模式(按ESC进入):
    • Y:切换到Code模式
    • M:切换到Markdown模式
    • A:上方添加cell
    • B:下方添加cell
    • 双击D:删除当前cell
    • Shift+Enter:执行并跳转下一单元
    • Ctrl+Enter:执行并停留当前单元
  • 标记说明
    • *:表示代码正在运行

Markdown编辑

在命令模式中按M进入Markdown编辑模式,可使用Markdown语法添加格式化的说明文字。

NumPy

NumPy是Python数据分析中不可或缺的核心库

作为Python科学计算的基础包,NumPy有效提升了Python的运算性能,并提供了精确的数据类型系统,使其能够构建复杂的数据结构。该库由C语言开发,被众多科学计算工具作为底层依赖,因此掌握NumPy数据类型对Python数据分析至关重要。

NumPy专注于数值计算,主要提供高效的多维数组(矩阵)处理功能。相比Python原生列表结构,NumPy数组在存储和处理大型矩阵时具有显著性能优势。

核心功能包括:

  1. 为高性能科学计算和数据分析提供基础支持
  2. ndarray多维数组支持矢量化运算,兼具高效性和内存优化
  3. 提供矩阵运算能力,无需循环即可实现类似Matlab的矢量操作
  4. 包含磁盘数据读写和内存映射文件操作工具

NumPy的核心数据结构是ndarray(通常简称为数组),具有以下关键属性:

  • ndarray.ndim:数组维度数
  • ndarray.shape:各维度大小的元组(如2×3矩阵的shape为(2,3))
  • ndarray.size:数组元素总数
  • ndarray.dtype:元素数据类型
  • ndarray.itemsize:单个元素占用的字节数

ndarray

NumPy 提供了 ndarray 这一 N 维数组类型,用于存储相同类型的数据集合。相比 Python 的嵌套列表,ndarray 在存储效率和 I/O 性能上具有显著优势,且数据规模越大优势越明显。

ndarray 的主要特点:

  • 内置并行计算功能,能自动利用多核处理器
  • 底层采用 C 语言实现,不受 Python GIL 限制
  • 操作效率远高于纯 Python 代码

ndarray 属性

属性名称说明
ndarray.shape数组维度的元组
ndarray.ndim数组维度数
ndarray.size数组元素总数
ndarray.itemsize单个元素占用的字节数
ndarray.dtype数组元素类型

数组形状示例

>>> a = np.array([[1,2,3],[4,5,6]])  # 二维数组 (2, 3)
>>> b = np.array([1,2,3,4])          # 一维数组 (4,)
>>> c = np.array([[[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]])  # 三维数组 (2, 2, 3)

二维数组

三维数组

数据类型

ndarray 支持多种数据类型,通过 dtype 指定:

类型名称描述简写
np.bool布尔类型 (True/False)'b'
np.int88位整数 (-128~127)'i'
np.int1616位整数 (-32768~32767)'i2'
np.int3232位整数'i4'
np.int6464位整数'i8'
np.uint8无符号8位整数 (0~255)'u'
np.uint16无符号16位整数 (0~65535)'u2'
np.uint32无符号32位整数'u4'
np.uint64无符号64位整数'u8'
np.float16半精度浮点数 (16位)'f2'
np.float32单精度浮点数 (32位)'f4'
np.float64双精度浮点数 (64位)'f8'
np.complex6464位复数'c8'
np.complex128128位复数'c16'
np.object_Python对象'O'
np.string_字符串'S'
np.unicode_Unicode字符串'U'

np.int32:32位整数,是最常用的整数类型,适用于大多数整数运算。

np.float64:64位浮点数,是默认的浮点数类型,广泛用于科学计算。

np.bool_:布尔类型,用于表示True或False,常用于条件判断和逻辑操作。

np.string_/np.unicode_:定长字符串类型,常用于二进制数据 或 多语言文本数据

np.object_:用于存储任意Python对象,特别是在处理混合类型数据或需要灵活性的时候。

np.string_只支持ASCII编码,不支持Unicode,而np.unicode_支持Unicode字符。

np.string_更适合处理旧有的二进制数据,而np.unicode_更适合处理现代文本数据。

数组的基本属性

属性名字属性解释
ndarray.shape数组维度的元组
ndarray.ndim数组维数
ndarray.size数组中的元素数量
ndarray.itemsize一个数组元素的长度(字节)
ndarray.dtype数组元素的类型

基本操作

1 生成数组的方法

1.1 生成0和1的数组

  • np.ones(shape, dtype)
  • np.ones_like(a, dtype):创建与数组a形状相同且元素全为1的数组
  • np.zeros(shape, dtype)
  • np.zeros_like(a, dtype):创建与数组a形状相同且元素全为0的数组

示例:

ones = np.ones([4,8])
print(ones)
# [[1. 1. 1. 1. 1. 1. 1. 1.]
#  [1. 1. 1. 1. 1. 1. 1. 1.]
#  [1. 1. 1. 1. 1. 1. 1. 1.]
#  [1. 1. 1. 1. 1. 1. 1. 1.]]

print(np.zeros_like(ones))
# [[0. 0. 0. 0. 0. 0. 0. 0.]
#  [0. 0. 0. 0. 0. 0. 0. 0.]
#  [0. 0. 0. 0. 0. 0. 0. 0.]
#  [0. 0. 0. 0. 0. 0. 0. 0.]]

1.2 从现有数组生成

1.2.1 生成方式
  • np.array(object, dtype)
  • np.asarray(a, dtype)

示例:

a = np.array([[1,2,3],[4,5,6]])
a1 = np.array(a)  # 创建新数组
a2 = np.asarray(a)  # 类似索引,不创建新数组

1.3 生成随机数组

使用np.random模块:

# 生成[0.0,1.0)的随机浮点数
rand_num = np.random.rand()
print("随机浮点数:", rand_num)

# 生成3x2的随机数组
rand_array = np.random.rand(3, 2)
print("随机数组:\n", rand_array)

2 数组的索引和切片

索引规则:

  • 一维数组:直接索引
  • 二维数组:[行,列]
  • 三维数组:[深度,行,列]

示例:

# 二维数组示例
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("第1行第2列:", arr[0, 1])  # 2
print("第2行第3列:", arr[1, 2])  # 6

# 切片操作
arr = np.array([[1, 2, 3, 4],
                [5, 6, 7, 8],
                [9, 10, 11, 12]])

print("第1-2行:\n", arr[0:2, :])
print("第2-3列:\n", arr[:, 1:3])
print("第1行第2-3列:", arr[0, 1:3])

# 三维数组示例
a1 = np.array([[[1,2,3],[4,5,6]], [[12,3,34],[5,6,7]]])
print(a1[0, 0, 1])  # 2

3 形状修改

3.1 ndarray.reshape(shape, order)

返回新形状的视图,不改变行列顺序:

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
reshaped = arr.reshape(3, 3)
print("reshape后:\n", reshaped)

3.2 ndarray.resize(new_shape)

修改数组本身形状(元素数量需相同):

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
resized = np.resize(arr, (2, 5))
print("resize后:\n", resized)

3.3 ndarray.T

数组转置(行列互换):

arr = np.array([[1, 2, 3], [4, 5, 6]])
print("转置后:\n", arr.T)

4 类型修改

4.1 ndarray.astype(type)

返回类型修改后的数组:

arr = np.array([1.1, 2.2, 3.3, 4.4, 5.5])
arr_int = arr.astype(np.int32)
print("转换后:", arr_int)

4.2 ndarray.tobytes([order])

生成包含原始数据字节的Python字节:

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[12, 3, 34], [5, 6, 7]]])
print(arr.tobytes())

5 数组去重

5.1 np.unique()

temp = np.array([[1, 2, 3, 4],[3, 4, 5, 6]])
print(np.unique(temp))  # [1 2 3 4 5 6]

6 ndarray运算

# 生成10名同学5门课成绩
scores = np.random.randint(0, 101, size=(10, 5))

# 取最后4名同学成绩
scores_last4 = scores[-4:, :]
print("最后4名成绩:\n", scores_last4)

# 判断是否大于60
print("是否大于60:\n", scores_last4 > 60)

# 判断前两名是否全及格
print("前两名是否全及格:", np.all(scores[0:2, :] > 60))

# 判断前两名是否有大于90
print("前两名是否有大于90:", np.any(scores[0:2, :] > 80))

# 三元运算
temp = scores[:4, :4]
print("大于60置1否则0:\n", np.where(temp > 60, 1, 0))

7统计运算

  • 在数据挖掘和机器学习中,统计指标是数据分析的重要工具。以下是常用的统计运算方法:
  • min(a, axis) 计算数组的最小值或沿指定轴的最小值
  • max(a, axis) 计算数组的最大值或沿指定轴的最大值
  • median(a, axis) 计算沿指定轴的中位数
  • mean(a, axis, dtype) 计算沿指定轴的算术平均值
  • std(a, axis, dtype) 计算沿指定轴的标准差
  • var(a, axis, dtype) 计算沿指定轴的方差

pandas

Pandas框架概述

  • Pandas是Python的一个第三方包,也是商业和工程领域最流行的结构化数据工具集,用于数据清洗、处理以及分析
  • Pandas在数据处理上具有独特的优势:
    • 底层是基于Numpy构建的,所以运行速度特别的快
    • 有专门的处理缺失数据的API
    • 强大而灵活的分组、聚合、转换功能

适用场景:

  • 数据量大到Excel严重卡顿,且又都是单机数据的时候,我们使用Pandas
    • Pandas用于处理单机数据(小数据集(相对于大数据来说))
    • 在大数据ETL数据仓库中,对数据进行清洗及处理的环节使用Pandas

安装Pandas

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ pandas

2- 创建python脚本, 导入pandas库
import pandas as pd
3df = pd.read_csv('./1960-2019全球GDP数据.csv', encoding='gbk')  
# 设置显示的最大行数和列数为None

pd.set_option('display.max_rows', None) pd.set_option('display.max_columns', None)

Python Pandas的作用:(清洗、处理、分析数据)

二、Pandas数据结构与数据类型

  • DataFrame
    • Series
      • 索引列
        • 索引名、索引值
        • 索引下标、行号
      • 数据列
        • 列名
        • 列值,具体的数据

其中最核心的就是Pandas中的两个数据结构:DataFrame和Series

Series对象

Series也是Pandas中的最基本的数据结构对象,下文中简称s对象;是DataFrame的列对象,series本身也具有索引。

  • values:一组数据(numpy.ndarray类型)
  • index:相关的数据索引标签;如果没有为数据指定索引,于是会自动创建一个0到N-1(N为数据的长度)的整数型索引。

创建Series对象

  • 1- 导入pandas
  • 2- 通过list列表来创建
  • import pandas as pd
    s2 = pd.Series([1, 2, 3])
    print(s2)
    # 自定义索引
    s3 = pd.Series([1, 2, 3], index=['A', 'B', 'C'])
    print(s3)
    
    0    1
    1    2
    2    3
    dtype: int64
    A    1
    B    2
    C    3
    dtype: int64

DataFrame

创建DataFrame对象

DataFrame是一个类似于二维数组或表格(如excel)的对象,既有行索引,又有列索引

  • 行索引,表明不同行,横向索引,叫index,0轴,axis=0
  • 列索引,表名不同列,纵向索引,叫columns,1轴,axis=1
  • df1_data = {
        '日期': ['2021-08-21', '2021-08-22', '2021-08-23'],
        '温度': [25, 26, 50],
        '湿度': [81, 50, 56] 
    }
    df1 = pd.DataFrame(data=df1_data)
    df1
    
    # 返回结果如下
            日期    温度    湿度
    0    2021-08-21    25    81
    1    2021-08-22    26    50
    2    2021-08-23    50    56

DataFrame对象属性

  •  1- shape属性
  • data.shape
    
    # 结果
    (10, 5)
  • 2- index属性
  • data.index
    
    # 结果
    Index(['同学0', '同学1', '同学2', '同学3', '同学4', '同学5', '同学6', '同学7', '同学8', '同学9'], dtype='object')
  • 3- columns
  • data.columns
    
    # 结果
    Index(['语文', '数学', '英语', '政治', '体育'], dtype='object')

  • 4- values
  • data.values
    
    array([[92, 55, 78, 50, 50],
           [71, 76, 50, 48, 96],
           [45, 84, 78, 51, 68],
           [81, 91, 56, 54, 76],
           [86, 66, 77, 67, 95],
           [46, 86, 56, 61, 99],
           [46, 95, 44, 46, 56],
           [80, 50, 45, 65, 57],
           [41, 93, 90, 41, 97],
           [65, 83, 57, 57, 40]])
  • 5- T

DataFrame对象方法

1- head(n)

显示前n行内容

data.head(5)

tail(n)如果不补充参数,默认5行。填入参数n则显示后n行

Pandas的数据类型

df或s对象中具体每一个值的数据类型有很多,如下表所示

Pandas数据类型说明对应的Python类型
Object字符串类型string
int整数类型int
float浮点数类型float
datetime日期时间类型datetime包中的datetime类型
timedelta时间差类型datetime包中的timedelta类型
category分类类型无原生类型,可以自定义
bool布尔类型bool(True,False)
nan空值类型None

总结

  • series【知道】
    • 创建
      • pd.Series([], index=[])
      • pd.Series({})
    • 属性
      • 对象.index
      • 对象.values
  • DataFrame【掌握】
  • 创建
    • pd.DataFrame(data=None, index=None, columns=None)
  • 属性
    • shape -- 形状
    • index -- 行索引
    • columns -- 列索引
    • values -- 查看值
    • T -- 转置
    • head() -- 查看头部内容
    • tail() -- 查看尾部内容
  • DataFrame索引
    • 修改的时候,需要进行全局修改
    • 对象.reset_index()
    • 对象.set_index(keys)

Pandas基本数据操作

数据集

为了更好的理解这些基本操作,我们将读取一个真实的股票数据。关于文件操作,后面在介绍,这里只先用一下API

# 读取文件
data = pd.read_csv("./data/stock_day.csv")

# 删除一些列,让数据更简单些,再去做后面的操作
data = data.drop(["ma5","ma10","ma20","v_ma5","v_ma10","v_ma20"], axis=1)

索引操作

# 直接使用行列索引名字的方式(先列后行)
data['open']['2018-02-27']
23.53

赋值操作

# 直接修改原来的值
data['close'] = 1
# 或者
data.close = 1

排序操作

排序有两种形式,一种对于索引进行排序,一种对于内容进行排序

DataFrame排序

  • 使用df.sort_values(by=, ascending=)
    • 单个键或者多个键进行排序,
    • 参数:
      • by:指定排序参考的键
      • ascending:默认升序
        • ascending=False:降序
        • ascending=True:升序

# 按照开盘价大小进行排序 , 使用ascending指定按照大小排序
data.sort_values(by="open", ascending=True).head()

# 按照多个键进行排序
data.sort_values(by=['open', 'high'])

  • 使用df.sort_index给索引进行排序
  • # 对索引进行排序
    data.sort_index()

Series排序

data['p_change'].sort_values(ascending=True).head()

2015-09-01   -10.03
2015-09-14   -10.02
2016-01-11   -10.02
2015-07-15   -10.02
2015-08-26   -10.01
Name: p_change, dtype: float64
    • 1.索引【掌握】
      • 直接索引 -- 先列后行,是需要通过索引的字符串进行获取
      • loc -- 先行后列,是需要通过索引的字符串进行获取
      • iloc -- 先行后列,是通过下标进行索引
    • 2.赋值【知道】
      • data[""] = **
      • data. =
    • 3.排序【知道】
      • dataframe
        • 对象.sort_values()
        • 对象.sort_index()
      • series
        • 对象.sort_values()
        • 对象.sort_index()

    四、DataFrame运算

    • 应用add等实现数据间的加、减法运算
    • 应用逻辑运算符号实现数据的逻辑筛选
    • 应用isin, query实现数据的筛选
    • 使用describe完成综合统计
    • 使用max, min, mean, std完成统计计算
    • 使用idxmin、idxmax完成最大值最小值的索引
    • 使用cumsum等实现累计分析
    • 应用apply函数实现数据的自定义处理

    算法运算

    • add(other)

    比如进行数学运算加上具体的一个数字

    data['open'].add(1)
    
    2018-02-27    24.53
    2018-02-26    23.80
    2018-02-23    23.88
    2018-02-22    23.25
    2018-02-14    22.49
    • sub(other)

    比如进行数学运算减去具体的一个数字

    data['open'].sub(1)

    逻辑运算符

    逻辑运算符号

    • 例如筛选data["open"] > 23的日期数据
      • data["open"] > 23返回逻辑结果
      • data["open"] > 23
        
        2018-02-27     True
        2018-02-26    False
        2018-02-23    False
        2018-02-22    False
        2018-02-14    False
    • 完成多个逻辑判断,
    • data[(data["open"] > 23) & (data["open"] < 24)].head()
      

    逻辑运算函数

    • query(expr)
      • expr:查询字符串

    通过query使得刚才的过程更加方便简单

    data.query("open<24 & open>23").head()

    • isin(values)
    • # 可以指定值进行一个判断,从而进行筛选操作
      data[data["open"].isin([23.53, 23.85])]

    统计运算

    describe

    综合分析: 能够直接得出很多统计结果,countmeanstdminmax 等

    # 计算平均值、标准差、最大值、最小值
    data.describe()

    Numpy当中已经详细介绍,在这里我们演示min(最小值), max(最大值), mean(平均值), median(中位数), var(方差), std(标准差),mode(众数)结果:

    countNumber of non-NA observations
    sumSum of values
    meanMean of values
    medianArithmetic median of values
    minMinimum
    maxMaximum
    modeMode(众数)
    absAbsolute Value
    prodProduct of values(乘积)
    stdBessel-corrected sample standard deviation
    varUnbiased variance
    idxmaxcompute the index labels with the maximum
    idxmincompute the index labels with the minimum

    如果要使用plot函数,需要导入matplotlib.

    import matplotlib.pyplot as plt
    # plot显示图形
    stock_rise.cumsum().plot()
    # 需要调用show,才能显示出结果
    plt.show()

    CSV

    read_csv

    • pandas.read_csv(filepath_or_buffer, sep =',', usecols )
      • filepath_or_buffer:文件路径
      • sep :分隔符,默认用","隔开
      • usecols:指定读取的列名,列表形式
    • 举例:读取之前的股票的数据
    • # 读取文件,并且指定只获取'open', 'close'指标
      data = pd.read_csv("./data/stock_day.csv", usecols=['open', 'close'])
      
                  open    close
      2018-02-27    23.53    24.16
      2018-02-26    22.80    23.53
      2018-02-23    22.88    22.82
      2018-02-22    22.25    22.28
      2018-02-14    21.49    21.92

    to_csv

    • DataFrame.to_csv(path_or_buf=None, sep=', ’, columns=None, header=True, index=True, mode='w', encoding=None)
      • path_or_buf :文件路径
      • sep :分隔符,默认用","隔开
      • columns :选择需要的列索引
      • header :boolean or list of string, default True
      • index:是否写进行索引,是否写进列索引值
      • mode:'w':重写, 'a' 追加
    • 举例:保存读取出来的股票数据会生成新的test文件数据
      • 保存'open'列的数据,然后读取查看结果
      • # 选取10行数据保存,便于观察数据
        data[:10].to_csv("./data/test.csv", columns=['open'])
        
        # 读取,查看结果
        pd.read_csv("./data/test.csv")
        

    Matplotlib(了解)

    • 是专门用于开发2D图表(包括3D图表)

    • 以渐进、交互式方式实现数据可视化

    • 能将数据进行可视化,更直观的呈现
    • 使数据更加客观、更具说服力

    matplotlib.pyplot模块

    折线图绘制与显示

    举例:展现上海一周的天气,比如从星期一到星期日的天气温度如下

    import matplotlib.pyplot as plt
    
    # 1.创建画布
    plt.figure(figsize=(10, 10), dpi=100)
    
    # 2.绘制折线图
    plt.plot([1, 2, 3, 4, 5, 6 ,7], [17,17,18,15,11,11,13])
    
    # 3.显示图像
    plt.show()

    小结

    • 什么是matplotlib【了解】
      • 是专门用于开发2D(3D)图表的包
    • 绘制图像流程【掌握】
      • 1.创建画布 -- plt.figure(figsize=(20,8), dpi=100)
      • 2.绘制图像 -- plt.plot(x, y)
      • 3.显示图像 -- plt.show()

    二、Matplotlib基础绘图功能

    准备数据并画出初始折线图

    import matplotlib.pyplot as plt
    import random
    
    # 画出温度变化图
    
    # 0.准备x, y坐标的数据
    x = range(60)
    y_shanghai = [random.uniform(15, 18) for i in x]
    
    # 1.创建画布 dpi是分辨率 一般80
    plt.figure(figsize=(20, 8), dpi=80)
    
    # 2.绘制折线图
    plt.plot(x, y_shanghai)
    
    # 3.显示图像
    plt.show()

    添加自定义x,y刻度

    • plt.xticks(x, **kwargs)

      x:要显示的刻度值

    • plt.yticks(y, **kwargs)

      y:要显示的刻度值

    • # 增加以下两行代码
      
      # 构造x轴刻度标签
      x_ticks_label = ["11点{}分".format(i) for i in x]
      # 构造y轴刻度
      y_ticks = range(40)
      
      # 修改x,y轴坐标的刻度显示
      plt.xticks(x[::5], x_ticks_label[::5])
      plt.yticks(y_ticks[::5])

    from pylab import mpl
    # 设置显示中文字体
    mpl.rcParams["font.sans-serif"] = ["SimHei"]
    # 设置正常显示符号
    mpl.rcParams["axes.unicode_minus"] = False
    plt.grid(True, linestyle='--', alpha=0.5)
    plt.xlabel("时间")
    plt.ylabel("温度")
    plt.title("中午11点0分到12点之间的温度变化图示", fontsize=20)
    plt.show()

    图片保存

    # 保存图片到指定路径
    plt.savefig("test.png")
    • 注意:plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。

    在一个坐标系中绘制多个图像

    需求:再添加一个城市的温度变化

    收集到北京当天温度变化情况,温度在1度到3度。怎么去添加另一个在同一坐标系当中的不同图形,其实很简单只需要再次plot即可,但是需要区分线条,如下显示

    # 增加北京的温度数据
    y_beijing = [random.uniform(1, 3) for i in x]
    
    # 绘制折线图
    plt.plot(x, y_shanghai)
    # 使用多次plot可以画多个折线
    plt.plot(x, y_beijing, color='r', linestyle='--')

    显示图例

    • 注意:如果只在plt.plot()中设置label还不能最终显示出图例,还需要通过plt.legend()将图例显示出来。
    • # 绘制折线图
      plt.plot(x, y_shanghai, label="上海")
      # 使用多次plot可以画多个折线
      plt.plot(x, y_beijing, color='r', linestyle='--', label="北京")
      
      # 显示图例
      plt.legend(loc="best")

    常见图形种类及意义

    柱形图

    **柱状图:**排列在工作表的列或行中的数据可以绘制到柱状图中。

    特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计/对比)

    api:plt.bar(x, width, align='center', **kwargs)

    饼图

    • **饼图:**用于表示不同分类的占比情况,通过弧度大小来对比各种分类。

      特点:分类数据的占比情况(占比)

      api:plt.pie(x, labels=,autopct=,colors)

    散点图

    **散点图:**用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。

    特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)

    api:plt.scatter(x, y)

    柱形图绘制

    categories = ['A', 'B', 'C', 'D']
    values = [3, 7, 5, 4]
    
    plt.bar(categories, values, color='blue')  # 绘制蓝色柱状图
    plt.title("Simple Bar Chart")  # 设置图表标题
    plt.xlabel("Categories")  # 设置X轴标签
    plt.ylabel("Values")  # 设置Y轴标签
    plt.show()  # 显示图表

    饼图

    sizes = [25, 35, 25, 15]
    labels = ['Category A', 'Category B', 'Category C', 'Category D']
    
    plt.pie(sizes, labels=labels, autopct='%1.1f%%')  # 绘制饼图,显示百分比
    plt.title("Simple Pie Chart")  # 设置图表标题
    plt.show()  # 显示图表

    散点图绘制

    x = [1, 2, 3, 4, 5]
    y = [2, 3, 5, 7, 11]
    
    plt.scatter(x, y, color='red')  # 绘制红色散点图
    plt.title("Simple Scatter Plot")  # 设置图表标题
    plt.xlabel("X-axis")  # 设置X轴标签
    plt.ylabel("Y-axis")  # 设

    Logo

    展示您要展示的活动信息

    更多推荐