一分钟了解pandas以及散列表

举报
是Dream呀 发表于 2022/07/30 21:58:09 2022/07/30
【摘要】 一分钟了解pandas以及散列表

前言

pandas目前十分火爆,我们简单地了解一下吧

一、pandas是什么?

pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、使用步骤

1.引入库

代码如下:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下:

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


三、散列表:

散列表是一种数据集,其中的数据项的存储方式尤其有利于将来快速的查找定位。
✍ 散列表中的每一个存储位置,成为槽(slot),可以用来保存数据项,每个槽有唯一一个的名称。
✍例如:一个包含11个槽的散列表,槽的名称分别为0~10,在插入数据项之前,每个槽的值都是None,表示为空槽。
✍实现从数据项到存储槽名称转化的,称为散列函数
有一种常用的散列方法是:求余数,将数据项除以散列表的大小,得到的余数称为槽号。实际上求余数方法会以不同形式出现在所有散列函数里,因为散列函数返回的槽号必须在散列表大小范围之内,所以一般会对散列表大小求余。
✍槽被数据项占据的比例称为散列表的**“负载因子”。**
要查找某个数据项是否存在于表中,我们只需要使用同一个散列函数,对查找项进行计算,测试下返回的槽号所对应的槽中是否有数据项即可!实现O(1)时间复杂度的查找算法。
缺陷:冲突,数据存在同一个槽里。

四、解决冲突

完美散列函数:给定一组数据项,如果一个散列函数能把每个数据项映射到不同的槽中,那么这个散列函数就可以称为:完美散列函数。对于一组固定的数据,总能想办法设计出完美散列函数。
但如果数据项经常性的变动,很难有一个系统性的方法来设计对应的完美散列函数,当然冲突也不是致命性的错误,我们会有办法处理的。
获得完美散列函数的一种方法是扩大散列表的容量,大到所有可能出现的数据项都能够占据不同的槽。
但是这种方法对于可能数据项范围过大的情况并不实用,比如我们要保存手机号(11位),完美散列函数得要求散列表具备百亿个槽!会浪费太多的存储空间。
退而求其次,好的散列函数需要具备的特性:
1.冲突最少(近似完美)
2.计算难度低(额外开销小)
3.充分分散数据项(节约空间)
**

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。