十分钟让我带你入门Pandas基础使用

news2024/11/16 21:57:59

如何导入

通常,我们按如下方式导入:

In [1]: import numpy as np

In [2]: import pandas as pd

Pandas的基本数据结构

Pandas 提供了两种类型的类来处理数据:

Series: 保存任何类型数据的一维标记数组

such as integers, strings, Python objects etc.

DataFrame:一种二维数据结构,用于保存类似 二维数组或包含行和列的表。

Object creation对象创建

通过传递值列表来创建Series,让 pandas 创建 默认的 RangeIndex.

在这里插入图片描述

通过使用 date_range() 传递具有日期时间索引的 NumPy 数组来创建 DataFrame 和标记的列:

在这里插入图片描述

通过传递对象字典(其中键为列)创建 DataFrame 标签和值是列值。

在这里插入图片描述

生成的 DataFrame 的列具有不同的 类型:

在这里插入图片描述

Viewing data查看数据

使用 DataFrame.head() 和 DataFrame.tail() 查看框架的顶行和底行 分别:如何参数未指定默认显示5行

在这里插入图片描述

显示 DataFrame.index 或 DataFrame.columns:

在这里插入图片描述

返回基础数据的 NumPy 表示形式,并带有“DataFrame.to_numpy()” 没有索引或列标签:

在这里插入图片描述

NumPy 数组对整个数组有一个 dtype,而 pandas DataFrames 每列有一个 dtype。当你调用“DataFrame.to_numpy()”时,熊猫会 找到可以保存 DataFrame 中所有 dtype 的 NumPy dtype。 如果通用数据类型为“object”,则DataFrame.to_numpy()“将需要 复制数据。

在这里插入图片描述

describe() 显示数据的快速统计摘要

在这里插入图片描述

转置数据

在这里插入图片描述

DataFrame.sort_index() 按轴排序:
在这里插入图片描述
DataFrame.sort_values() 按值排序:

在这里插入图片描述

Selection选择

选择和设置的标准 Python / NumPy 表达式是 直观且方便交互式工作,对于生产代码,我们 推荐优化的 pandas 数据访问方式 DataFrame.at()DataFrame.iat()、DataFrame.loc() 和 DataFrame.iloc()

对于 DataFrame,传递单个标签会选择列和 生成一个等效于 ‘df 的序列。A’

在这里插入图片描述

对于 DataFrame,传递切片会选择匹配的行:

在这里插入图片描述

Selection by label按标签选择

选择与标签匹配的行:

在这里插入图片描述

选择所有行 (:) 并选择列标签

在这里插入图片描述

对于标签切片,包括两个终结点:

在这里插入图片描述

选择单行和列标签将返回标量

在这里插入图片描述

为了快速访问标量(等效于前面的方法):
在这里插入图片描述

Selection by position按位置选择

通过传递的整数的位置进行选择:

在这里插入图片描述

整数切片的作用类似于 NumPy/Python:

在这里插入图片描述

整数位置列表:

在这里插入图片描述

对于显式切行:
在这里插入图片描述
对于显式切片列:
在这里插入图片描述
要显式获取值:
在这里插入图片描述
为了快速访问标量(等效于前面的方法):
在这里插入图片描述

Boolean indexing布尔索引

选择其中 ‘df.A’ 大于0.

在这里插入图片描述

从满足布尔条件的 DataFrame 中选择值

在这里插入图片描述

使用 isin() 方法进行过滤:

在这里插入图片描述

Setting设置

设置新列会自动按索引对齐数据:

在这里插入图片描述

按标签设置值:

在这里插入图片描述

按位置设置值:

在这里插入图片描述

通过使用 NumPy 数组进行赋值进行设置:

在这里插入图片描述

带有设置的“where”操作:

在这里插入图片描述

Missing data缺少数据

对于 NumPy 数据类型,“np.nan”表示缺失数据。它是由 默认值不包括在计算中。

重新索引允许您更改/添加/删除指定轴上的索引。这 返回数据的副本:

在这里插入图片描述

DataFrame.dropna() 删除任何缺少数据的行:

在这里插入图片描述

DataFrame.fillna() 填充缺失的数据:

在这里插入图片描述

isna() 获取值为 ‘nan’ 的布尔掩码:

在这里插入图片描述

Operations操作

操作通常排除缺失数据。

计算每列的平均值:

在这里插入图片描述

计算每行的平均值:

在这里插入图片描述

使用具有不同索引或列的另一个 Series 或 DataFrame 进行操作 将使结果与索引或列标签的并集对齐。此外,大熊猫 自动沿指定尺寸广播,并将使用“np.nan”填充未对齐的标签

在这里插入图片描述

User defined functions用户定义的函数

DataFrame.agg() 和 DataFrame.transform() 应用用户定义的函数 分别减少或广播其结果。平均值乘以5.6

在这里插入图片描述
在这里插入图片描述

Value Counts价值计数

在这里插入图片描述

String 方法

Series在’str’中配备了一套字符串处理方法 属性,以便于对数组的每个元素进行操作,如 下面的代码片段。在矢量化字符串方法中查看更多信息
在这里插入图片描述

Merge合并

使用concat()按行连接pandas对象:
在这里插入图片描述
向DataFrame中添加列的速度相对较快。 一行需要一个副本,并且可能是昂贵的。我们建议传递一个 而是将预先构建的记录列表添加到DataFrame构造函数中 通过迭代地向其添加记录来构建DataFrame。
在这里插入图片描述

Join加入

merge()在特定列上启用SQL样式连接类型沿着。请参阅数据库样式连接部分。

在这里插入图片描述

Grouping分组

分组的含义
根据某些标准将数据分组
将函数独立地应用于每个组
将结果合并到数据结构中
在这里插入图片描述

按列标签分组,选择列标签,然后应用 DataFrameGroupBy.sum() 函数到结果 团体:

在这里插入图片描述

按多列标签分组形成MultiIndex.:

在这里插入图片描述

Reshaping重塑

在这里插入图片描述

stack() 方法“压缩”DataFrame 中的一个级别 列:

在这里插入图片描述

使用“堆叠”的 DataFrame 或 Series(使用 MultiIndex 作为 index), stack() 的逆操作是 unstack(),默认情况下取消最后一层的堆叠:

在这里插入图片描述
在这里插入图片描述

Pivot tables数据透视表

在这里插入图片描述

ivot_table() 对指定“values”index“和”columns“的 DataFrame 进行透视

在这里插入图片描述

Time series时间序列

pandas 具有简单、强大、高效的执行功能 频率转换期间的重采样操作(例如,二次转换 数据转换为 5 分钟数据)。这在但不限于以下情况中极为常见: 金融应用。
**这段代码使用了Python的Pandas库和NumPy库来处理时间序列数据。下面是代码的逐行解释:

  1. rng = pd.date_range("1/1/2012", periods=100, freq="s"):这一行创建了一个日期范围(rng),这个日期范围从2012年1月1日开始,总共包含100个时间点,每个时间点之间的间隔是1秒(由freq="s"指定)。

  2. ts = pd.Series(np.random.randint(0,500,len(rng)),index=rng):这一行创建了一个Pandas的Series对象(ts),它的数据是通过np.random.randint(0,500,len(rng))生成的,这个函数从0到499(包含0和499)中随机选择整数,数量与rng的长度相同,即100个。这些随机整数作为Series的值,而rng(即之前创建的日期范围)作为Series的索引。

  3. ts.resample("5Min").sum():这一行是对ts进行重新采样(resample),并对每个采样区间的数据求和。"5Min"指定了采样频率,即每5分钟为一个采样区间。由于原始数据每秒有一个数据点,重新采样后,每个5分钟的区间内的数据点会被求和。在这个例子中,因为原始数据只覆盖了100秒,所以实际上只有一个5分钟的采样区间,且这个区间内包含所有的数据点。因此,最终结果将是这100个随机整数的总和。

输出结果将是一个Pandas的Series对象,其索引是重新采样的时间区间(在这个例子中,只有一个时间区间,即从2012年1月1日 00:00:00开始的第一个5分钟区间),值是该时间区间内所有数据点的总和。

简而言之,这段代码生成了一个以秒为间隔的100个随机整数的时间序列,然后将这个时间序列的数据点按每5分钟一个区间进行分组,并计算每个区间内数据点的总和。由于只有100秒的数据,实际上只有一个区间,所以输出结果将是这100个随机数的总和。**
在这里插入图片描述

Series.tz_localize() 将时间序列本地化到时区

在这里插入图片描述

Series.tz_convert() 将时区感知时间序列转换为另一个时区:

在这里插入图片描述

向时间序列添加非固定持续时间(BusinessDay):
pd.offsets.BusinessDay(5) 的含义是表示一个时间偏移量,用于将一个特定的日期向前或向后移动 5 个工作日。这里的“工作日”通常指的是周一到周五,不包括周末和公共假日。
在这里插入图片描述

Categoricals分类

在这里插入图片描述

将原始成绩转换为分类数据类型:

在这里插入图片描述

将类别重命名为更有意义的名称:

在这里插入图片描述

对类别重新排序并同时添加缺失的类别(Series.cat() 下的方法默认返回一个新的 Series):

在这里插入图片描述

排序是按照类别中的顺序,而不是词汇顺序:

在这里插入图片描述

按带有“observed=False”的分类列分组也会显示空类别:

在这里插入图片描述

Plotting绘图

我们使用标准约定来引用 matplotlib API:

在这里插入图片描述

plt.close 方法用于关闭图形窗口:

在这里插入图片描述

plot() 绘制所有列:

在这里插入图片描述

Importing and exporting data 导入和导出数据

写入 csv 文件:使用 DataFrame.to_csv()
从 csv 文件读取:使用 read_csv()

在这里插入图片描述

Parquet实木复合地板

写入 Parquet 文件:
使用 read_parquet() 从 Parquet 文件存储读取:

在这里插入图片描述

Excel

使用 DataFrame.to_excel() 写入 Excel 文件:
使用 read_excel() 从 Excel 文件读取:

在这里插入图片描述

Gotchas陷阱

尝试对 Series 或 DataFrame 执行布尔运算 您可能会看到如下异常:

In [141]: if pd.Series([False, True, False]):
   .....:      print("I was true")
   .....: 
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-141-b27eb9c1dfc0> in ?()
----> 1 if pd.Series([False, True, False]):
      2      print("I was true")

~/work/pandas/pandas/pandas/core/generic.py in ?(self)
   1574     @final
   1575     def __nonzero__(self) -> NoReturn:
-> 1576         raise ValueError(
   1577             f"The truth value of a {type(self).__name__} is ambiguous. "
   1578             "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
   1579         )

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

在这里插入图片描述

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

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

相关文章

软件库V1.2版本开源-首页UI优化

iAppV3源码&#xff0c;首页的分类更换成了标签布局&#xff0c;各位可以参考学习&#xff0c;界面名称已经中文标注&#xff01; 老版本和现在的版本还是有较大的区别的&#xff0c;建议更新一下&#xff01; 新版本改动界面如下&#xff1a; 1、首页.iyu&#xff1a;分类按…

c++的学习之路:13、vector(2)

本章主要是模拟实现vector&#xff0c;文章末附上代码&#xff0c;和源码。 目录 一、STL源码 二、构造与析构 三、迭代器与【】、size、capacity、empty 四、reserve与resize 五、push_back与pop_back 六、insert与erase 七、测试 1 八、代码 九、思维导图 一、STL源…

永磁同步电机谐波抑制算法(4)——多同步旋转坐标系谐波电流抑制存在的问题以及改进办法

1.问题的引出 在之前的内容中以及讲了多同步旋转坐标系的五七次谐波电流的抑制。 永磁同步电机谐波抑制算法&#xff08;1&#xff09;——基于多同步旋转坐标系的五七次谐波电流抑制 - 知乎这段时间发现电机里面会存在五次谐波&#xff0c;然后学了学谐波抑制的方法。一般比…

海外公司注册推广:15种利用社交媒体的方法大揭秘-华媒舍

社交媒体在如今的全球化时代扮演着重要的角色&#xff0c;为海外公司注册推广提供了各种有效的方法。本文将介绍15种利用社交媒体的方法&#xff0c;帮助海外公司实现注册推广。 1. 制定战略 在开始利用社交媒体之前&#xff0c;海外公司需要制定一个明确的推广战略。确定目标…

BUUCTF---内涵的软件(reverse)

1.题目描述&#xff0c;下载附件&#xff0c;是一个exe文件 2.用PE查看是否有壳&#xff0c;结果无壳 3.用IDA打开&#xff0c;找到main函数 4.双击_main_0,按f5&#xff0c;页面显示如下 5.看到一串可疑的字符串 6.修改为flag{49d3c93df25caad81232130f3d2ebfad}提交&#xf…

springboot 在fegin调用中sdk集成主工程,A component required a bean of type.....

一 前景描述 1.1 总结 1.主工程启动类&#xff08;这里是FeginApp8081&#xff09;所在的路径&#xff0c;和调用sdk的类&#xff0c;这里是FeginJiekou接口类型&#xff0c;其所在目录和主工程目录启动一致。则不需要在启动加制定扫描注解。 主工程启动类路径&#xff1a;…

MFC扩展库BCGControlBar Pro v34.1 - 支持Windows 10/11字体图标

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 BCGControlBar专业版 v34.1已正式发布了&#xff0c;这个版本包含了对Windows 10/11字体图标的支持、功能区和…

海外仓的出入库流程有什么痛点?位像素海外仓系统怎么提高出入库效率?

随着跨境电商的蓬勃发展&#xff0c;海外仓是其中不可或缺的一个关键环节。而货物的出库与入库则是海外仓管理中的一个核心业务流程&#xff0c;它的运作效率直接影响到整个跨境物流的效率和客户体验。今天&#xff0c;让我们具体来看一看关于海外仓出入库的流程&#xff0c;其…

Linux:谈谈阻塞式和非阻塞式IO

文章目录 阻塞式和非阻塞式IO 本篇总结的核心内容就是非阻塞式IO&#xff0c;直接看代码 阻塞式和非阻塞式IO 阻塞式IO 如下所示是典型的阻塞式IO #include <iostream> #include <unistd.h> using namespace std;int main() {char buff[1024];while(true){ssiz…

DevExpress WinForms中文教程 - 如何通过UI测试自动化增强应用可靠性?(一)

DevExpress WinForm拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜任…

simulink的硬件支持下,串口发送的模型,stm32f407的串口程序调试错误

串口调试助手能接收到数据&#xff0c;为何是8个数据&#xff1f;如之奈何&#xff1f; 参考文章&#xff1a; STM32CubeMxMATLAB Simulink串口输出实验_用stm32cubemx生成的串口都是输出-CSDN博客根据 该文章发送字符串 hello&#xff0c;发送数量为5&#xff0c;接收也是he…

Pytorch张量的数学运算:向量基础运算

文章目录 一、简单运算二、广播运算1.广播的基本规则2.广播操作的例子 三、运算函数 参考&#xff1a;与凤行 张量的数学运算是深度学习和科学计算中的基础。张量可以被视为一个多维数组&#xff0c;其在数学和物理学中有广泛的应用。这些运算包括但不限于加法、减法、乘法、除…

摄影用光这点事儿,摄影光线运用技法

一、资料描述 本套摄影用光资料&#xff0c;大小1.89G&#xff0c;共有60个文件。 二、资料目录 《10日掌握摄影用光》李俊.全彩版.pdf 《DSLR闪光灯摄影完全探索》.pdf 《Light Science and Magic》.pdf 《等待光线》戴维诺顿风光摄影手记.pdf 《高调人像摄影的布光经验…

2024年面试AI编译器岗经验总结

面试经历: 面试中必备的知识: 1.用C++实现一个卷积 (图解)一步一步使用CPP实现深度学习中的卷积 - GiantPandaCVGiantPandaCVhttp://giantpandacv.com/academic/%E7%AE%97%E6%B3%95%E7%A7%91%E6%99%AE/%E5%B0%BD%E8%A7%88%E5%8D%B7%E7%A7%AF%E7%A5%9E%E7%BB%8F%E7%BD%91%E…

C语言 循环控制——嵌套循环

目录 循环实现累加累乘 嵌套循环的设计 输出九九乘法表 循环实现累加累乘 嵌套循环的设计 输出九九乘法表

GIt 删除某个特定commit

目的 多次commit&#xff0c;想删掉中间的一个/一些commit 操作方法 一句话说明&#xff1a;利用rebase命令的d表示移除commit的功能&#xff0c;来移除特定的commit # 压缩这3次commit,head~3表示从最近1次commit开始&#xff0c;前3个commit git rebase -i head~3rebase…

Redis 5种数据结构常用命令

文章目录 1 字符串2 哈希3 列表4 集合5 有序集合 1 字符串 命令描述set key value设置指定key的值为valueget key获取指定key的值del key [key …]删除一个或多个keymset key value [key value …]设置多个key的值mget key [key …]获取一个或多个key的值incr key将key中储存的…

考研数学|怎样刷题更有效率?这些坑千万别踩!

考研数学刷题的这些困扰相信大部分的同学都是有的&#xff0c;为此我整理了一些提高考研数学刷题效率的方法和策略&#xff0c;希望能帮助你更有效地学习和解题。 首先要制定合理的刷题计划&#xff0c;首先遵循“教材→视频→全书或辅导讲义→习题集→真题→专项训练→模拟套…

基于SpringBoot的“汽车租赁系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“汽车租赁系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 管理员登录界面图 管理员功能界面…

vue广告悬浮框,页面来回移动,鼠标放上停止,离开移动

1.dom <div class"popup-dialog" id"popupDialog" mouseover"onMmouseover" mouseout"onMouseout"><p>vue广告悬浮</p></div>2.js mounted() {this.initPopup();},beforeDestory() {if (this.times) {clearIn…