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

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为用户提供了强大而灵活的可视化工具。通过有效的图形展示,用户可以更直观地分析数据,为后续的决策提供依据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Switch616

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值