手撕Python三大packages,看了他直接成为数模战神!

手撕Python三大packages,看了他直接成为数模战神!
新人博主,诚信互三,请大佬们多多支持哦~

个人主页
文章专栏
在这里插入图片描述

文章目录

在 Python 的编程世界里,包 (packages)就像是一个个百宝箱,里面装满了各种各样实用的工具。对于想要进行数据分析、科学计算和数据可视化的初学者来说, numpypandasmatplotlib这三个包堪称必备利器。它们能极大地提升编程效率,让复杂的数据处理和可视化任务变得更加轻松。不过,在使用这些包的强大功能之前,我们得先学会如何正确地导入它们。接下来,就让我们一步步深入了解这三个包的导入方式以及基础应用,为开启数据处理与分析的奇妙之旅做好准备。

Numpy 包的导入与基础使用

导入 Numpy

numpy,全称 Numerical Python,主要用于处理多维数组和进行高效的矩阵运算。在 Python 中导入numpy非常简单,只需在代码开头输入以下语句:

import numpy as np 

这里的as np是一种约定俗成的写法,它相当于给numpy这个包取了一个简短的别名。这样一来,在后续的代码中,当我们要调用numpy包中的各种函数和功能时,直接使用np就可以了,既方便又能让代码看起来更加简洁。比如说,numpy中用于创建数组的函数array,我们就可以写成np.array

Numpy 基础用法示例

  1. 创建数组
arr = np.array([1,2,3,4,5])print(arr)

这段代码中,np.array([1, 2, 3, 4, 5])创建了一个包含数字 1 到 5 的一维数组,然后把这个数组赋值给变量arr。最后,使用print()函数将数组打印出来。

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

这里np.array([[1, 2, 3], [4, 5, 6]])创建了一个 2 行 3 列的二维数组,第一行是[1, 2, 3],第二行是[4, 5, 6],并将其赋值给two_d_arr变量,再通过print()函数展示这个二维数组。

  • 一维数组:数组在numpy中是一种非常重要的数据结构。创建一维数组时,我们把要包含在数组中的数据,用方括号括起来,作为参数传递给np.array()函数。例如:
  • 二维数组:二维数组可以理解为一个表格,有行有列。创建二维数组时,我们传入一个由多个列表组成的列表,每个内部列表代表二维数组的一行。例如:
  1. 数组运算
arr = np.array([1,2,3,4,5]) result = arr *2print(result)

这里,arr * 2会将数组arr中的每一个元素都乘以 2,得到一个新的数组result,然后打印出这个新数组。

arr = np.array([1,2,3,4,5]) sum_result = np.sum(arr)print(sum_result)

np.sum(arr)会把数组arr中所有元素相加,得到的结果赋值给sum_result变量并打印。类似地,计算数组元素的平均值可以使用np.mean()函数:

arr = np.array([1,2,3,4,5]) mean_result = np.mean(arr)print(mean_result)

np.mean(arr)会计算数组arr元素的平均值,并将结果赋值给mean_result变量后打印。

  • 元素级运算numpy的强大之处在于它能快速地对数组中的每个元素进行运算。比如,我们想把数组中的每个元素都乘以 2,只需要简单地使用乘法运算符*
  • 统计运算numpy提供了许多方便的函数来计算数组元素的统计量。例如,计算数组元素的和,可以使用np.sum()函数:
  1. 数组索引与切片
arr = np.array([1,2,3,4,5]) element = arr[2]print(element)

这里arr[2]表示获取数组arr中索引为 2 的元素,也就是第三个元素(因为索引从 0 开始),并将其赋值给element变量后打印。

arr = np.array([1,2,3,4,5]) sub_arr = arr[1:3]print(sub_arr)

arr[1:3]表示从索引为 1 的元素开始(即第二个元素),到索引为 3 的元素之前(不包括第四个元素),将这部分元素组成一个新的子数组赋值给sub_arr变量,最后打印这个子数组。

  • 索引:通过索引,我们可以获取数组中特定位置的元素。在numpy数组中,索引是从 0 开始的。例如,要获取数组arr的第三个元素:
  • 切片:切片操作允许我们获取数组的一部分。比如,要获取数组arr从第二个元素到第四个元素(不包括第四个元素)的子数组,可以这样写:

Pandas 包的导入与应用

导入 Pandas

pandas是 Python 中用于数据处理和分析的核心库。它提供了两种主要的数据结构:Series(一维数据)和DataFrame(二维数据,类似于表格),以及大量用于数据清洗、转换和分析的函数。导入pandas的常用方式是:

import pandas as pd 

numpy一样,as pdpandas包取了一个简洁的别名,方便后续在代码中调用其功能。

Pandas 基础操作

  1. 读取数据
data = pd.read_csv('data.csv')print(data.head())# 查看前5行数据

pd.read_csv('data.csv')会读取data.csv文件中的数据,并将其存储为一个DataFrame对象,赋值给data变量。data.head()则是用于查看这个DataFrame的前 5 行数据,方便我们快速了解数据的大致结构。

data = pd.read_excel('data.xlsx')print(data.head())

同样,pd.read_excel('data.xlsx')会将 Excel 文件中的数据读取为DataFrame对象,data.head()用于查看前 5 行数据。

  • CSV 文件:CSV(Comma - Separated Values)文件是一种常见的数据存储格式。使用pandas读取 CSV 文件非常简单。假设我们有一个名为data.csv的文件,代码如下:
  • Excel 文件:pandas也支持读取 Excel 文件。如果有一个名为data.xlsx的 Excel 文件,可以这样读取:
  1. 数据筛选
data = pd.read_csv('data.csv') filtered_data = data[data['column_name']>10]print(filtered_data)

这里data['column_name'] > 10会生成一个布尔值的 Series,True表示对应行的column_name列的值大于 10,False则表示不大于。然后将这个布尔值 Series 作为索引,从data这个DataFrame中筛选出对应True的行,组成新的DataFrame对象filtered_data并打印。

data = pd.read_csv('data.csv') filtered_data = data[(data['column_name_1']>10)&(data['column_name_2']=='specific_value')]print(filtered_data)

这里(data['column_name_1'] > 10) & (data['column_name_2'] =='specific_value')通过&运算符将两个条件连接起来,表示同时满足这两个条件。同样会生成一个布尔值的 Series,再用它从data中筛选出符合条件的行,赋值给filtered_data并打印。

  • 基于条件筛选:在数据分析中,我们经常需要从数据中筛选出满足特定条件的行。例如,要从数据中筛选出某一列大于特定值的行。假设data.csv文件中有一列名为column_name,我们要筛选出这一列中值大于 10 的行:
  • 多条件筛选:有时我们需要同时满足多个条件来筛选数据。比如,筛选出某一列大于 10 且另一列等于特定值的行。假设还有一列名为column_name_2,特定值为'specific_value'
  1. 数据清理
data = pd.read_csv('data.csv') data = data.dropna()

data.dropna()会返回一个新的DataFrame,其中所有包含缺失值的行都被删除了,然后将这个新的DataFrame重新赋值给data变量。如果想填充缺失值为某个特定值,比如 0,可以使用fillna()方法:

data = pd.read_csv('data.csv') data = data.fillna(0)

data.fillna(0)会将data中所有的缺失值替换为 0,生成一个新的DataFrame并重新赋值给data。

data = pd.read_csv('data.csv') data['column_name']= pd.to_numeric(data['column_name'])

pd.to_numeric(data['column_name'])会尝试将data['column_name']这一列的字符串数据转换为数值类型,如果转换成功,会返回一个新的数值类型的 Series,然后将其重新赋值给data['column_name'],从而更新了data中这一列的数据类型。

  • 处理缺失值:真实世界的数据中往往会存在缺失值。pandas提供了多种方法来处理这些缺失值。比如,要删除包含缺失值的行,可以使用dropna()方法:
  • 数据类型转换:有时候数据列的类型可能不符合我们的分析需求,需要进行转换。例如,将某一列的数据类型从字符串转换为数值类型。假设data.csv中有一列column_name的数据类型是字符串,要将其转换为数值类型,可以使用pd.to_numeric()函数:

Matplotlib 包的导入与数据可视化

导入 Matplotlib

matplotlib是 Python 中广泛使用的数据可视化库,它能够创建各种精美的静态、动态以及交互式的可视化图表,让数据以直观易懂的图形形式展现出来。通常我们使用以下方式导入:

import matplotlib.pyplot as plt 

这里的pltmatplotlib.pyplot的简写,通过这个别名,我们可以方便地调用matplotlib中各种绘图相关的函数。

Matplotlib 绘图示例

  1. 折线图:折线图常用于展示数据随时间或其他连续变量的变化趋势。下面是绘制一个简单折线图的代码:
import numpy as np import matplotlib.pyplot as plt x = np.array([1,2,3,4,5]) y = np.array([2,4,6,8,10]) plt.plot(x, y) plt.xlabel('X轴') plt.ylabel('Y轴') plt.title('简单折线图') plt.show()

首先,我们导入了numpymatplotlib.pyplot。然后,使用np.array()函数创建了两个数组x和y,分别作为折线图的横坐标和纵坐标数据。接着,plt.plot(x, y)函数根据x和y的数据绘制折线。plt.xlabel('X轴')用于设置横坐标的标签为 “X 轴”,plt.ylabel('Y轴')设置纵坐标标签为 “Y 轴”,plt.title('简单折线图')则给图表添加了标题 “简单折线图”。最后,plt.show()函数将绘制好的图表显示出来。

  1. 散点图:散点图用于展示两个变量之间的关系,通过点的分布情况可以观察数据的趋势或规律。以下是绘制散点图的代码示例:
import numpy as np import matplotlib.pyplot as plt x = np.random.rand(50) y = np.random.rand(50) plt.scatter(x, y) plt.xlabel('X变量') plt.ylabel('Y变量') plt.title('散点图') plt.show()

这里我们依旧导入了numpymatplotlib.pyplotnp.random.rand(50)函数生成了 50 个 0 到 1 之间的随机数,分别赋值给x和y作为散点图的横纵坐标数据。plt.scatter(x, y)函数根据这些数据绘制散点图。之后,同样通过plt.xlabel()plt.ylabel()plt.title()函数分别设置坐标轴标签和图表标题,最后用plt.show()显示图表。

  1. 柱状图:柱状图适合用于比较不同类别之间的数据大小。绘制柱状图的代码如下:
import matplotlib.pyplot as plt categories =['A','B','C','D'] values =[10,20,15,25] plt.bar(categories, values) plt.xlabel('类别') plt.ylabel('数值') plt.title('柱状图') plt.show()

在这段代码中,我们定义了一个包含类别名称的列表categories和一个对应类别的数值列表valuesplt.bar(categories, values)函数根据这两个列表绘制柱状图,每个类别对应一个柱子,柱子的高度由values中的数值决定。接着,通过plt.xlabel()、plt.ylabel()plt.title()函数设置坐标轴标签和图表标题,最后用plt.show()将绘制好的柱状图显示出来。

总结

numpy、pandas和matplotlib这三个包在 Python 的数据分析、科学计算和数据可视化工作流程中起着举足轻重的作用。通过正确导入它们,我们能够快速利用其丰富且强大的功能。对于初学者而言,熟练掌握这些包的导入及基础用法,就如同掌握了开启数据处理大门的钥匙,为构建高效的数据分析和可视化工作流程奠定坚实的基础。这不仅能提升我们的工作效率,还能帮助我们更有效地从海量数据中挖掘出有价值的信息。

lt.show()`将绘制好的柱状图显示出来。

总结

numpy、pandas和matplotlib这三个包在 Python 的数据分析、科学计算和数据可视化工作流程中起着举足轻重的作用。通过正确导入它们,我们能够快速利用其丰富且强大的功能。对于初学者而言,熟练掌握这些包的导入及基础用法,就如同掌握了开启数据处理大门的钥匙,为构建高效的数据分析和可视化工作流程奠定坚实的基础。这不仅能提升我们的工作效率,还能帮助我们更有效地从海量数据中挖掘出有价值的信息。

Read more

LeetCode 141题:环形链表的艺术与科学

LeetCode 141题:环形链表的艺术与科学

🌟 LeetCode 141题:环形链表的艺术与科学 * 🌀 环形链表:当数据开始循环舞蹈 * 🔍 解法一:哈希表法 - 记忆的艺术 * 解题思路 * 性能分析 * 🏃‍♂️ 解法二:快慢指针法 - 龟兔赛跑的智慧 * 解题思路 * 性能优势 * 💻 代码实现与调试心得 * 🌈 思维与实现的分离 * 🎯 总结 因为想更好地为义父义母大佬服务,本文 Bilibili 视频地址 🌀 环形链表:当数据开始循环舞蹈 在计算机科学的世界里,链表是一种优雅而基础的数据结构。正常链表如同一条笔直的小路,从起点(head)出发,每个节点指向下一个节点,最终以空指针(nullptr)作为终点,标志着旅程的结束。 Head Node1 Node2 Node3 nullptr 然而,环形链表则打破了这种线性规则,它更像是一个神秘的莫比乌斯环,没有真正的终点。链表的某个节点不再指向空,而是指向链表中已经存在的另一个节点,形成了一个无尽的循环。 Head

By Ne0inhk

Python调用C函数的5种方式大比拼,第3种最高效却鲜为人知

第一章:Python调用C函数的5种方式大比拼,第3种最高效却鲜为人知 在高性能计算和系统级编程中,Python常需调用C语言编写的函数以提升执行效率。目前主流的实现方式有五种,各自在易用性、性能和开发成本上存在显著差异。 使用 ctypes 直接加载动态库 ctypes 是 Python 标准库的一部分,无需额外安装,适合快速调用已编译的 C 共享库。 # 编译命令: gcc -shared -fPIC -o libmath.so math.c from ctypes import CDLL lib = CDLL("./libmath.so") result = lib.add(5, 3) # 假设C中定义了 int add(int a, int b)

By Ne0inhk

Python 数据分析第三版(二)

原文:annas-archive.org/md5/74a7b24994c40ad3a90c290c07b529df 译者:飞龙 协议:CC BY-NC-SA 4.0 第四章:线性代数 线性代数和统计学是任何数据分析活动的基础。统计学帮助我们获得初步的描述性理解,并从数据中做出推断。在上一章中,我们已经理解了数据分析的描述性和推断性统计度量。另一方面,线性代数是数据专业人员的核心基础之一。线性代数对于处理向量和矩阵非常有用。大多数数据以向量或矩阵的形式存在。深入理解线性代数有助于数据分析师和数据科学家理解机器学习和深度学习算法的工作流程,使他们能够根据业务需求灵活地设计和修改算法。例如,如果你想使用主成分分析(PCA),你必须了解特征值和特征向量的基础知识;或者如果你想开发一个推荐系统,你必须了解奇异值分解(SVD)。扎实的数学和统计学背景将有助于更顺利地过渡到数据分析领域。 本章主要关注线性代数的核心概念,如多项式、行列式、矩阵逆;解线性方程;特征值和特征向量;SVD;随机数;二项分布和正态分布;正态性检验;以及掩码数组。我们还可以使用 Python 的 NumPy 和 S

By Ne0inhk

【超详细】Python FastAPI 入门:写给新手的“保姆级”教程

【超详细】Python FastAPI 入门:写给新手的“保姆级”教程(2025–2026 最新版) 这篇教程的目标是: 零基础 → 能独立写出生产级别的 RESTful API 预计认真跟着做完前 80%,你大概需要 3–10 天(每天 2–4 小时)。 目录(建议按顺序阅读) 1. 为什么选择 FastAPI(而不是 Flask / Django) 2. 环境准备(最稳的几种方式) 3. 第一个 FastAPI 程序(Hello World) 4. 核心概念速览(5 分钟建立大局观) 5. 路径参数、查询参数、请求体(

By Ne0inhk