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

news2024/11/15 10:42:00

目录

一、用法精讲

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.coloradmin.cn/o/1932082.html

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

相关文章

【PostgreSQL】PostgreSQL简史

博主介绍:✌全网粉丝20W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…

Java SHA-256哈希算法

一、SHA-256算法简介 SHA-2(Secure Hash Algorithm 2),一种散列函数算法标准,由美国国家安全局研发,由美国国家标准与技术研究院(NIST)在2001年发布,属于SHA算法之一,是…

C++ std::lock_guard和 std::unique_lock

二者都是 C 标准库中用于管理互斥锁(mutex)的 RAII(Resource Acquisition Is Initialization)机制的类。这些类可以确保互斥锁在构造时被获取,在析构时被释放,从而避免死锁和资源泄漏问题。不过&#xff0c…

使用windows批量解压和布局ImageNet ISLVRC2012数据集

使用的系统是windows,找到的解压命令很多都linux系统中的,为了能在windows系统下使用,因此下载Git这个软件,在其中的Git Bash中使用以下命令,因为Git Bash集成了很多linux的命令,方便我们的使用。 ImageNe…

【博士每天一篇文献-算法】 PNN网络启发的神经网络结构搜索算法Progressive neural architecture search

阅读时间:2023-12-23 1 介绍 年份:2018 :Chenxi Liu,Google DeepMind研究科学家;Barret Zoph,OpenAI;Maxim Neumann,Goolge 会议:B区会议, Proceedings of the European conference on computer vision (ECCV). 引用…

【Android14 ShellTransitions】(七)Transition就绪

Transition.onTransactionReady的内容比较长,我们挑重点的部分逐段分析(跳过的地方并非不重要,而是我柿子挑软的捏)。 1 窗口绘制状态的流转以及显示SurfaceControl 注意我们这里的SurfaceControl特指的是WindowSurfaceControll…

Excel办公技巧:制作二级联动下拉菜单

分享制作二级联动下拉菜单的方法,即使数据有增删,菜单也能自动更新! 可以通过先定义名称,再结合数据验证,来做二级联动下拉菜单。 1. 准备数据 首先,我们需要准备好要进行二级联动下拉菜单的数据&#xff…

K8S 上部署 Emqx

文章目录 安装方式一:快速部署安装方式二:定制化部署1. 使用 Pod 直接部署 EMQX Broker2. 使用 Deoloyment 部署 Pod3. 使用 Services 公开 EMQX Broker Pod 服务4. 通过 kubernetes 自动集群 EMQX MQTT 服务器5. 修改 EMQX Broker 的配置6. 赋予 Pod 访…

共享自助台球厅系统,扫码开台,物联网开灯,智能计费

共享自助台球厅系统,扫码开台,物联网开灯,智能计费 含小程序,商家手机端和pc管理端 后端php 前端uniapp 纯开源 可定制 持续更新

常用的点云预处理算法

点云预处理是处理点云数据时的重要部分,其目的是提高点云数据的质量和处理效率。通过去除离群点、减少点云密度和增强特征,可以消除噪声、减少计算量、提高算法的准确性和鲁棒性,从而为后续的点云处理和分析步骤(如配准、分割和重…

实战打靶集锦-31-monitoring

文章目录 1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 ssh服务4.2 smtp服务4.3 http/https服务 5. 系统提权5.1 枚举系统信息5.2 枚举passwd文件5.3 枚举定时任务5.4 linpeas提权 6. 获取flag 靶机地址:https://download.vulnhub.com/monitoring/Monitoring.o…

算法力扣刷题记录 四十九【112. 路径总和】和【113. 路径总和ii】

前言 二叉树篇继续。 记录 四十九【112. 路径总和】和【113. 路径总和ii】 一、【112. 路径总和】题目阅读 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 target…

VsCode远程ssh连接失败:Could not establish connection to XXX

一、问题描述 在VsCode中按下"F1",选择Remote-SSH:Connect to Host 选择一个已经配置好的SSH主机,比如我选择的是192.168.0.104: 结果提示:Could not establish connection to XXX 二、解决方法 观察VsCode的输出信息…

走进NoSql

一、引入 1.1什么是NoSql NoSQL(Not Only SQL)是一组非关系型数据库(或称为非SQL数据库)的统称,它们提供了与传统的关系型数据库不同的数据存储和检索方式。NoSQL数据库通常用于处理大量的、分布式的、非结构化或半结…

STM32使用Wifi连接阿里云

目录 1 实现功能 2 器件 3 AT指令 4 阿里云配置 4.1 打开阿里云 4.2 创建产品 4.3 添加设备 5 STM32配置 5.1 基础参数 5.2 功能定义 6 STM32代码 本文主要是记述一下,如何使用阿里云物联网平台,创建一个简单的远程控制小灯示例。 完整工程&a…

BurpSuit的intruder模块结果进行筛选和导出

文章目录 一、搭建的测试网站第一步 先抓去数据包,查看数据包第二步 可以控制返回信息一条一条的显示第三步 使用intrude模块进行遍历,每次只显示一条用户信息第四步 配置过滤规则第五步 查看结果显示第六步 进行数据导出第七步 查看导出的表格二、实际项目中使用免责声明一、…

PCIe驱动开发(3)— 驱动设备文件的创建与操作

PCIe驱动开发(3)— 驱动设备文件的创建与操作 一、前言 在 Linux 中一切皆为文件,驱动加载成功以后会在“/dev”目录下生成一个相应的文件,应用程序通过对这个名为“/dev/xxx” (xxx 是具体的驱动文件名字)的文件进行相应的操作即…

Azure Repos 仓库管理

从远端仓库克隆到本地 前提:本地要安装git,并且登录了账户 1.在要放这个远程仓库的路径下,打git 然后 git clone https://.. 如果要登录验证,那就验证下,点 generate git credentials,复制password 克隆完后,cd 到克隆的路径, 可以用 git branch -a //查看分…

Spring Cloud环境搭建

🎥 个人主页:Dikz12🔥个人专栏:Spring学习之路📕格言:吾愚多不敏,而愿加学欢迎大家👍点赞✍评论⭐收藏 目录 1. 开发环境安装 1.1 安装JDK ​1.2 安装MySQL 2. 案列介绍 2.1 …

Linux 命令 —— top命令(查看进程资源占用)

文章目录 top 命令显示信息介绍top 命令使用 top 命令显示信息介绍 top 命令是 Linux/Unix 系统中常用的进程监控工具,可以实时动态显示系统中各个进程的资源占用情况,包括CPU、内存等。 进入 linux 系统,直接输入 top,回车&…