索引

使用python完成对excel的操作

▼魔方 西西 提交于 2020-04-07 12:28:00
import numpy as np import pandas as pd 1.通过外部文件导入数据表 df=pd.DataFrame(pd.read_csv('name.csv',header=1)) df=pd.DataFrame(pd.read_Excel('name.xlsx')) 2.通过填入数据生成数据表 df = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006], "date":pd.date_range('20130102', periods=6), "city":['Beijing ', 'SH', ' guangzhou ', 'Shen zhen', 'shanghai', 'BEIJING '], "age":[23,44,54,32,34,32], "category":['100-A','100-B','110-A','110-C','2 10-A','130-F'], "price":[1200,np.nan,2133,5433,np.nan,4432]}, columns =['id','date','city','category','age', 'price']) 3.检查数据表的维度:shape属性 df.shape 结果输出 (6,6) 4.查看数据表信息 df.info() 5

Oracle创建索引要做到三个适当

☆樱花仙子☆ 提交于 2020-04-07 12:11:55
在 Oracle 数据库中,创建索引虽然比较简单。但是要合理的创建索引则比较困难了。笔者认为,在创建索引时要做到三个适当,即在适当的表上、适当的列上创建适当数量的索引。虽然这可以通过一句话来概括优化的索引的基本准则,但是要做到这一点的话,需要数据库管理员做出很大的努力。具体的来说,要做到这个三个适当有如下几个要求。   一、 根据表的大小来创建索引。   虽然给表创建索引,可以提高查询的效率。但是数据库管理员需要注意的是,索引也需要一定的开销的。为此并不是说给所有的表都创建索引,那么就可以提高数据库的性能。这个认识是错误的。恰恰相反,如果不管三七二十一,给所有的表都创建了索引,那么其反而会给数据库的性能造成负面的影响。因为此时滥用索引的开销可能已经远远大于由此带来的性能方面的收益。所以笔者认为,数据库管理员首先需要做到,为合适的表来建立索引,而不是为所有的表建立索引。   一般来说,不需要为比较小的表创建索引。如在一个 ERP 系统的数据库中, department 表用来存储企业部门的信息。一般企业的部分也就十几个,最多不会超过一百个。这 100 条记录对于人来说,可能算是比较多了。但是对于计算机来说,这给他塞塞牙缝都还不够。所以,对类似的小表没有必要建立索引。因为即使建立了索引,其性能也不会得到很大的改善。相反索引建立的开销,如维护成本等等,要比这个要大。也就是说

numpy 索引

会有一股神秘感。 提交于 2020-04-07 09:51:48
一、花式索引 numpy提供了比常规的python序列更多的索引工具。正如我们前面看到的,除了按整数和切片索引之外,还可以使用数组进行索引 >>> a = np.arange(12)**2 array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121], dtype=int32) >>> i = np.array( [ 1,1,3,8,5 ] ) #一个包含索引数据的数组 >>> a[i] array([ 1, 1, 9, 64, 25]) >>> >>> j = np.array( [ [ 3, 4], [ 9, 7 ] ] ) #一个二维索引数组 >>> a[j] # 最终结果和j的形状保持一致 array([[ 9, 16], [81, 49]]) 当被索引的数组是多维数组时,将按照它的第一轴进行索引的,比如下面的例子: >>> palette = np.array( [ [0,0,0], ... [255,0,0], ... [0,255,0], ... [0,0,255], ... [255,255,255] ] ) >>> image = np.array( [ [ 0, 1, 2, 0 ], ... [ 0, 3, 4, 0 ] ] ) >>> palette[image] array([[[ 0, 0, 0], [255,

Class, Classloader与字节码

試著忘記壹切 提交于 2020-04-07 03:51:37
Class是对方法区(字节码)数据的倒排索引。是一种查找手段。 没有class,就没有办法对方法区进行快速索引。 java里面所有的类型包括枚举,注解,数组类型,原始类型,void等都是class。足以说明class对象有多重要。说明所有的操作都用到class或通过class实现的。 朔class是类的信息,还不如说class是类的运行时信息。你想,每次VM可能把一个真正的class放在任何地方,这个不确定性,就构成“信息”。 classloader的工作范围截止在class loading。名符其实。 class loading意味着装载就完事。装载意即:就像装入一个文件到内存-就是完成一个从IO到内存的复制。复制完以后需要把地址信息记下来。这些信息就是Class。 所以真正的Class与类并没有关系,而是关于运行时的信息。就是,类被装在了哪里,方法被装在了哪里。或者说,Class更多的是关于方法或类级的信息。因为域的意义在对象里,跟Class没什么关系。 关于classloader的边界或安全性,主要在于隔离并定义加载能力。 隔离加载能力好像不能对类安全有什么帮助,因为方法区没有隔离。可以通过直接访问方法区得到类数据(从而得到Class对象)。为什么还要隔离? 因为java语言不能访问内存。 因此说类加载器是防君子不防小人,防java不防本地代码。 但是本地代码可以被java

MongoDB索引

倾然丶 夕夏残阳落幕 提交于 2020-04-06 22:40:56
1.创建索引 --单索引 > db.test.ensureIndex({"username":1}) 复合索引 -- 数字1表示username键的索引按升序存储,-1表示age键的索引按照降序方式存储。 > db.test.ensureIndex({"username":1, "age":-1}) 为索引创建名字 > db.test.ensureIndex({"username":1},{"name":"testindex"}) 为内嵌文档建立索引值 >db.test.ensureIndex({"comments.date":1}) 2.创建唯一性索引 > db.test.ensureIndex({"userid":1},{"unique":true}) --创建唯一索引,并消除重复数据。 > db.test.ensureIndex({"userid":1},{"unique":true,"dropDups":true}) 3.删除索引 > db.test.dropIndex({"userid":1}) 4. 使用explain查看执行是否使用索引等 explain是非常有用的工具,会帮助你获得查询方面诸多有用的信息。只要对游标调用该方法,就可以得到查询细节。explain会返回一个文档,而不是游标本身。如: > db.test.find().explain(

数据仓库中的 SQL 性能优化(MySQL篇)

淺唱寂寞╮ 提交于 2020-04-06 22:04:47
做数据仓库的头两年,使用高配置单机 + MySQL的方式来实现所有的计算(包括数据的ETL,以及报表计算。没有OLAP)。用过MySQL自带的MYISAM和列存储引擎Infobright。这篇文章总结了自己和团队在那段时间碰到的一些常见性能问题和解决方案。 P.S.如果没有特别指出,下面说的mysql都是指用MYISAM做存储引擎。 1. 利用已有数据避免重复计算 业务需求中往往有计算一周/一个月的某某数据,比如计算最近一周某个特定页面的PV/UV。这里出现的问题就是实现的时候直接取整周的日志数据,然后进行计算。这样其实就出现了重复计算,某一天的数据在不同的日子里被重复计算了7次。 解决办法非常之简单,就是把计算进行切分,如果是算PV,做法就是每天算好当天的PV,那么一周的PV就把算好的7天的PV相加。如果是算UV,那么每天从日志数据取出相应的访客数据,把最近七天的访客数据单独保存在一个表里面,计算周UV的时候直接用这个表做计算,而不需要从原始日志数据中抓上一大把数据来算了。 这是一个非常简单的问题,甚至不需要多少SQL的知识,但是在开发过程中往往被视而不见。这就是只实现业务而忽略性能的表现。从小规模数据仓库做起的工程师,如果缺乏这方面的意识和做事规范,就容易出现这种问题,等到数据仓库的数据量变得比较大的时候,才会发现。需求决定能力。 2 . case when 关键字的使用方法

Java集合框架_四_List接口

耗尽温柔 提交于 2020-04-06 19:49:21
一、List? Collection接口往下继承产生了三个接口,它们有各自的特点,本文要学习的是具有“有序可重复”特点的 List 接口,它也叫做列表。 在列表中,这使得我们能够精确定位需要进行操作的元素,因为我们有列表的索引,它和数组的索引一致,都是从0开始计数。在接下来要学习的方法中,我们可以发现很多方法都提供了索引参数,有些方法的返回值则是元素的索引。 List 接口也继承了 ListIterator 接口,这使得 List 中有两个继承而来的获取迭代器的方法,而 List 根据自身特点,又重载了一个方法来获取从列表中指定位置开始的迭代器。 二、Why are there so many methods! 不要慌乱,虽然 List 接口提供了很多方法,而纵观这些方法,发现可以分类学习,更容易快速掌握。 (一)本身 1、int size() 返回集合本身的大小。 2、int hashCode() 返回集合的哈希码值。 (二)插入 1、boolean add(E e) 此方法在列表的尾端加入新元素 e。 列表发生改变,则返回true。 2、void add(int index, E element) 在指定的索引位置插入指定的元素 element,该 element 抢占了指定的索引位置。而原来索引位置上的元素以及该索引以后的元素,索引值都+1。 不返回任何值。 //

HBase二级索引与Join

◇◆丶佛笑我妖孽 提交于 2020-04-06 13:19:22
转自: http://www.oschina.net/question/12_32573 二级索引与索引Join是Online业务系统要求存储引擎提供的基本特性。RDBMS支持得比较好,NOSQL阵营也在摸索着符合自身特点的最佳解决方案。 这篇文章会以HBase做为对象来探讨如何基于Hbase构建二级索引与实现索引join。文末同时会列出目前已知的包括0.19.3版secondary index, ITHbase, Facebook和官方Coprocessor方案的介绍。 理论目标 在HBase中实现二级索引与索引Join需要考虑三个目标: 1,高性能的范围检索。 2,数据的低冗余(存储所占的数据量)。 3,数据的一致性。 性能与数据冗余,一致性是相互制约的关系。 如果想实现了高性能地范围检索,必然需要依赖冗余索引数据来提升性能,而数据冗余会导致更新数据时难以实现一致性,特别是分布式场景下。 如果对范围检索的性能要求不高,那么可以不考虑冗余数据,一致性问题也可以间接避免,毕竟share nothing是公认的最简单有效的解决方案。 理论结合实际,下文会以实例的方式来阐述各个方案是如何选择偏重点。 这些方案是经过笔者资料查阅和同事的不断交流后得出的结论,如有错误,欢迎指正: 1,按索引建表 每一个索引建立一个表,然后依靠表的row key来实现范围检索。row

Hbase二级索引与join

我怕爱的太早我们不能终老 提交于 2020-04-06 13:18:58
二级索引与索引Join是多数业务系统要求存储引擎提供的基本特性,RDBMS早已支持,NOSQL阵营也在摸索着符合自身特点的最佳解决方案。 这篇文章会以HBase做为对象来讨论如何基于Hbase构建二级索引与实现索引join。文末同时会列出目前已知的包括0.19.3版secondary index, ITHbase, Facebook方案和官方Coprocessor的介绍。 理论目标 在HBase中实现二级索引与索引Join需要考虑三个目标: 1,高性能的范围检索。 2,数据的低冗余(存储所占的数据量)。 3,数据的一致性。 性能与数据冗余,一致性是相互制约的关系。 如果你实现了高性能地范围检索,必然需要靠冗余索引数据来提升性能,而数据冗余会导致更新数据时难以实现一致性,特别是分布式场景下。 如果你不要求高效地范围检索,那么可以不考虑产生冗余数据,一致性问题也可以间接避免,毕竟share nothing是公认的最简单有效的解决方案。 理论结合实际,下文会以实例的方式来阐述各个方案是如何选择偏重点。 这些方案是经过笔者资料查阅和同事的不断交流后得出的结论,如有错误,欢迎指正: 1,按索引建表 每一个索引建立一个表,然后依靠表的row key来实现范围检索。row key在HBase中是以B+ tree结构化有序存储的,所以scan起来会比较效率。 单表以row key存储索引

HBase 二级索引与Join

不羁岁月 提交于 2020-04-06 13:16:57
二级索引与索引Join是Online业务系统要求存储引擎提供的基本特性。RDBMS支持得比较好,NOSQL阵营也在摸索着符合自身特点的最佳解决方案。 这篇文章会以HBase做为对象来探讨如何基于Hbase构建二级索引与实现索引join。文末同时会列出目前已知的包括0.19.3版secondary index,?ITHbase, Facebook和官方Coprocessor方案的介绍。 理论目标 在HBase中实现二级索引与索引Join需要考虑三个目标: 1,高性能的范围检索。 2,数据的低冗余(存储所占的数据量)。 3,数据的一致性。 性能与数据冗余,一致性是相互制约的关系。 如果想实现了高性能地范围检索,必然需要依赖冗余索引数据来提升性能,而数据冗余会导致更新数据时难以实现一致性,特别是分布式场景下。 如果对范围检索的性能要求不高,那么可以不考虑冗余数据,一致性问题也可以间接避免,毕竟share nothing是公认的最简单有效的解决方案。 理论结合实际,下文会以实例的方式来阐述各个方案是如何选择偏重点。 这些方案是经过笔者资料查阅和同事的不断交流后得出的结论,如有错误,欢迎指正: 1,按索引建表 每一个索引建立一个表,然后依靠表的row key来实现范围检索。row key在HBase中是以B+ tree结构化有序存储的,所以scan起来会比较效率。 单表以row