索引

python小白的入门(二):pandas常用函数

六眼飞鱼酱① 提交于 2020-02-05 16:17:42
读取 df = pd.read_csv(‘文件名’,encoding = ‘utf’/‘gbk’/,sep=’\t’) 查看基本信息 df.info() df.head() df.describe() df.列名.value_counts() 更改某一列的数据类型(series下) df.列名.astype(‘str’/‘int’) 排序 df.sort_values(by = 列名/列表,ascending=True/False) df.sort_index()索引排序 排序赋值(series下) df[‘rank’]= df.列名.rank(method='average/‘max’/‘min’/‘first’,ascending=False) 分组统计(pandas下) df[‘bins’] = pd.cut(df.列名,bins=5/[0,5,10,15,20,100],labels=[‘0-5’,‘5-10’,‘10-15’,‘15-20’,‘20-100’]) 多重索引 用groupby建多重索引: df.groupby(分组列表).聚合函数为DataFrame类型,之后可用.loc[一级标签,二级标签]取值 df.groupby(分组列表).聚合函数.列名为Series类型,之后可用[一级标签][二级标签]取值 用set_index建多重索引: df.sort

数据库——百万级数据库优化方案

时光总嘲笑我的痴心妄想 提交于 2020-02-05 14:27:12
** 百万级数据库优化方案 ** 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库. 备注、描述、评论之类的可以设置为 NULL,其他的,最好不要使用NULL。 不要以为 NULL 不需要空间,比如:char(100) 型,在字段建立时,空间就固定了, 不管是否插入值(NULL也包含在内),都是占用 100个字符的空间的,如果是varchar这样的变长字段, null 不占用空间。 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num = 0 3.应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描。 4.应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num = 10 or Name = 'admin' 可以这样查询:

mongoose 创建索引

牧云@^-^@ 提交于 2020-02-05 13:31:34
mongoose 创建索引 字段级别 var animalSchema = new Schema({ name: String, type: String, tags: { type: [String], index: true } // field level }); schema级别 animalSchema.index({ name: 1, type: -1 }); // schema level 1和-1分别表示升序索引和降序索引 来源: https://www.cnblogs.com/mengfangui/p/12263358.html

利用Python进行数据分析(11) pandas基础: 层次化索引

筅森魡賤 提交于 2020-02-05 09:07:27
层次化索引 层次化索引指你能在一个数组上拥有 多个索引 ,例如: 有点像Excel里的合并单元格对么? 根据索引选择数据子集 以外层索引的方式选择数据子集: 以内层索引的方式选择数据: 多重索引Series转换为DataFrame 层次化索引在数据重塑和分组中扮演着很重要的角色,例如,上面的层次化索引数据可以转换为一个DataFrame: 对于一个DataFrame,横轴和竖轴都可以有层次化索引,例如: 重排分级顺序 根据索引交换 swaplevel()函数可以将两个级别的数据进行交换,例如: 根据索引排序 sortlevel()函数根据单个级别的值对数据进行排序,例如: 以行按第一层进行排序: 以行按第二层进行排序: 以列按第一层进行排序: 根据级别汇总统计 多层次索引的数据,汇总的时候可以单独按照级别进行,例如: 来源: https://www.cnblogs.com/sirkevin/p/5767534.html

数据库 -- 存储引擎介绍

孤人 提交于 2020-02-05 06:13:48
mysql引擎介绍 1,概念   mysql5.6支持的存储引擎包括InnoDB、MyISAM、MEMORY、CSV、BLACKHOLE、FEDERATED、MRG_MYISAM、ARCHIVE、PERFORMANCE_SCHEMA。其中NDB和InnoDB提供事务安全表,其他存储引擎都是非事务安全表。 mysql支持的存储引擎 MySQL服务器采用了多层设计和独立模块,插件式存储引擎体系结构,允许将存储引擎加载到正在运新的MySQL服务器中,图中的Pluggable Storage Engines部分。采用MySQL服务器体系结构,由于在存储级别上(也就是Pluggable Storage Engines)提供了一致和简单的应用模型和API,应用程序编程人员和DBA可不再考虑所有的底层实施细节。因此,尽管不同的存储引擎具有不同的能力,应用程序是与之分离的。存储引擎就司职与文件系统打交道了。 并发性:某些应用程序比其他应用程序具有很多的颗粒级锁定要求(如行级锁定)。 事务支持:并非所有的应用程序都需要事务,但对的确需要事务的应用程序来说,有着定义良好的需求,如ACID兼容等。 引用完整性:通过DDL定义的外键,服务器需要强制保持关联数据库的引用完整性。 物理存储:它包括各种各样的事项,从表和索引的总的页大小,到存储数据所需的格式,到物理磁盘。 索引支持

C++之运算符重载(二元)

本秂侑毒 提交于 2020-02-05 05:24:44
一、加号+ 1.成员函数重载 2.友元函数重载 二、输出符号<< 三、索引符号 [ ] 四、补充说明 1.《二元运算符重载》课程评论: (一)为什么<<运算符的重载必须定义为友元 如果在类中定义非友元成员函数,默认第一个参数默认会传入this*指针,这时就无法实现cout在前<<对象在后的格式 因为二元运算符中的调用格式是 参数一 运算符 参数二 这也就是为什么 加号运算符可以使用非友元成员函数,因为参数一是一个this*指针,参数二是其它对象 假设定义为非友元成员函数,那么第一个参数系统默认为this*(且无法更改),第二个参数是cout 那么调用格式就变成了 coor << cout了,这就是不能定义为非友元成员函数的原因 (二) 这里对于输出运算符重载讲得一般,当时课程上学习的时候,这里返回值为out是有原因的。 cout<<coor1<<coor2<<endl; 上面这个例子中,第一次重载<<的时候cout作为第一个参数,coor作为第二个参数,返回出来out的引用,这个out引用的是"cout<<coor1", 第二次重载的时候是将这个cout<<coor1整个作为out流对象,做成第一个参数。 2.《二元运算符重载》课程评论: 来吧!让我给您们解释一下为什么<<只能友元,而[]只能成员重载; 简而言之: <1> 对于友元重载没有this指针指向当前对象的

ElasticSearch使用

孤街醉人 提交于 2020-02-05 05:21:26
目录 ElasticSearch介绍 RESTFul ES安装以及相关插件 倒排索引 ES CRUD API mget 批量获取 bluk 批量操作 版本控制version Mapping映射 基本查询 filter查询 组合查询 集群管理 ——————————————————————————————– 1.ElasticSearch介绍 Distributed, scalable, and highly available Real-time search and analytics capabilities Sophisticated RESTful API 相关概念 Node(节点) Cluster(集群) Document(文档) :一个文档是一个可被索引的基础信息单元 Type(类型) :一个索引中,可以定义一种或多种类型 Field(列) :Field是ES中最小单位,相当于数据的某一列 Shards(分片) :ES将索引分为若干份,每个部分就是一个shard Replicas(复制) :Replicas是索引的拷贝 ES类比RDBMS RDBMS ElasticSearch 数据库Database 索引Index 表Table 类型Type 数据行Row 文档Document 数据列Column 字段Field 2.RESTFul & CURL GET:用来获取资源

MySQL索引基础

好久不见. 提交于 2020-02-05 04:58:36
前言 索引对于良好性能十分关键,尤其是表中的数据量越来越大的时候,索引对于查询性能的影响相当关键,数据量小的时候影响还不是很明显,所以理解索引,对于开发人员来说十分关键 1.什么是索引 索引(键'key')是存储引擎用于快速查找记录的数据结构 他是作用于存储引擎层的,和server层无关 他的目的是为了提高查询速度 他的本质是数据结构(哈希,B+tree等) 2.索引的优缺点 优点 所有字段都可以建立索引 大大加快了数据的查询速度,减少了服务器需要扫描的数据量 将随机IO转换成顺序IO 帮助服务器避免排序和生成临时表 缺点 创建索引和维护索引要消耗额外的时间,并且随着数据量的增加,消耗时间会加长,还会涉及oneline ddl(以后会讲)问题 索引也占用存储空间,大量的索引会占用可能比数据文件更多的存储空间 索引需要动态维护,对表进行增删改的时候,会降低数据的维护 3.索引分类 3.1按照数据结构分 :有序数组,哈希表,B树,B+树,R树,FullText全文索引,GIS地理位置索引等 3.2按照功能来分 :聚簇索引,二级索引/辅助索引(单列索引,唯一索引,联合索引) 4.索引操作 4.1创建索引 单列索引 alter table 表名 add index/key 索引名(字段名); alter table temp_100w add index inx_id (id); 联合索引

浅谈B和B+树

二次信任 提交于 2020-02-05 02:35:38
B树 也叫 B-树 用途:用于少部分数据库和mongdb索引 索引:如果我们去查询某的字段等于某个值的数据,我们要去遍历所有数据才能得出,但是我们如果建立了索引,也就是对某个字段建立了索引,我们就可以高效的直接查找出对应值的数据在哪里了,底层用B,B+树实现 B树的特性: 待补 为什么需要B树? 其实就一般自己来说二叉搜索树的效率要高于B树,比较次数比B树少,但是一个重要的问题磁盘IO,因为如果对于海量数据的话,建立起来的索引也是非常大的,我们只能一次加载一个对应的磁盘页进来,这里也对应这一个节点的数据,因为从磁盘中读取数据这个操作的时间远远的要比内存中比较长,所以我们可以牺牲多次比较来减少磁盘IO,也就是让建立出来的树尽量的矮胖,B树也叫多路平衡查找树,二叉搜索树其实也可以叫二阶B树,B树的阶数主要看分叉的数量,节点内的关键字是阶数-1 例子:待补 B树的三大操作 查找,插入,删除 查找 查找的话和二叉搜索树的原理一样的 例子:待补 插入 首先我们直接找到那个对应的节点,然后插入,因为每个节点只能存放m阶-1个关键字,如果到了m就要分裂节点 分裂节点:左边一半当左节点,右边一半当右节点,中间一个升入父节点,如果父节点出现类似情况也要分裂 例子:待补 删除 每个节点存放的关键字必须是一半 有三种情况 1,如果删除的那个节点的关键字删除一个后还有一半,那就直接删 2,如果删除后

notes error:索引中未找到相应的条目解决办法

断了今生、忘了曾经 提交于 2020-02-05 02:27:42
前提: 我们需要通过循环的方式,往多米诺一个视图的BoxID里写数据,通过 GetFirstDocument GetNextDocument 写完每个条目后,通过doc.Save(True,True,True);来保存数据。 结果: 提示”notes error:索引中未找到相应的条目“错误 原因: 因为每次进行保存后,会自动对条目进行排序,而且我在试图里添加了&BoxID=“”, 所以每次保存后,当前的条目会自动过滤掉,而导致GetNextDocument报异常。 解决方法: 读取的时候,不通过GetNextDocument来读取下一条,因为反正每次写数据后,BOxID不为空的就过滤掉, 那么读取下一条的数据GetFirstDocument 还是通过这个方法。 这样循环,知道所有的BOxID都写入数据,最后在试图编辑里,把 BoxID=""去掉即可。 本文地址:http://www.dfwlt.com/forum.php?mod=viewthread&tid=11&extra=page%3D1,转发请保留这个地址,谢谢 来源: https://www.cnblogs.com/xszlo/archive/2013/02/27/2934598.html