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

如何导入

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

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().

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

R语言lavaan结构方程模型在生态学研究中的应用介绍及要点回顾

除了一般的线性回归外&#xff0c;SEM可以用于探究&#xff1a;测量不变性&#xff08;Measurement invariance&#xff09;、多组模型&#xff08;Multiple group modelling)、潜在增长模型&#xff08;Latent growth modeling&#xff09;、非线性混合模型&#xff08;Nonlin…

MySQL如何创建存储过程

工作中有时候需要自己去创建存储过程&#xff0c;然后调用存储去获得一些数据等&#xff0c;接下来就给大家介绍下MySQL如何创建存储过程。 语法&#xff1a; CREATE PROCEDURE 存储程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 …] 过…

【保姆级教程】如何在 Windows 上实现和 Linux 子系统的端口映射

写在前面 上次分享【保姆级教程】Windows上安装Linux子系统&#xff0c;搞台虚拟机玩玩&#xff0c;向大家介绍了什么是虚拟机以及如何在Windows上安装Linux虚拟机。对于开发同学而言&#xff0c;经常遇到的一个问题是&#xff1a;很多情况下代码开发需要依赖 Linux 系统&…

Mac 配置 Aria2

文章目录 1. Aria2 安装1.1 安装 brew1.2 安装 Aria2 2. 配置 Aria22.1 创建配置文件 aria2.conf 和空对话文件 aria2.session2.2 编辑配置文件 aria2.conf 3. 开机启动设置3.1 创建用户启动文件3.2 管理自启动项 4. 配置 BT tracker 自动更新4.1 XIU2/TrackersListCollection …

zheng项目:从零到一打造全方位J2EE企业级开发解决方案

zheng项目&#xff1a;从零到一打造全方位J2EE企业级开发解决方案 摘要&#xff1a; 在当今快速发展的企业级应用开发领域&#xff0c;一套高效、稳定且可扩展的解决方案对于企业的成功至关重要。zheng项目旨在提供一套全面的J2EE企业级开发解决方案&#xff0c;从前端模板到自…

Java基于微信小程序高校体育场管理小程序

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

视频批量剪辑,轻松平均分割视频并保留片段中的音频,高效管理视频

在这个信息爆炸的时代&#xff0c;视频已经成为了我们获取和分享信息的重要渠道。不论是制作短视频、教育课程、还是商业广告&#xff0c;我们都需要对视频进行精细化的编辑。然而&#xff0c;面对大量的视频素材&#xff0c;如何进行高效、便捷的批量剪辑呢&#xff1f; 第一…

【蓝桥杯嵌入式】RTC——实时时钟

一、RTC简介 RTC RTC—real time clock&#xff0c;实时时钟&#xff0c;主要包含日历、闹钟和自动唤醒这三部分的功能&#xff0c;其中的日历功能我们使用的最多。日历包含两个32bit的时间寄存器&#xff0c;可直接输出时分秒&#xff0c;星期、月、日、年。 从Cubemx里的配置…

DasViewer中,像下图山坡是选择拟合平面还是自定义平面?还是其他的基准面?

问题如图 如若山坡是计算斜面的土方&#xff0c;可以选择用拟合平面模式&#xff0c;该模式适用斜坡。 DasViewer是由大势智慧自主研发的免费的实景三维模型浏览器,采用多细节层次模型逐步自适应加载技术,让用户在极低的电脑配置下,也能流畅的加载较大规模实景三维模型,提供方…

3D雷达和相机联合标定:一种灵活且精确的基于目标的外参标定方法

3D雷达和相机联合标定&#xff1a;一种灵活且精确的基于目标的外参标定方法 论文链接&#xff1a;https://arxiv.org/pdf/2307.15264.pdf 附赠自动驾驶学习资料和量产经验&#xff1a;链接 摘要 本文介绍了3D雷达和相机联合标定&#xff1a;一种灵活且精确的基于目标的外参…

驾校数字化转型:驾校小程序开发服务革新

在信息技术飞速发展的今天&#xff0c;各行各业都在寻求数字化转型的路径。驾校行业也不例外&#xff0c;通过开发小程序&#xff0c;驾校能够为学员提供更加便捷、高效的服务&#xff0c;同时也能提升自身的管理效率和市场竞争力。 驾校小程序的优势 驾校小程序的开发&#…

【学习】软件验收测试,能否选择第三方检测机构进行测试?

随着信息技术的快速发展&#xff0c;软件已经成为各行各业中不可或缺的一部分。为了保证软件的质量和稳定性&#xff0c;验收测试成为了软件开发过程中至关重要的一环。那么&#xff0c;第三方软件测试机构可以做验收测试吗&#xff1f;我们一起来看下今日的分享。 一、验收测…

2024.4.3-day08-CSS 盒子模型(溢出显示、伪元素)

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业 2024.4.3-学习笔记css溢出显示单行文本溢出显示省略号多行文本溢出显示省…

Spring boot微服务分布式框架Rouyi Cloud权限认证

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 往期热门专栏回顾 专栏…

【opencv】示例-asift.cpp 对两张图片之间进行仿射特征比对

#include <opencv2/core.hpp> // 包含OpenCV核心功能的头文件 #include <opencv2/imgproc.hpp> // 包含OpenCV图像处理功能的头文件 #include <opencv2/features2d.hpp> // 包含OpenCV特征检测相关功能的头文件 #include <opencv2/highgui.hpp> // 包含…

在 Amazon Timestream 上通过时序数据机器学习进行预测分析

由于不断变化的需求和现代化基础设施的动态性质&#xff0c;为大型应用程序规划容量可能会非常困难。例如&#xff0c;传统的反应式方法依赖于某些 DevOps 指标&#xff08;如 CPU 和内存&#xff09;的静态阈值&#xff0c;而这些指标在这样的环境中并不足以解决问题。在这篇文…

5G随身wifi真实测评!飞猫5g随身wifi怎么样?飞猫5GVS格行5G随身wifi哪款网速快?5G随身wifi推荐品牌第一名!

飞猫5G随身wifi&#xff1a; 产品外观&#xff1a;黑色大气外观&#xff0c;净重175g&#xff0c;屏幕有信号和指示灯。 产品性能&#xff1a;采用展锐芯片。6根LDS天线&#xff0c;网速100-200mbps&#xff0c;网络延迟10-20ms&#xff0c;2.4G/5G双频可选&#xff0c;超稳定…

重生奇迹mu剑士连招技巧

剑士是攻守兼备的近战之王&#xff0c;拥有着娴熟的剑术与强大的力量。 剑士的攻击能力和防御能力都比较强&#xff0c;自身的血量也比较高。他不仅可以双持单手武器&#xff0c;达到双剑流或者剑盾流的水平&#xff0c;同时&#xff0c;剑士也可以使用强大的双手武器&#xf…

Python最简单的图片爬虫

Python最简单的图片爬虫&#xff0c;20行代码带你爬遍整个网站-腾讯云开发者社区-腾讯云 (tencent.com) import urllib.parse import json import requests import jsonpath url https://www.duitang.com/napi/blog/list/by_search/?kw{}&start{} label 美女 label url…