Python酷库之旅-第三方库Pandas(027)

目录

​一、用法精讲

68、pandas.infer_freq函数

68-1、语法

68-2、参数

68-3、功能

68-4、返回值

68-5、说明

68-6、用法

68-6-1、数据准备

68-6-2、代码示例

68-6-3、结果输出

69、pandas.interval_range函数

69-1、语法

69-2、参数

69-3、功能

69-4、返回值

69-5、说明

69-6、用法

69-6-1、数据准备

69-6-2、代码示例

69-6-3、结果输出 

70、pandas.eval函数

70-1、语法

70-2、参数

70-3、功能

70-4、返回值

70-5、说明

70-6、用法

70-6-1、数据准备

70-6-2、代码示例

70-6-3、结果输出

二、推荐阅读

1、Python筑基之旅

2、Python函数之旅

3、Python算法之旅

4、Python魔法之旅

5、博客个人主页

​一、用法精讲

68、pandas.infer_freq函数
68-1、语法
# 68、pandas.infer_freq函数
pandas.infer_freq(index)
Infer the most likely frequency given the input index.

Parameters:
index
DatetimeIndex, TimedeltaIndex, Series or array-like
If passed a Series will use the values of the series (NOT THE INDEX).

Returns:
str or None
None if no discernible frequency.

Raises:
TypeError
If the index is not datetime-like.

ValueError
If there are fewer than three values.
68-2、参数

68-2-1、index(必须)一个Pandas的时间序列索引对象,即DatetimeIndex或TimedeltaIndex。其中,DatetimeIndex用于表示日期时间数据,而TimedeltaIndex用于表示时间间隔数据。

68-3、功能

        用于推断给定时间序列索引(DatetimeIndex或TimedeltaIndex)的频率。

68-4、返回值

        返回频率字符串None

68-4-1、如果能够成功推断出索引的频率,infer_freq将返回一个表示该频率的字符串(如'D'表示日频率,'M'表示月末频率,'Y'表示年频率等)。

68-4-2、如果无法推断出索引的频率(比如索引中的时间间隔不一致),则返回None。

68-5、说明

68-5-1、infer_freq函数只能推断出简单的、有规律的频率,对于复杂或不规则的时间序列数据,它可能无法准确推断出频率。

68-5-2、在处理时间序列数据时,了解数据的频率是非常重要的,因为它可以影响你如何分析和解释数据,然而,也需要注意到,即使infer_freq返回了一个频率字符串,这也不一定意味着你的数据完全遵循该频率(尤其是在存在数据缺失或不规则时间间隔的情况下)。

68-6、用法
68-6-1、数据准备
68-6-2、代码示例
# 68、pandas.infer_freq函数
# 68-1、使用DatetimeIndex推断频率
import pandas as pd
# 创建一个DatetimeIndex
dates = pd.date_range(start='2023-01-01', periods=10, freq='D')
# 推断频率
freq = pd.infer_freq(dates)
print(f"推断的频率是: {freq}", end='\n\n')

# 68-2、推断非标准频率
import pandas as pd
# 创建一个DatetimeIndex,但这次我们使用非标准的天数间隔
dates = pd.to_datetime(['2024-01-01', '2024-01-03', '2024-01-06'])
# 尝试推断频率
freq = pd.infer_freq(dates)
print(f"推断的频率是: {freq}", end='\n\n')

# 68-3、使用TimedeltaIndex推断频率
import pandas as pd
# 创建一个TimedeltaIndex
timedeltas = pd.to_timedelta(['1 days', '2 days', '3 days'])
# 尝试推断频率
freq = pd.infer_freq(timedeltas)
print(f"推断的频率是: {freq}")
68-6-3、结果输出
# 68、pandas.infer_freq函数
# 68-1、使用DatetimeIndex推断频率
# 推断的频率是: D

# 68-2、推断非标准频率
# 推断的频率是: None

# 68-3、使用TimedeltaIndex推断频率
# 推断的频率是: D
69、pandas.interval_range函数
69-1、语法
# 69、pandas.interval_range函数
pandas.interval_range(start=None, end=None, periods=None, freq=None, name=None, closed='right')
Return a fixed frequency IntervalIndex.

Parameters:
start
numeric or datetime-like, default None
Left bound for generating intervals.

end
numeric or datetime-like, default None
Right bound for generating intervals.

periods
int, default None
Number of periods to generate.

freq
numeric, str, Timedelta, datetime.timedelta, or DateOffset, default None
The length of each interval. Must be consistent with the type of start and end, e.g. 2 for numeric, or ‘5H’ for datetime-like. Default is 1 for numeric and ‘D’ for datetime-like.

name
str, default None
Name of the resulting IntervalIndex.

closed
{‘left’, ‘right’, ‘both’, ‘neither’}, default ‘right’
Whether the intervals are closed on the left-side, right-side, both or neither.

Returns:
IntervalIndex
69-2、参数

69-2-1、start(可选,默认值为None)间隔范围的起始点。

69-2-2、end(可选,默认值为None)间隔范围的结束点。

69-2-3、periods(可选,默认值为None)要生成的间隔数量,如果指定了此参数,则start和end必须是可比较的,并且freq可以是可选的(如果未指定,则根据start、end和periods自动计算)。

69-2-4、freq(可选,默认值为None)间隔的频率,它决定了间隔的长度和类型。对于日期时间间隔,它通常是如'D'(日)、'H'(小时)等的时间频率字符串;对于数字间隔,它可以是数字或可转换为数字间隔长度的表达式。

69-2-5、name(可选,默认值为None)生成的IntervalIndex的名称。

69-2-6、closed(可选,默认值为'right')指示间隔是左闭右开('right')、左开右闭('left')、两端都闭('both')还是两端都开('neither')。

69-3、功能

        生成一个固定频率的IntervalIndex,IntervalIndex是Pandas中用于表示一系列区间的索引类型,每个区间都由一个左端点和一个右端点定义,并且这些区间可以是左闭右开、左开右闭、两端都闭或两端都开的形式。该函数允许用户通过指定起始点(start)、结束点(end)、期间数(periods)和频率(freq)等参数来灵活地生成所需的间隔序列。

69-4、返回值

        返回一个IntervalIndex对象,该对象是一个不可变的、大小固定的索引,它包含了一系列由起始点和结束点定义的区间,每个区间的具体形式(左闭右开、左开右闭、两端都闭或两端都开)由closed参数控制,返回的IntervalIndex对象可以用于DataFrame或Series的索引,以便以区间的形式进行数据的选择、索引和操作。

69-5、说明

69-5-1、在start、end、periods和freq这四个参数中,必须指定其中三个,而第四个参数可以通过其他三个参数自动计算得出。

69-5-2、如果freq参数被省略,则生成的IntervalIndex将在start和end之间(包含start和end)线性地分配periods个元素。

69-5-3、对于日期时间间隔,freq参数必须是可转换为DateOffset的字符串或对象。

69-5-4、返回的IntervalIndex对象不可变,但你可使用Pandas的索引操作函数( .slice()、.get_loc()等)来对其进行查询和选择。

69-6、用法
69-6-1、数据准备
69-6-2、代码示例
# 69、pandas.interval_range函数
# 69-1、基本用法
import pandas as pd
intervals = pd.interval_range(start=0, end=10, periods=5)
print(intervals, end='\n\n')

# 69-2、使用freq参数
import pandas as pd
intervals = pd.interval_range(start=0, end=10, freq=2)
print(intervals, end='\n\n')

# 69-3、指定closed参数
import pandas as pd
intervals = pd.interval_range(start=0, end=10, periods=5, closed='left')
print(intervals, end='\n\n')

# 69-4、使用name参数
import pandas as pd
intervals = pd.interval_range(start=0, end=10, periods=5, name='sample_intervals')
print(intervals, end='\n\n')
69-6-3、结果输出 
# 69、pandas.interval_range函数
# 69-1、基本用法
# IntervalIndex([(0, 2], (2, 4], (4, 6], (6, 8], (8, 10]], dtype='interval[int64, right]')

# 69-2、使用freq参数
# IntervalIndex([(0, 2], (2, 4], (4, 6], (6, 8], (8, 10]], dtype='interval[int64, right]')

# 69-3、指定closed参数
# IntervalIndex([[0, 2), [2, 4), [4, 6), [6, 8), [8, 10)], dtype='interval[int64, left]')

# 69-4、使用name参数
# IntervalIndex([(0, 2], (2, 4], (4, 6], (6, 8], (8, 10]], dtype='interval[int64, right]', name='sample_intervals')
70、pandas.eval函数
70-1、语法
# 70、pandas.eval函数
pandas.eval(expr, parser='pandas', engine=None, local_dict=None, global_dict=None, resolvers=(), level=0, target=None, inplace=False)
Evaluate a Python expression as a string using various backends.

The following arithmetic operations are supported: +, -, *, /, **, %, // (python engine only) along with the following boolean operations: | (or), & (and), and ~ (not). Additionally, the 'pandas' parser allows the use of and, or, and not with the same semantics as the corresponding bitwise operators. Series and DataFrame objects are supported and behave as they would with plain ol’ Python evaluation.

Parameters:
exprstr
The expression to evaluate. This string cannot contain any Python statements, only Python expressions.

parser{‘pandas’, ‘python’}, default ‘pandas’
The parser to use to construct the syntax tree from the expression. The default of 'pandas' parses code slightly different than standard Python. Alternatively, you can parse an expression using the 'python' parser to retain strict Python semantics. See the enhancing performance documentation for more details.

engine{‘python’, ‘numexpr’}, default ‘numexpr’
The engine used to evaluate the expression. Supported engines are

None : tries to use numexpr, falls back to python

'numexpr' : This default engine evaluates pandas objects using numexpr for large speed ups in complex expressions with large frames.

'python' : Performs operations as if you had eval’d in top level python. This engine is generally not that useful.

More backends may be available in the future.

local_dictdict or None, optional
A dictionary of local variables, taken from locals() by default.

global_dictdict or None, optional
A dictionary of global variables, taken from globals() by default.

resolverslist of dict-like or None, optional
A list of objects implementing the __getitem__ special method that you can use to inject an additional collection of namespaces to use for variable lookup. For example, this is used in the query() method to inject the DataFrame.index and DataFrame.columns variables that refer to their respective DataFrame instance attributes.

levelint, optional
The number of prior stack frames to traverse and add to the current scope. Most users will not need to change this parameter.

targetobject, optional, default None
This is the target object for assignment. It is used when there is variable assignment in the expression. If so, then target must support item assignment with string keys, and if a copy is being returned, it must also support .copy().

inplacebool, default False
If target is provided, and the expression mutates target, whether to modify target inplace. Otherwise, return a copy of target with the mutation.

Returns:
ndarray, numeric scalar, DataFrame, Series, or None
The completion value of evaluating the given code or None if inplace=True.

Raises:
ValueError
There are many instances where such an error can be raised:

target=None, but the expression is multiline.

The expression is multiline, but not all them have item assignment. An example of such an arrangement is this:

a = b + 1 a + 2

Here, there are expressions on different lines, making it multiline, but the last line has no variable assigned to the output of a + 2.

inplace=True, but the expression is missing item assignment.

Item assignment is provided, but the target does not support string item assignment.

Item assignment is provided and inplace=False, but the target does not support the .copy() method
70-2、参数

70-2-1、expr(必须)一个字符串,表示需要求值的表达式,可以包含标准的Python表达式以及pandas支持的表达式,例如DataFrame的列运算。

70-2-2、parser(可选,默认值为'pandas')选择解析器,可以是'pandas'(默认)或'python',其中,'pandas'解析器支持pandas特有的表达式语法,'python'解析器则使用Python的内置解析器。

70-2-3、engine(可选,默认值为None)选择求值引擎,默认是None,表示自动选择。可选值包括'numexpr'(高性能计算引擎)和'python'(Python的内置求值引擎)。

70-2-4、local_dict(可选,默认值为None)一个字典,用于定义表达式中使用的局部变量,这些变量可以在表达式中直接使用。

70-2-5、global_dict(可选,默认值为None)一个字典,用于定义表达式中使用的全局变量,这些变量可以在表达式中直接使用。

70-2-6、resolvers(可选,默认值为())一个可选的列表,用于定义自定义的命名空间解析器,解析器按顺序处理,直到找到一个有效的名称。

70-2-7、level(可选,默认值为0)一个整数,用于定义在局部和全局字典中变量查找的嵌套级别。

70-2-8、target(可选,默认值为None)一个可选的对象,表示被修改的目标对象(例如DataFrame或Series),如果提供了该参数,pandas.eval将在这个对象上进行操作。

70-2-9、inplace(可选,默认值为False)布尔值,如果设置为True,将直接在目标对象上进行修改,而不会返回一个新的对象。

70-3、功能

        用于在DataFrame和Series上高效地进行表达式求值。

70-4、返回值

70-4-1、如果target参数为None(默认值),则pandas.eval()返回表达式的计算结果,结果类型取决于表达式的具体内容,但通常会是标量、Series或DataFrame。

70-4-2、如果target参数被指定为一个DataFrame,并且inplace=False(默认值),则pandas.eval()也会返回target DataFrame,但请注意,如果表达式没有修改target,则返回的DataFrame可能与原始target相同(尽管在内部可能进行了优化处理)。

70-4-3、如果target参数被指定且inplace=True,则pandas.eval()不会返回任何值(即返回None),因为操作直接在target DataFrame上进行。

70-5、说明

        无

70-6、用法
70-6-1、数据准备
70-6-2、代码示例
# 70、pandas.eval函数
# 70-1、返回表达式的计算结果
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
result = pd.eval('A + B', local_dict={'A': df['A'], 'B': df['B']})
print(result, end='\n\n')

# 70-2、直接在DataFrame上使用
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df.eval('C = A + B', inplace=True)
print(df)
70-6-3、结果输出
# 70、pandas.eval函数
# 70-1、返回表达式的计算结果
# 0    5
# 1    7
# 2    9
# dtype: int64

# 70-2、直接在DataFrame上使用
#    A  B  C
# 0  1  4  5
# 1  2  5  7
# 2  3  6  9

二、推荐阅读

1、Python筑基之旅
2、Python函数之旅
3、Python算法之旅
4、Python魔法之旅
5、博客个人主页

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

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

相关文章

Open3D Ransac拟合空间直线

目录 一、概述 1.1实现步骤 1.2优势与局限 二、代码实现 2.1关键代码 2.2完整代码 三、实现效果 前期试读,后续会将博客加入该专栏,欢迎订阅 Open3D点云算法与点云深度学习案例汇总(长期更新)-CSDN博客 一、概述 RANSAC&…

VScode终端和外部终端中文乱码问题

VScode终端和外部终端中文乱码问题 前言VScode终端VScode的第二大特点方法一方法二外部终端(命令为ctrlf5) 总结实现VScode终端和外部终端都能运行可执行文件 心得 前言 如果只想要看解决方案可直接跳转到总结部分,其余的章节只是用来说明原…

解决C#读取US7ASCII字符集oracle数据库的中文乱码

👨 作者简介:大家好,我是Taro,全栈领域创作者 ✒️ 个人主页:唐璜Taro 🚀 支持我:点赞👍📝 评论 ⭐️收藏 文章目录 前言一、解决方法二、安装System.Data.OleDb连接库三…

第7章 模块(2)

目录 7.3 插入和删除模块 7.3.1 模块的表示 7.3.2 依赖关系和引用 7.3.3 模块的二进制结构 7.3.4 插入模块 7.3.5 移除模块 本专栏文章将有70篇左右,欢迎关注,查看后续文章。 7.3 插入和删除模块 两个系统调用: init_module&#xff1…

考研数学二战,怎么准备才能提升大?

一战70多...二战提升空间那是相当的大 我身边很多一战甚至不到60,二战成绩飙到120的,真的很猛 所以你根本不用担心是自己学数学没天赋,其实知识方法没用对而已 本人属于基础很差相当于是零基础的23考研党,经过一年备考成功上岸…

k8s集群 安装配置 Prometheus+grafana+alertmanager

k8s集群 安装配置 Prometheusgrafanaalertmanager k8s环境如下:机器规划: node-exporter组件安装和配置安装node-exporter通过node-exporter采集数据显示192.168.40.180主机cpu的使用情况显示192.168.40.180主机负载使用情况 Prometheus server安装和配置…

JayChou周杰伦的歌曲网易云音乐怎么听

听Jay自由 网易云导入 专辑介绍 周杰伦(Jay Chou)是一位著名的台湾流行歌手、词曲创作人和演员。他以其独特的音乐风格和才华横溢的创作能力而闻名于世。以下是对周杰伦所有专辑的简要介绍: 《Jay》(2000年)&#xf…

独立开发者系列(26)——域名与解析

域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的互联网上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。 由于IP地址不方便…

Leaflet集成wheelnav在WebGIS中的应用

目录 前言 一、两种错误的实现方式 1、组件不展示 2、意外中的空白 二、不同样式的集成 1、在leaflet中集成wheelnav 2、给marker绑定默认组件 2、面对象绑定组件 3、如何自定义样式 三、总结 前言 在之前的博客中,我们曾经介绍了使用wheelnav.js构建酷炫…

Flink底层原理解析:案例解析(第37天)

系列文章目录 一、flink架构 二、Flink底层原理解析 三、Flink应用场景解析 四、fink入门案例解析 文章目录 系列文章目录前言一、flink架构1. 作业管理器(JobManager)2. 资源管理器(ResourceManager)3. 任务管理器(Ta…

【八股系列】CSS盒模型:掌握网页布局的核心

🎉 博客主页:【剑九 六千里-CSDN博客】 🎨 上一篇文章:【Vue中的<keep-alive>组件:深入解析与实践指南】 🎠 系列专栏:【面试题-八股系列】 💖 感谢大家点赞&…

夏日狂欢水上漂流的爆笑奇遇记

【夏日狂欢,水上漂流的爆笑奇遇记 —— 月亮姐姐的“睫毛漂流记”】在这个炎炎夏日,当烈日炙烤着大地,每一寸空气弥漫着对清凉的渴望时,一场别开生面的“暑期嘉年华”正悄然掀起一场水上狂欢的浪潮。而在这场盛宴中,月…

FPGA实训报告DAY 1(Verilog HDL)

实习日志与总结 日期:2024 年 7 月 10 日 星期三 姓名:XXX 一、实习日志 上午 9:00 - 9:30 按时到达工位,参加部门早会,了解了今天的实习任务和目标,即初步学习 FPGA 简介和 Verilog 基础语法知识。 9:30 - 10:30…

springboot 集成minio,启动报错

springboot 集成 minio 8.5.10 报错 *************************** APPLICATION FAILED TO START *************************** Description: An attempt was made to call a method that does not exist. The attempt was made from the following location: io.minio.S3Base.…

在mybatis-plus中关于@insert注解自定义批处理sql导致其雪花算法失效而无法自动生成id的解决方法

受到这位作者的启发 > 原文在点这里 为了自己实现批量插入&#xff0c;我在mapper层使用insert注解写了一段自定义sql //自定义的批量插入方法 Insert("<script>" "insert into rpt_material_hour(id,sample_time,rounding_time,cur_month,machine_no…

启智畅想火车类集装箱号码识别技术,软硬件解决方案

集装箱号码识别需求&#xff1a; 实时检测车皮号、火车底盘号码、集装箱号码&#xff0c;根据火车类型分为以下三种情况&#xff1a; 1、纯车皮&#xff0c;只检测车皮号&#xff1b; 2、火车拉货箱&#xff08;半车皮&#xff09;&#xff0c;检测车皮号集装箱号码&#xff1b…

基于springboot和mybatis的RealWorld后端项目实战一之hello-springboot

新建Maven项目 注意archetype选择quickstart pom.xml 修改App.java App.java同级目录新增controller包 HelloController.java package org.example.controller;import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotatio…

拒绝废话:computed、watch和methods的区分和使用场景

computed、watch和methods是用于处理数据和响应数据变化的不同方式&#xff0c;三者之间有什么不同呢&#xff0c;贝格前端工场作为10年前端老司机&#xff0c;用浅显的语言给大家分享一下。 computed&#xff1a; computed属性是用来定义一个基于依赖的响应式属性。它会根据…

QT--控件篇四

一、对话框 在软件开发中&#xff0c;对话框&#xff08;Dialog&#xff09;是一种常见的用户界面元素&#xff0c;用于与用户进行交互和获取信息。它通常以模态或非模态的形式出现&#xff0c;模态对话框会阻止用户与应用程序的其他部分交互&#xff0c;直到对话框关闭为止&a…

Linux热键,shell含义及权限介绍

君子忧道不忧贫。 —— 孔丘 Linux操作系统的权限 1、几个常用的热键介绍1、1、[Tab]键1、2、[ctrl]-c1、3、[ctrl]-d1、4、[ctrl]-r 2、shell命令以及运行原理3、权限3、1、什么是权限3、2、权限的本质3、3、Linux中的用户3、4、Linux中文件的权限3、4、1、快速掌握修改权限的…