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

目录

一、用法精讲

71、pandas.tseries.api.guess_datetime_format函数

71-1、语法

71-2、参数

71-3、功能

71-4、返回值

71-5、说明

71-6、用法

71-6-1、数据准备

71-6-2、代码示例

71-6-3、结果输出

72、pandas.util.hash_array函数

72-1、语法

72-2、参数

72-3、功能

72-4、返回值

72-5、说明

72-6、用法

72-6-1、数据准备

72-6-2、代码示例

72-6-3、结果输出 

73、pandas.util.hash_pandas_object函数

73-1、语法

73-2、参数

73-3、功能

73-4、返回值

73-5、说明

73-6、用法

73-6-1、数据准备

73-6-2、代码示例

73-6-3、结果输出

二、推荐阅读

1、Python筑基之旅

2、Python函数之旅

3、Python算法之旅

4、Python魔法之旅

5、博客个人主页

一、用法精讲

71、pandas.tseries.api.guess_datetime_format函数
71-1、语法
# 71、pandas.tseries.api.guess_datetime_format函数
pandas.tseries.api.guess_datetime_format(dt_str, dayfirst=False)
Guess the datetime format of a given datetime string.

Parameters:
dt_strstr
Datetime string to guess the format of.

dayfirstbool, default False
If True parses dates with the day first, eg 20/01/2005

Warning

dayfirst=True is not strict, but will prefer to parse with day first (this is a known bug).

Returns:
str or None
ret
datetime format string (for strftime or strptime), or None if it can’t be guessed.
71-2、参数

71-2-1、dt_str(必须)一个或多个日期时间字符串,函数将尝试从这些字符串中猜测出日期时间的格式,如果传入的是列表,函数会尝试从列表中第一个非空字符串进行猜测。

71-2-2、dayfirst(可选,默认值为False)用于控制日期时间字符串中日和月的顺序,如果设置为True,则假定日期字符串中的第一个数字是日(DD/MM/YYYY),如果设置为False(默认值),则假定第一个数字是月(MM/DD/YYYY),这个参数对于解析一些可能具有不同日/月顺序的日期时间字符串非常有用。

71-3、功能

        用于猜测给定日期时间字符串(dt_str)的格式的一个实用工具。

71-4、返回值

        返回值是一个字符串,表示猜测到的日期时间格式,这个格式字符串遵循Pandas接受的日期时间格式约定,通常与Python的datetime.strptime和datetime.strftime方法兼容。

71-5、说明

        该函数可能在未来的Pandas版本中被弃用或更改。在较新版本的Pandas中,你可能更倾向于使用pandas.to_datetime函数,它也有一个infer_datetime_format参数,虽然它的行为可能与guess_datetime_format略有不同。

71-6、用法
71-6-1、数据准备
71-6-2、代码示例
# 71、pandas.tseries.api.guess_datetime_format函数
import pandas as pd
dt_str = '2024-07-17'
format_guess = pd.tseries.api.guess_datetime_format(dt_str)
print(format_guess)
71-6-3、结果输出
# 71、pandas.tseries.api.guess_datetime_format函数
# %Y-%m-%d
72、pandas.util.hash_array函数
72-1、语法
# 72、pandas.util.hash_array函数
pandas.util.hash_array(vals, encoding='utf8', hash_key='0123456789123456', categorize=True)
Given a 1d array, return an array of deterministic integers.

Parameters:
vals
ndarray or ExtensionArray
encoding
str, default ‘utf8’
Encoding for data & key when strings.

hash_key
str, default _default_hash_key
Hash_key for string key to encode.

categorize
bool, default True
Whether to first categorize object arrays before hashing. This is more efficient when the array contains duplicate values.

Returns:
ndarray[np.uint64, ndim=1]
Hashed values, same length as the vals.
72-2、参数

72-2-1、vals(必须)表示需要被哈希处理的输入数组,函数会遍历这个数组中的每个元素,并对其进行哈希处理。

72-2-2、encoding(可选,默认值为'utf8')指定数组中字符串元素的编码方式,如果数组中包含字符串,则这些字符串会根据此编码方式被转换为字节序列,然后再进行哈希处理。

72-2-3、hash_key(可选,默认值为'0123456789123456')提供了一个额外的密钥,用于在哈希过程中增加随机性,通过在哈希函数中加入这个密钥,可以增加哈希值的复杂性和安全性,尤其是在需要防止哈希碰撞的场景中。

72-2-4、categorize(可选,默认值为True)当此参数为True时,函数会首先尝试将输入数组中的元素分类(即,将相同的元素映射到相同的整数标签上),然后再对这些整数标签进行哈希处理,这可以在一定程度上减少哈希碰撞的可能性,并提高哈希过程的效率。如果输入数组已经是分类类型(Categorical dtype),则此参数的效果会更加明显。

72-3、功能

        给定一个一维数组(如NumPy数组或Pandas Series),返回该数组中每个元素的哈希值所组成的数组。

72-4、返回值

        返回一个与输入数组形状相同的一维NumPy数组,但其中的元素已被替换为对应元素的哈希值,这些哈希值是uint64类型的整数,它们代表了输入数组中每个元素的唯一(或尽可能唯一)标识符。

72-5、说明

        无

72-6、用法
72-6-1、数据准备
72-6-2、代码示例
# 72、pandas.util.hash_array函数
import pandas as pd
# 创建一个包含字符串的Series
s = pd.Series(['Jimmy', 'Bryce', 'Myelsa'])
# 计算每个字符串的哈希值
hashed_values = pd.util.hash_array(s.values)
# 输出哈希值数组
print(hashed_values)
72-6-3、结果输出 
# 72、pandas.util.hash_array函数
# [1382347394209841164 9798869407607568009 6426393181695770081]
73、pandas.util.hash_pandas_object函数
73-1、语法
# 73、pandas.util.hash_pandas_object函数
pandas.util.hash_pandas_object(obj, index=True, encoding='utf8', hash_key='0123456789123456', categorize=True)
Return a data hash of the Index/Series/DataFrame.

Parameters:
obj
Index, Series, or DataFrame
index
bool, default True
Include the index in the hash (if Series/DataFrame).

encoding
str, default ‘utf8’
Encoding for data & key when strings.

hash_key
str, default _default_hash_key
Hash_key for string key to encode.

categorize
bool, default True
Whether to first categorize object arrays before hashing. This is more efficient when the array contains duplicate values.

Returns:
Series of uint64, same length as the object.
73-2、参数

73-2-1、obj(必须)要进行哈希处理的Pandas对象(DataFrame或Series)。

73-2-2、index(可选,默认值为True)布尔值,指定是否将对象的索引也纳入哈希计算中。如果为True,则对象的索引也会被哈希处理;如果为False,则只考虑对象的数据部分。

73-2-3、encoding(可选,默认值为'utf8')字符串,用于指定在哈希处理过程中如何编码字符串类型的数据,这在处理包含非ASCII字符的数据时特别有用。

73-2-4、hash_key(可选,默认值为'0123456789123456')字符串,一个盐值(salt),用于增加哈希值的唯一性,通过添加这个盐值,即使两个Pandas对象在数据上完全相同,它们的哈希值也可能因为盐值的不同而不同,这有助于防止哈希碰撞,并提高哈希值的安全性。

73-2-5、categorize(可选,默认值为True)布尔值,如果为True,则在哈希处理之前,函数会尝试将对象中的分类数据(如pandas的Categorical类型)转换为整数编码,这样可以提高哈希处理的效率和一致性;如果为False,则直接使用原始数据进行哈希处理。

73-3、功能

        用于对Pandas对象(如DataFrame或Series)进行哈希处理,该函数对于需要将Pandas对象转换为哈希值以便进行快速比较或作为字典键等场景非常有用。

73-4、返回值

        函数返回一个NumPy数组,其中包含了对象中每一行(或元素,对于Series)的哈希值,这些哈希值可以用于比较、索引或其他需要唯一标识符的场景。

73-5、说明

73-5-1、快速比较:通过比较两个Pandas对象的哈希值,可以快速判断它们是否完全相同(注意,哈希冲突的可能性极低,但理论上存在)。

73-5-2、作为字典键:将Pandas对象哈希处理后,可以使用哈希值作为字典的键,以便快速查找或更新数据。

73-5-3、数据去重:在处理大量数据时,可以使用哈希值来识别并删除重复的行或记录。

73-6、用法
73-6-1、数据准备
73-6-2、代码示例
# 73、pandas.util.hash_pandas_object函数
# 73-1、对DataFrame进行哈希处理
import pandas as pd
# 创建一个简单的DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['a', 'b', 'c'],
    'C': [True, False, True]
})
# 对DataFrame进行哈希处理,包括索引
hashes = pd.util.hash_pandas_object(df, index=True)
print("Hashes with index included:", hashes)
# 对DataFrame进行哈希处理,不包括索引
hashes_no_index = pd.util.hash_pandas_object(df, index=False)
print("Hashes without index:", hashes_no_index, end='\n\n')

# 73-2、对Series进行哈希处理
import pandas as pd
# 创建一个 Series
s = pd.Series([1, 2, 3, 4, 5])
# 对 Series 进行哈希处理
series_hashes = pd.util.hash_pandas_object(s)
print("Hashes for Series:", series_hashes)
# 注意:对于Series,通常没有索引(除非明确指定),但你可以通过reset_index()将其转换为DataFrame并包含索引
s_df = s.reset_index(drop=False)
s_df_hashes_with_index = pd.util.hash_pandas_object(s_df)
print("Hashes for Series as DataFrame with index:", s_df_hashes_with_index, end='\n\n')

# 73-3、处理包含浮点数的DataFrame
import pandas as pd
# 创建一个包含浮点数的DataFrame
df_floats = pd.DataFrame({
    'A': [1.0, 2.0, 3.0000000000001],  # 注意最后一个数有微小的精度差异
    'B': [4.0, 5.0, 6.0]
})
# 对DataFrame进行哈希处理
floats_hashes = pd.util.hash_pandas_object(df_floats)
print("Hashes for DataFrame with floats:", floats_hashes, end='\n\n')
# 注意:由于浮点数的精度问题,即使 '3.0' 和 '3.0000000000001' 在数值上接近,它们的哈希值也可能不同

# 73-4、对包含分类数据的DataFrame进行哈希处理
import pandas as pd
# 创建一个包含分类数据的DataFrame
df_categorical = pd.DataFrame({
    'A': pd.Categorical(['a', 'b', 'a', 'c']),
    'B': [1, 2, 3, 4]
})
# 对DataFrame进行哈希处理,包括分类数据的整数编码
categorical_hashes = pd.util.hash_pandas_object(df_categorical, categorize=True)
print("Hashes with categorical data (categorize=True):", categorical_hashes)
# 如果categorize=False,则直接对分类对象的字符串表示进行哈希处理
categorical_hashes_no_categorize = pd.util.hash_pandas_object(df_categorical, categorize=False)
print("Hashes with categorical data (categorize=False):", categorical_hashes_no_categorize, end='\n\n')

# 73-5、对包含时间戳的DataFrame进行哈希处理
import pandas as pd
# 创建一个包含时间戳的DataFrame
df_timestamps = pd.DataFrame({
    'Timestamp': pd.to_datetime(['2024-07-01', '2024-07-05', '2024-07-17'])
})
# 对DataFrame进行哈希处理
timestamp_hashes = pd.util.hash_pandas_object(df_timestamps)
print("Hashes for DataFrame with timestamps:", timestamp_hashes, end='\n\n')

# 73-6、处理具有NaN值的DataFrame
import pandas as pd
# 创建一个包含NaN值的DataFrame
df_nan = pd.DataFrame({
    'A': [1, 2, None, 4],
    'B': ['a', 'b', 'c', None]
})
# 对DataFrame进行哈希处理
nan_hashes = pd.util.hash_pandas_object(df_nan)
print("Hashes for DataFrame with NaN values:", nan_hashes, end='\n\n')
# 注意:NaN 值会以某种方式影响哈希值,但具体方式取决于Pandas的内部实现

# 73-7、对大型DataFrame进行哈希处理
import pandas as pd
import numpy as np
# 创建一个大型DataFrame(这里仅作为示例,实际中可能更大)
np.random.seed(0)
large_df = pd.DataFrame({
    'A': np.random.randint(0, 100, size=100000),
    'B': np.random.choice(['a', 'b', 'c', 'd'], size=100000),
    'C': np.random.rand(100000)
})
# 对大型DataFrame进行哈希处理(注意:这可能需要一些时间)
large_hashes = pd.util.hash_pandas_object(large_df, index=False)
print("Hashes for a large DataFrame (first 10):", large_hashes[:10])
73-6-3、结果输出
# 73、pandas.util.hash_pandas_object函数
# 73-1、对DataFrame进行哈希处理
# Hashes with index included: 0    9483444313420146699
# 1    5719781360446296993
# 2    9877900052590456950
# dtype: uint64
# Hashes without index: 0      485995293390257589
# 1     3005746743269222528
# 2    15997040775864825588
# dtype: uint64

# 73-2、对Series进行哈希处理
# Hashes for Series: 0    14639053686158035780
# 1     3869563279212530728
# 2      393322362522515241
# 3     4080319230603510727
# 4    13014484659661894915
# dtype: uint64
# Hashes for Series as DataFrame with index: 0     5967740633143088628
# 1     9280677857880118003
# 2     6253357580284104503
# 3     4295247446495588871
# 4    12355848007932281175
# dtype: uint64

# 73-3、处理包含浮点数的DataFrame
# Hashes for DataFrame with floats: 0    12179765616421863049
# 1     4850516111580897109
# 2    13664998175358214438
# dtype: uint64

# 73-4、对包含分类数据的DataFrame进行哈希处理
# Hashes with categorical data (categorize=True): 0    10448339489922407492
# 1      328955597323365005
# 2    17337560684877153397
# 3     7837014030697196839
# dtype: uint64
# Hashes with categorical data (categorize=False): 0    10448339489922407492
# 1      328955597323365005
# 2    17337560684877153397
# 3     7837014030697196839
# dtype: uint64

# 73-5、对包含时间戳的DataFrame进行哈希处理
# Hashes for DataFrame with timestamps: 0     5029448861734248502
# 1    15824968476515617805
# 2    16154582340151959443
# dtype: uint64

# 73-6、处理具有NaN值的DataFrame
# Hashes for DataFrame with NaN values: 0      390400230840112733
# 1     9079939592730820628
# 2    13397986763273461122
# 3    18293157628943714066
# dtype: uint64

# 73-7、对大型DataFrame进行哈希处理
# Hashes for a large DataFrame (first 10): 0     3741430234977074334
# 1    13815252830947086855
# 2     5536596816482122074
# 3     7459333729972558407
# 4    10226587178543578329
# 5    16985416363548347045
# 6     5210640794891753453
# 7      334407979408579242
# 8     3392106525313158311
# 9    17317895163462122340
# dtype: uint64

二、推荐阅读

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

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

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

相关文章

快速排序及归并排序的实现与排序的稳定性

目录 快速排序 一. 快速排序递归的实现方法 1. 左右指针法 步骤思路 为什么要让end先走? 2. 挖坑法 步骤思路 3. 前后指针法 步骤思路 二. 快速排序的时间和空间复杂度 1. 时间复杂度 2. 空间复杂度 三. 快速排序的优化方法 1. 三数取中优化 2. 小区…

昇思25天学习打卡营第13天|munger85

文本解码原理–以MindNLP为例 重要的就是怎么样把数字最后转化成真正的文字。而且自回归模型它会一个字给一个字的预测,下一个字应该是什么? 如果这个模型下载很慢,你就可以通过这种方式从摩大社区进行下载。 这种方式, 每一次候…

AI+文娱,人工智能助力文娱行业智能化之路!

近些年来,我国文化产业领域对于人工智能等高新科技愈发重视,呈现出文化和科技深度有机融合的发展态势。科技与文化碰撞带来的火花,让我们对历史的表达有了更多可能。这既是高新技术的具体应用和不断落地,也是提升文化产品数字化、…

MFC CRectTracker 类用法详解

CRectTracker 类并非 Microsoft Foundation Class (MFC) 库中应用很广泛的一个类,一般教科书中很少有提到。在编程中如果需编写选择框绘制以及选择框大小调整、移动等程序时,用CRectTracker 类就会做到事半而功倍。下面详细介绍MFC CRectTracker 类。 M…

小熊猫C++与Dev-C++:两款C++开发环境的对比

引言 在C编程的世界中,选择合适的开发环境是至关重要的。今天,我们将对比两款流行的C开发工具:小熊猫C和Dev-C。这两款软件各有特色,适合不同的编程需求和偏好。本文将从多个方面对它们进行详细的比较,帮助开发者做出…

如何追查一个packet在linux 系统哪里丢失

要想追一个包在系统哪里丢失了, 就要了解 一个应用层的包在送出时 要经历那些 检查点 和被丢掉的点。 1. 在传输层,如果是 tcp 包 会有contrack 的 buf 的限制 可能会导致 packets 的丢失。 > 检查办法:查看dmesg日志有报错:k…

输入网址到网页显示的过程

输入网址到网页显示的过程 1. 浏览器解析 URL2. 域名解析解析的流程 3. TCP通过三次握手建立连接4. 生成TCP段:在数据的前面加上 TCP 头部,生成TCP段TCP 头部 5. 生成IP数据报:在TCP段的前面加上 IP包头,生成IP数据报IP包头 6. 在…

【时时三省】tessy 集成测试:小白入门指导手册

目录 1,创建集成测试模块且分析源文件 2,设置测试环境 3,TIE界面设置相关函数 4,SCE界面增加用例 5,编辑数据 6,用例所对应的测试函数序列 7,添加 work task 函数 8,为测试场景添加函数 9,为函数赋值 10,编辑时间序列的数值 11,执行用例 12,其他注意事项…

EXCEL VBA工程密码破解 工作表保护破解

这里写目录标题 破解Excel宏工程加密方法一 新建破解宏文件方法二 修改二进制文件 破解工作表保护引用 破解Excel宏工程加密 如图所示 白料数据处理已工程被加密。 方法一 新建破解宏文件 1 创建一个XLSM文件,查看代码 ALTF11 2 新建一个模块,“插…

35.UART(通用异步收发传输器)-RS232(2)

(1)RS232接收模块visio框图: (2)接收模块Verilog代码编写: /* 常见波特率: 4800、9600、14400、115200 在系统时钟为50MHz时,对应计数为: (1/4800) * 10^9 /20 -1 10416 …

基于springboot+vue+uniapp的超市购物系统小程序

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…

云监控(华为) | 实训学习day1(10)

云监控:确保服务器高效运行 在当今的数字化时代,服务器的稳定运行对于任何企业都至关重要。为了确保服务器的 CPU、内存和硬盘等资源的合理运行,云监控成为了一项不可或缺的技术。本文将详细介绍云监控的基本概念、所需软件、配置方法以及如何…

git 操纵分支和标签

我们只需要知道 每一个分支都是独立的进行的,假如 我们在 我们再git 上传代码时候,假如 master主分支 提交到第五次了,但是突然发现 第三次提交的代码有bug,我们可以 新创建一个分支,然后回退到第三次提交之后的代码&a…

NDK R25b 交叉编译FFMpeg4,项目集成,附库下载地址

1.准备工作 文件下载: NDK R25b下载地址:Android NDK历史版本下载网址 - 君*邪 - 博客园 (cnblogs.com) FFmpeg4.4.4 下载地址:https://ffmpeg.org/releases/ffmpeg-4.4.4.tar.xz 环境配置: 本次编译环境是在PC虚拟机中使用U…

算法 —— 快速幂

目录 P1045 [NOIP2003 普及组] 麦森数 P1226 【模板】快速幂 原理I 原理II P1226 代码解析 P1045 代码解析 P1045 [NOIP2003 普及组] 麦森数 本题来自洛谷:P1045 [NOIP2003 普及组] 麦森数,根据题意,我们可以看到本题需要计算最少2的1…

【Git】(基础篇二)—— Git操作

Git操作 在了解git理论知识之后,本文将结合实践操作为你讲解git的底层逻辑 Git的安装和配置 git官网下载:https://git-scm.com/ 下载后安装时除了选择安装地址外,其余都保持默认下一步即可。 安装好后鼠标右键会出现两个新的选项【Open …

【TDA4板端部署】 TIDL 简介

TIDL 用于加速 TI 嵌入式设备上的深度神经网络 (DNN)。 它支持 TI 的最新一代处理器 TI Jacinto7 TDA4 处理器。 TDA4 处理器属于 TI Jacinto7 家族的处理器,基于异构、可扩展的架构开发,此架构包含了 TI 数字信号处理 C7x DSP 和 C66x DSP、Cortex A72、…

本地部署 EVE: Unveiling Encoder-Free Vision-Language Models

本地部署 EVE: Unveiling Encoder-Free Vision-Language Models 0. 引言1. 快速开始2. 运行 Demo 0. 引言 EVE (Encoder-free Vision-language model) 是一种创新的多模态 AI 模型,主要特点是去除了传统视觉语言模型中的视觉编码器。 核心创新 架构创新&#xff…

Matlab进阶绘图第63期—带标记线的三维填充折线图

三维填充折线图是在三维折线图的基础上,对其与XOY平面之间的部分进行颜色填充,从而能够更好地刻画细节变化。 而带标记线的三维填充折线图是在其基础上,添加X相同的一条或多条标记线,以用于进一步讨论分析。 由于Matlab中未收录…

【ARM】使用JasperGold和Cadence IFV科普

#工作记录# 原本希望使用CCI自带的验证脚本来验证修改过后的address map decoder,但是发现需要使用JasperGold或者Cadence家的IFV的工具,我们公司没有,只能搜搜资料做一下科普了解,希望以后能用到吧。这个虽然跟ARM没啥关系不过在…