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

server/2024/12/22 19:08:54/

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

目录

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

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

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

数组的创建与操作

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

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

python"># 数组索引
print("访问第二个元素:", array1d[1])# 切片操作
print("前两个元素:", array1d[:2])# 数组重塑
reshaped_array = array2d.reshape(3, 2)
print("重塑后的数组:\n", reshaped_array)

数学运算与线性代数

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

python"># 数组运算
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还支持随机数生成,常用于模拟和算法验证等场景。以下代码展示如何生成随机数。

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

扩展:线性回归示例

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

python">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的表格,可以方便地进行数据操作。以下是创建和基本操作的示例。

python">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提供了丰富的工具来处理缺失值、重复数据等问题。

python"># 创建包含缺失值的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强大的数据过滤与分组功能,能够帮助用户深入分析数据。

python"># 基于条件进行过滤
filtered_df = df[df['年龄'] > 28]
print("年龄大于28的记录:\n", filtered_df)# 数据分组与聚合
grouped = df.groupby('收入').mean()
print("收入分组统计:\n", grouped)

数据合并与连接

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

python"># 创建另一个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特别适合进行时间序列分析,以下是一个时间序列分析的简单示例。

python"># 创建时间序列数据
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的基础用法。

python">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提供了丰富的自定义选项,用户可以根据需求调整图形的样式、颜色、标记等。

python"># 自定义折线图
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的一些基本应用。

python">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提供了多种复杂图形的绘制能力,能够直观地展示数据之间的关系。

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

可视化数据分布

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

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

扩展:多图组合示例

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

python">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.ppmy.cn/server/126443.html

相关文章

Chromium 使用安全 DNS功能源码分析c++

一、选项页安全dns选项如下图: 二、那么如何自定义安全dns功能呢? 1、先看前端部分代码调用 shared.rollup.jsclass PrivacyPageBrowserProxyImpl {.................................................................getSecureDnsResolverList() {re…

华为云技术深度解析:以系统性创新加速智能化升级

华为云技术深度解析:以系统性创新加速智能化升级 在当今数字化转型的浪潮中,云计算作为关键的基础设施,正以前所未有的速度推动着各行各业的智能化升级。作为全球领先的云服务提供商,华为云凭借其深厚的技术积累和创新实力&#…

springboot儿童物品共享平台的设计与实现

目录 毕设制作流程功能和技术介绍系统实现截图开发核心技术介绍:使用说明开发步骤编译运行代码执行流程核心代码部分展示可行性分析软件测试详细视频演示源码获取 毕设制作流程 (1)与指导老师确定系统主要功能; (2&am…

互联网前后端分离的开发场景,一般会员和数据权限的判断是放在前端还是后端?

推荐学习文档 golang应用级os框架,欢迎stargolang应用级os框架使用案例,欢迎star案例:基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识,这里有免费的golang学习笔…

UE5 项目缓存文件删除、版本控制说明(工程目录结构)

文章目录 前言一、项目文件示例二、缓存文件删除、版本控制说明前言 我们在拷贝项目或者使用 Git 进行版本控制,如果不对文件选择性的控制,大量缓存文件会导致传输速度变慢;或者我们的项目报错了,想要删除缓存文件又不知如何下手,哪些是可删除的,哪些又是不可删除的,本…

自定义 Git

我们可以对 Git 做一些配置。 ‍ 配置别名 有没有经常敲错命令?比如 git status​?status ​这个单词真心不好记。 如果敲 git st ​就表示 git status ​那就简单多了,当然这种偷懒的办法我们是极力赞成的。 我们只需要敲一行命令&…

FOC电机驱动开发踩坑记录

关键技术 SVPWM电机磁场控制电流采样park变换和Clark变换滑膜观测器(无感FOC) SVPWM电机磁场控制 SVPWM主要思想是通过精确的对UVW三相电流的分时控制,来控制转子的合成力矩,达到目标方向,常用的是6分区的设计&…

行为设计模式 -策略设计模式- JAVA

策略设计模式 一 .简介二. 案例2.1 抽象策略(Strategy)类2.2 具体策略(Concrete Strategy)类2.3 环境(Context)类2.4 测试 三. 结论3.1 优缺点3.2 使用场景 前言 这是我在这个网站整理的笔记,有错误的地方请…