Python机器学习基础前置库学习:NumPy、Pandas、Matplotlib、Seaborn

news2024/10/2 11:07:03

Python机器学习基础前置库学习

目录

  1. 📊 NumPy:高效的数组操作与数学计算
  2. 📈 Pandas:数据处理与分析的利器
  3. 🎨 Matplotlib与Seaborn:数据可视化的艺术

1. 📊 NumPy:高效的数组操作与数学计算

NumPy(Numerical Python)是Python中用于高效数值计算的重要库。它提供了一个强大的N维数组对象ndarray,能够对大规模数据集进行高效的操作。以下将详细解析NumPy的功能与应用。

数组的创建与操作

创建数组是NumPy的基础功能之一。可以通过列表、元组或其他数组直接创建NumPy数组。以下是一些常见的创建方法:

import numpy as np

# 从列表创建一维数组
array1d = np.array([1, 2, 3, 4, 5])
print("一维数组:", array1d)

# 从嵌套列表创建二维数组
array2d = np.array([[1, 2, 3], [4, 5, 6]])
print("二维数组:\n", array2d)

# 创建全零数组
zeros_array = np.zeros((3, 4))
print("全零数组:\n", zeros_array)

# 创建单位矩阵
identity_matrix = np.eye(3)
print("单位矩阵:\n", identity_matrix)

数组的基本操作

NumPy提供了丰富的数组操作功能,比如索引、切片、重塑等。通过这些功能,用户可以方便地对数据进行处理和分析。

# 数组索引
print("访问第二个元素:", array1d[1])

# 切片操作
print("前两个元素:", array1d[:2])

# 数组重塑
reshaped_array = array2d.reshape(3, 2)
print("重塑后的数组:\n", reshaped_array)

数学运算与线性代数

NumPy的强大之处在于它对数学运算的支持。它提供了各种数学函数,能够进行加减乘除、矩阵乘法、求逆等操作。下面的代码展示了如何进行基本的数学运算。

# 数组运算
array_a = np.array([1, 2, 3])
array_b = np.array([4, 5, 6])
print("数组相加:", array_a + array_b)

# 矩阵乘法
matrix_a = np.array([[1, 2], [3, 4]])
matrix_b = np.array([[5, 6], [7, 8]])
matrix_product = np.dot(matrix_a, matrix_b)
print("矩阵乘法结果:\n", matrix_product)

# 计算行列式
det = np.linalg.det(matrix_a)
print("矩阵的行列式:", det)

随机数生成

NumPy还支持随机数生成,常用于模拟和算法验证等场景。以下代码展示如何生成随机数。

# 生成均匀分布的随机数
random_uniform = np.random.rand(2, 3)
print("均匀分布的随机数:\n", random_uniform)

# 生成正态分布的随机数
random_normal = np.random.randn(3, 2)
print("正态分布的随机数:\n", random_normal)

扩展:线性回归示例

通过NumPy的强大功能,可以实现简单的线性回归。以下是一个使用NumPy进行线性回归的示例代码:

import numpy as np

# 生成样本数据
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])  # 特征
y = np.array([1, 2, 2, 3])  # 目标

# 计算线性回归参数
X_b = np.c_[np.ones((X.shape[0], 1)), X]  # 添加截距项
theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)
print("线性回归参数:", theta_best)

NumPy的高效性与灵活性,使其成为数据科学和机器学习中的基石。通过深入掌握其数组操作和数学计算能力,用户可以为后续的数据分析和模型构建打下坚实的基础。


2. 📈 Pandas:数据处理与分析的利器

Pandas是Python数据分析的重要工具,主要提供了DataFrameSeries两种数据结构,用于数据的处理和分析。Pandas的设计理念是使数据分析变得简单和高效,特别是在数据预处理、清洗与转换方面表现突出。

创建与基本操作

在Pandas中,数据的基本单元是DataFrame,其结构类似于Excel的表格,可以方便地进行数据操作。以下是创建和基本操作的示例。

import pandas as pd

# 创建DataFrame
data = {
    '姓名': ['Alice', 'Bob', 'Charlie'],
    '年龄': [25, 30, 35],
    '城市': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print("初始DataFrame:\n", df)

# 访问列
print("年龄列:\n", df['年龄'])

# 添加新列
df['收入'] = [70000, 80000, 120000]
print("添加收入列:\n", df)

# 删除列
df.drop('城市', axis=1, inplace=True)
print("删除城市列:\n", df)

数据清洗与预处理

在数据分析过程中,数据的清洗与预处理是至关重要的。Pandas提供了丰富的工具来处理缺失值、重复数据等问题。

# 创建包含缺失值的DataFrame
data_with_nan = {
    '姓名': ['Alice', 'Bob', 'Charlie', None],
    '年龄': [25, None, 35, 28]
}
df_nan = pd.DataFrame(data_with_nan)

# 检查缺失值
print("检查缺失值:\n", df_nan.isnull())

# 填充缺失值
df_nan.fillna({'年龄': df_nan['年龄'].mean(), '姓名': 'Unknown'}, inplace=True)
print("填充缺失值:\n", df_nan)

# 删除包含缺失值的行
df_nan.dropna(inplace=True)
print("删除缺失值行后:\n", df_nan)

数据过滤与分组

Pandas强大的数据过滤与分组功能,能够帮助用户深入分析数据。

# 基于条件进行过滤
filtered_df = df[df['年龄'] > 28]
print("年龄大于28的记录:\n", filtered_df)

# 数据分组与聚合
grouped = df.groupby('收入').mean()
print("收入分组统计:\n", grouped)

数据合并与连接

在数据分析中,合并和连接多个数据集是常见的需求。Pandas提供了多种方式来实现这一点。

# 创建另一个DataFrame
data2 = {
    '姓名': ['Alice', 'Bob', 'David'],
    '职业': ['Engineer', 'Artist', 'Doctor']
}
df2 = pd.DataFrame(data2)

# 合并DataFrame
merged_df = pd.merge(df, df2, on='姓名', how='inner')
print("合并后的DataFrame:\n", merged_df)

扩展:时间序列分析示例

Pandas特别适合进行时间序列分析,以下是一个时间序列分析的简单示例。

# 创建时间序列数据
dates = pd.date_range('2022-01-01', periods=5)
data_series = pd.Series([1, 2, 3, 4, 5], index=dates)
print("时间序列数据:\n", data_series)

# 计算滚动平均
rolling_mean = data_series.rolling(window=2).mean()
print("滚动平均:\n", rolling_mean)

Pandas通过简化数据处理与分析的流程,极大地提高了数据科学家的工作效率。对Pandas的深入理解将为后续复杂的数据分析奠定坚实的基础。


3. 🎨 Matplotlib与Seaborn:数据可视化的艺术

数据可视化是数据分析中不可或缺的一部分。Matplotlib和Seaborn是Python中最常用的数据可视化库,它们能够将数据以图形的形式展现出来,帮助用户更好地理解和分析数据。

Matplotlib基础

Matplotlib是Python的一个绘图库,支持多种图形的绘制,包括折线图、柱状图、散点图等。以下是Matplotlib的基础用法。

import matplotlib.pyplot as plt

# 创建数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 

7, 11]

# 绘制折线图
plt.plot(x, y, marker='o')
plt.title("简单折线图")
plt.xlabel("X轴")
plt.ylabel("Y轴")
plt.grid(True)
plt.show()

自定义绘图

Matplotlib提供了丰富的自定义选项,用户可以根据需求调整图形的样式、颜色、标记等。

# 自定义折线图
plt.plot(x, y, color='green', linestyle='--', linewidth=2, marker='o', markersize=8)
plt.title("自定义折线图")
plt.xlabel("X轴")
plt.ylabel("Y轴")
plt.xticks([1, 2, 3, 4, 5])
plt.yticks([0, 2, 4, 6, 8, 10, 12])
plt.grid(True)
plt.show()

Seaborn的高级可视化

Seaborn是基于Matplotlib的高级可视化库,专注于统计图形的绘制,提供更美观的默认样式和更高层次的接口。以下是Seaborn的一些基本应用。

import seaborn as sns

# 使用Seaborn绘制散点图
iris = sns.load_dataset("iris")
sns.scatterplot(data=iris, x="sepal_length", y="sepal_width", hue="species", style="species")
plt.title("鸢尾花数据集的散点图")
plt.show()

复杂图形的绘制

Seaborn提供了多种复杂图形的绘制能力,能够直观地展示数据之间的关系。

# 绘制成对关系图
sns.pairplot(iris, hue='species')
plt.title("鸢尾花数据集成对关系图")
plt.show()

可视化数据分布

Seaborn非常适合用于数据分布的可视化,可以使用分布图、箱线图等展示数据的分布情况。

# 绘制箱线图
sns.boxplot(x='species', y='sepal_length', data=iris)
plt.title("鸢尾花花萼长度的箱线图")
plt.show()

扩展:多图组合示例

通过Matplotlib和Seaborn的结合,可以创建多图组合展示数据的不同特征。

fig, axs = plt.subplots(2, 2, figsize=(10, 8))

# 第一个子图:折线图
axs[0, 0].plot(x, y, marker='o')
axs[0, 0].set_title("折线图")

# 第二个子图:散点图
sns.scatterplot(x="sepal_length", y="sepal_width", hue="species", data=iris, ax=axs[0, 1])
axs[0, 1].set_title("散点图")

# 第三个子图:箱线图
sns.boxplot(x='species', y='sepal_length', data=iris, ax=axs[1, 0])
axs[1, 0].set_title("箱线图")

# 第四个子图:直方图
sns.histplot(data=iris, x='sepal_length', bins=10, kde=True, ax=axs[1, 1])
axs[1, 1].set_title("直方图")

plt.tight_layout()
plt.show()

数据可视化是数据分析的重要环节,Matplotlib和Seaborn为用户提供了强大而灵活的可视化工具。通过有效的图形展示,用户可以更直观地分析数据,为后续的决策提供依据。

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

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

相关文章

[Linux]开发环境搭建

RPM和YUM 安装JDK 安装Tomcat 安装IDEA 安装MySql

代码随想录算法训练营Day20 | 235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

目录 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点 235. 二叉搜索树的最近公共祖先 题目 235. 二叉搜索树的最近公共祖先 - 力扣(LeetCode) 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先…

Yocto - 使用Yocto开发嵌入式Linux系统_05 认识Bitbake工具

Meeting the BitBake Tool 通过本章,我们将开始学习 Yocto 项目引擎如何在幕后工作的旅程。正如每一段旅程一样,沟通是至关重要的,因此我们需要理解 Yocto 项目工具所使用的语言,并学习如何充分利用这些工具来实现我们的目标。 Wi…

网页前端开发之Javascript入门篇(3/9):条件控制

Javascript条件控制 什么是条件控制? 答:其概念跟 Python教程 介绍的一样,只是语法上有所变化。 参考流程图如下: 其对应语法: var button false; // 开关状态 console.log("检查开关.."); if(bu…

一文掌握Harbor镜像同步公有云镜像仓库实践

一文掌握Harbor镜像同步公有云镜像仓库实践 目录 1 引言2 概念 2.1 Harbor2.2 阿里云的镜像仓库ACR2.3 华为云的镜像仓库SWR2.4 Harbor复制管理同步镜像 2.4.1 复制管理的工作原理 2.5 Harbor同步镜像到公有云镜像仓库的优势 3 实验:通过Harbor 将容器镜像同步到公…

刷题系统小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,知识点管理,科目类型管理,试题管理,试卷管理,系统管理 微信端账号功能包括:系统首页,我的 开发系统&#…

vulnhub-W34kn3ss 1靶机

vulnhub:https://www.vulnhub.com/entry/w34kn3ss-1,270/ 导入靶机,扫描 靶机开在192.168.81.7.扫描端口 扫到三个端口,存在网站服务,访问 80端口没什么东西,443似乎访问到的是同一个界面,这种情况下一般是…

Visual Studio C# 处理和修复 WinRiver II 测量项目 MMT 文件错误

Visual Studio C# 处理和修复 WinRiver II 测量项目 MMT 文件错误 前言一、WinRiver II 测量项目 MMT 文件的结构二、WinRiver II 无法打开或操作测量项目 MMT 文件2.1 无法载入船测多线法测量文件2.2 可以载入测验项目 MMT 文件,但 ADCP 后处理软件无法写入信息2.3…

基于SpringBoot+vue的监理公司信息化管理系统设计与实现

目录 1. 系统概述 2. 技术选型 3. 系统模块设计 3.1 收入支出管理 3.2 合同管理 3.3 财务统计 3.4 甲方乙方公告 4. 安全性考虑 5. 效果展示和示例代码 6. 总结 1. 系统概述 随着经济的快速发展和社会的进步,建筑行业作为国民经济的重要支柱产业之…

[MAUI]数据绑定和MVVM:MVVM的属性验证

一、MVVM的属性验证案例 Toolkit.Mvvm框架中的ObservableValidator类,提供了属性验证功能,可以使用我们熟悉的验证特性对属性的值进行验证,并将错误属性提取和反馈给UI层。以下案例实现对UI层的姓名和年龄两个输入框,进行表单提交验证。实现效果如下所示 View<ContentP…

医院体检管理系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;体检分类管理&#xff0c;体检套餐管理&#xff0c;体检预约管理&#xff0c;体检报告管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;体检套餐&a…

Jetson 开发系列:Orin Nano 开箱!一款强大的嵌入式物联网开发板

边缘计算作为 AI 的一个重要应用场景&#xff0c;面临着前所未有的机遇与挑战。 谈及 AI&#xff0c;自然绕不开 NVIDIA 的产品&#xff1a; 其中&#xff0c;Jetson 系列均为 AIoT 设备打造&#xff0c;功耗低是其最大的特点。以我手头的 Jetson Ori Nano 为例&#xff0c;满…

一文彻底搞懂多模态 - 基础术语+基础知识+多模态学习

文章目录 技术交流基本术语一、数据采集与表示二、数据处理与融合三、学习与推理 基础知识一、传统机器学习二、深度学习三、优化算法四、应用领域 多模态学习一、模态表示二、多模态融合图片 三、跨模态对齐 最近这一两周看到不少互联网公司都已经开始秋招发放Offer。 不同以…

【MAUI】View和ViewModel的关联方式

方式一:创建ViewModel对象: 在View中,通过设置BindingContext为ViewModel对象,即可进行绑定。如下所示: <ContentPage......xmlns:vm="clr-namespace:MauiApp8.ViewModels"><

多模态RAG实现

在标准 RAG 中&#xff0c;输入文档包含文本数据。LLM 利用上下文学习&#xff0c;通过检索与所提查询上下文相匹配的文本文档块来提供更相关、更准确的答案。 但是&#xff0c;如果文档包含图像、表格、图表等以及文本数据&#xff0c;该怎么办&#xff1f; 不同的文档格式包…

基于 Qwen2.5-0.5B 微调训练 Ner 命名实体识别任务

一、Qwen2.5 & 数据集 Qwen2.5 是 Qwen 大型语言模型的最新系列&#xff0c;参数范围从 0.5B 到 72B 不等。 对比 Qwen2 最新的 Qwen2.5 进行了以下改进&#xff1a; 知识明显增加&#xff0c;并且大大提高了编码和数学能力。在指令跟随、生成长文本&#xff08;超过 8K…

【Maven】依赖管理,Maven仓库,Maven核心功能

Maven 是一个项目管理工具&#xff0c;基于 POM&#xff08;Project Object Model&#xff0c;项目对象模型&#xff09;的概念&#xff0c;Maven 可以通过一小段描述信息来管理项目的构建&#xff0c;报告和文档的项目管理工具软件 大白话&#xff1a;Maven 是一个项目管理工…

Spring MVC 常用注解

目录 基础概念 常用注解介绍 基础概念 1、MVC &#xff1a;代表一种软件架构设计思想&#xff0c;通俗的理解&#xff1a;客户端发送请求到后台服务器的Controller(C)&#xff0c;控制器调用Model(M)来处理业务逻辑&#xff0c;处理完成后&#xff0c;返回处理后的数据到Vie…

【CKA】七、七层负载-Ingress应用

7、七层负载-Ingress应用 1. 考题内容&#xff1a; 2. 答题思路&#xff1a; 1、要先查到集群中使用的ingressclass 2、编写yaml 我考的题只是把 hi 服务换成了 hello&#xff0c;其他都一模一样 3. 官网地址&#xff1a; https://kubernetes.io/zh-cn/docs/concepts/serv…

基于SSM的大型商场会员管理系统【附源码】

基于SSM的大型商场会员管理系统&#xff08;源码L文说明文档&#xff09; 目录 4 系统设计 4.1布局设计原则 4.2功能模块设计 4.3数据库设计 4.3.1数据库E-R图 4.3.2 数据库表结构 第五章 系统实现 5.1 管理员功能实现 5.1.1 员工管理 5.1…