在数据分析中,有时候因为一些原因会有重复的记录,因此需要去重。如果重复的那些行是每一列懂相同的,删除多余的行只保留相同行中的一行就可以了,这个在Excel或pandas中都有很容易使用的工具了,例如Excel中就是在菜单栏选择数据->删除重复值,然后选择根据哪些列进行去重就好,pandas中是有drop_duplicates()函数可以用。 但面对一些复杂一些的需求可能就不是那么容易直接操作了。例如根据特定条件去重、去重时对多行数据进行整合等。特定条件例如不是保留第一条也不是最后一条,而是根据两列存在的某种关系、或者保留其中最大的值、或保留评价列文字最多的行等。下面记录一种我遇到的需求:因为设计原因,用户在购物车下的单每个商品都会占一条记录,但价格只记录当次购物车总价,需要每个这样的单子只保留一条记录,但把商品名称整合起来。
所有要进行操作的文件下载链接: https://pan.baidu.com/s/10VtUZw8G-Ly-r4VypntjiA 密码: y5qu 下载成功后,整个文件夹如下图所示。
SQL语句的逻辑处理顺序,指的是SQL语句按照一定的规则,一整条语句应该如何执行,每一个关键字、子句部分在什么时刻执行。
这是Python数据分析实战基础的第三篇内容,主要对前两篇进行补充,把实际数据清洗场景下常用但零散的方法,按增、删、查、分四板斧的逻辑进行归类,以减少记忆成本,提升学习和使用效率。
PG服务器收到客户端发来的查询后,查询的文本交给解析器。解析器扫描查询并检查它的语法。若语法正确,解析器会将查询文本转换成解析树。解析树是一种以正式、明确的形式表示查询含义的数据结构。给定查询:
在访问数据库时,应该只请求需要的行和列。请求多余的行和列会消耗MySql服务器的CPU和内存资源,并增加网络开销。 例如在处理分页时,应该使用LIMIT限制MySql只返回一页的数据,而不是向应用程序返回全部数据后,再由应用程序过滤不需要的行。 当一行数据被多次使用时可以考虑将数据行缓存起来,避免每次使用都要到MySql查询。 避免使用SELECT *这种方式进行查询,应该只返回需要的列。
今天的文章有点儿长,步骤有点儿多,但这个综合操作很值得练好,以后扩展应用的空间很大。
含有子查询的时候,表明各语句执行的先后顺序,如果数字相同,则按照先后顺序执行,如果为 null,则代表是结果集,不需要查询。
D(持久性),一旦事务完成,无论发生什么系统错误,它的结果都不会受到影响,事务的结果被写到持久化存储器中。底层实现原理是:redo log机制去实现的,mysql 的数据是存放在这个磁盘上的,但是每次去读数据都需要通过这个磁盘io,效率就很低,使用 innodb 提供了一个缓存 buffer,这个 buffer 中包含了磁盘部分数据页的一个映射,作为访问数据库的一个缓冲,从数据库读取一个数据,就会先从这个 buffer 中获取,如果 buffer 中没有,就从这个磁盘中获取,读取完再放到这个 buffer 缓冲中,当数据库写入数据的时候,也会首先向这个 buffer 中写入数据,定期将 buffer 中的数据刷新到磁盘中,进行持久化的一个操作。如果 buffer 中的数据还没来得及同步到这个磁盘上,这个时候 MySQL 宕机了,buffer 里面的数据就会丢失,造成数据丢失的情况,持久性就无法保证了。使用 redolog 解决这个问题,当数据库的数据要进行新增或者是修改的时候,除了修改这个 buffer 中的数据,还会把这次的操作写入到这个 redolog 中,如果 msyql 宕机了,就可以通过 redolog 去恢复数据,redolog 是预写式日志,会先将所有的修改写入到日志里面,然后再更新到 buffer 里面,保证了这个数据不会丢失,保证了数据的持久性,redolog 属于记录修改的操作,主要为了提交或者恢复数据使用!讲完事务的四大特性,再来说下事务的隔离性,当多个线程都开启事务操作数据库中的数据时,数据库系统要能进行隔离操作,以保证各个线程获取数据的准确性,在介绍数据库提供的各种隔离级别之前,来说一下如果不考虑事务的隔离性,会发生的几种问题:第一个问题是脏读,在一个事务处理过程里读取了另一个未提交的事务中的数据。举个例子,公司发工资了,领导把四万块钱打到我的账号上,但是该事务并未提交,而我正好去查看账户,发现工资已经到账,是四万,非常高兴。可是不幸的是,领导发现发给我的工资金额不对,是三万五元,于是迅速修改金额,将事务提交,最后我实际的工资只有三万五元,我就白高兴一场。第二个问题是不可重复读,某个数据在一个事务范围内多次查询却返回了不同的结果,用大白话讲就是事务T1读取数据,事务T2立马修改了这个数据并且提交事务给数据库,事务T1再次读取这个数据就得到了不同的结果,发生了不可重复读。举个例子,我拿着工资卡去消费,系统读取到卡里确实有一百块钱,这个时候我的女朋友刚好用我的工资卡在网上转账,把我工资卡的一百块钱转到另一账户,并在我之前提交了事务,当我扣款时,系统检查到我的工资卡已经没有钱,扣款失败,廖志伟十分纳闷,明明卡里有钱的。第三个问题是幻读,事务T1对一个表的数据做了从“1”修改成“2”的操作,这时事务T2又对这个表插入了一条数据,而这个数据的值还是为“1”并且提交给数据库,操作事务T1的用户再查看刚刚修改的数据,会发现还有一行没有修改。举个例子,当我拿着工资卡去消费时,一旦系统开始读取工资卡信息,这个时候事务开始,我的女朋友就不可能对该记录进行修改,也就是我的女朋友不能在这个时候转账。这就避免了不可重复读。假设我的女朋友在银行部门工作,她时常通过银行内部系统查看我的工资卡消费记录。有一天,她正在查询到我当月信用卡的总消费金额(select sum(amount) from transaction where month = 本月)为80元,而我此时正好在外面胡吃海喝后在收银台买单,消费1000元,即新增了一条1000元的消费记录(insert transaction … ),并提交了事务,随后我的女朋友把我当月工资卡消费的明细打印到A4纸上,却发现消费总额为1080元,我女朋友很诧异,以为出现了幻觉,幻读就这样产生了。
认识Tidy Data1.Reshape Data2.Handle Missing Values3.Expand Tables4.split cells一、测试数据1.新建数据框2.用tidyr进行处理3.按照geneid排序4.空值操作用表二、Dplyr能实现的小动作1.arrange 排序2.fliter3.distinct4.select5.mutate6.summarise7.bind_rows8.交集、并集、全集9.关联
mysql查询优化的方法有很多种,explain是工作当中用的比较多的一种检查方式。explain翻译即解释,就是看mysql语句的查询解释计划,从解释计划我们能很清楚的看到解释的语句有没有合理用到索
在商业数据处理的早期阶段,写入数据库通常对应于商业的交易场景,如: 销售,订单等涉及金钱交易的场景,交易的英文为transaction,也就是事务一词的来源,在计算机领域代表一个逻辑单元的一组读写操作。
完全的范式和反范式是不存在的,在实际操作中建议混用这两种策略,可能使用部分范式化的schema、缓存表、以及其他技巧。
1.FROM 执行笛卡尔积 FROM 才是 SQL 语句执行的第一步,并非 SELECT 。对FROM子句中的前两个表执行笛卡尔积(交叉联接),生成虚拟表VT1,获取不同数据源的数据集。
前言:经常有同学同,Excel知识点那么多,我该从哪学起?我是零基础,该怎么学?为了能快速帮大家提高工作效果,解决工作中的小疑难,今天兰色推送36个excel小技巧,都是工作中最常用到的,希望同学们能喜欢
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
但在大数据量的情况下,分页查询是否存在效率问题?怎样分析SQL效率?如何优化分页查询效率?
有一个功能,按照算法得出的权重值,分页展示一批列表数据,权重值越大越靠前。研发同学反馈查询速度慢且排序不稳定。
慢查询 // 慢查询 缓慢的查询,低效的性能导致影响正常业务 MySQL默认10秒内没有响应SQL结果,为慢查询 // 检查慢查日志是否开启: show variables like 'slow_query_log'; // 检查慢日志路径 show variables like '%slow_query_log%'; // 开启慢日志 set global slow_query_log=on; // 慢日志判断标准(默认查询时间大于10s的sql语句) show variables like 'long
首先是在Python官网下载你计算机对应的Python软件,然后安装。安装过程基本都是傻瓜式,不做过多叙述,一路回车即可。
本节教程将继续介绍SQL基础知识中的SELECT相关的一些知识,包括基础语法、多表连接、去重、排序、子查询等等SELECT方面的基础知识。
MySQL 的 SELECT 语句用于从数据库表中检索数据。功能强大,语句结构复杂多样。不过基本的语句格式像下面这个样子。
把源数据汇总后,为了满足质量要求的数据,需要做数据清洗。PQ就好像变形金刚(英文版PowerBI的转换选项卡恰好也叫“Transform”),在转换选项卡中,集成了各类变形功能。使用频率最高的一般有12个小招: 首行作标题、修改数据类型、删除(重复、错误、空项目)、拆分、提取、合并、替换、填充、移动、排序、格式、逆透视。
Pandas 是基于 NumPy 的一个开源 Python 库,它被广泛用于快速分析数据,以及数据清洗和准备等工作。它的名字来源是由“ Panel data”(面板数据,一个计量经济学名词)两个单词拼成的。简单地说,你可以把 Pandas 看作是 Python 版的 Excel。
存储引擎:MySQL中的数据、索引以及其他对象是如何存储的,是一套文件系统的实现。
在一次和技术大佬的聊天中被问到,平时我是怎么做Mysql的优化的?在这个问题上我只回答出了几点,感觉回答的不够完美,所以我打算整理一次SQL的优化问题。
1. 之前我们所学的都是DDL语句,接下来所学的才是真正的DML语句。 插入数据的sql语句就是insert into table_name (column1, column2, ……) values (data1, data2, ……),values左边的括号不加时,默认代表对表的所有列进行插入,不忽略任何一列,加上括号时,可以自己指定某些列进行插入,但值得注意的是如果某些列没有default约束,你还将其忽略进行数据插入的话,则插入数据的操作一定会失败。values右边的括号个数表示向表中插入几行的数据,括号中用逗号分隔开来的数据分别一 一对应表中的列字段。
leaf 叶子 存储数据行时就是有序的 直接将数据行的page作为叶子节点(相邻的叶子节点,有双向指针)
SQL的执行计划侧面反映出了SQL的执行效率,具体执行方式如下所示:在执行的SQL前面加上explain关键词即可;
在之前的Python办公自动化系列文章中,我们已经相信介绍了openyxl、xlsxwriter等Python操作Excel库。
通常情况下使用在“计算列”之中,如果度量值中添加了存储的虚拟表,涉及到跳出上下文时,也可以使用这两个函数。
比如,存储字符串“101”,对于char(10),表示你存储的字符将占10个字节(包括7个空字符),在数据库中它是以空格占位的,而同样的varchar2(10)则只占用3个字节的长度,10只是最大值,当你存储的字符小于10时,按实际长度存储。
索引是数据库里重要的组成部分,也是提高查询效率必备的知识点。本文将会介绍索引作用、索引类型、索引优化以及索引底层结构,也算是对索引知识的一次归纳。
ETL (Extract-Transform-Load 的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种ETL工具的使用,必不可少。
相信大家在面试时候也会遇到如何进行查询优化的问题,其中索引相关的策略就是重点考察项,比如怎么设置索引列等。
本文中记录Pandas操作技巧,包含: 导入数据 导出数据 查看、检查数据 数据选取 数据清洗 数据处理:Filter、Sort和GroupBy 数据合并 常识 # 导入pandas import pandas as pd # axis参数:0代表行,1代表列 导入数据 pd.read_csv(filename) # 从CSV文件导入数据 pd.read_table(filename) # 从限定分隔符的文本文件导入数据 pd.read_excel(filename) # 从Excel文件导入数据
写在前面:公众号又被我搁置好久,闲来无事,写写近期学的R语言吧,主要分为两个部分写,一主要为数据处理,二为ggplot作图。这两个部分将生信分析的绝大多数常用命令都讲到了,作为R语言入门是够用的,但是学海无涯,以此只是作为一个引子,想要进步还是要自己多学多练,举一反三才行。
调用EXPLAIN可以获取关于查询执行计划的信息,以及如何解释输出。EXPLAIN命令是查看查询优化器如何决定执行查询的主要方法,但该动能也有局限性,它的选择并不总是最优的,展示的也并不一定是真相。
快速复习一下之前学的SQL。虽然SQL对大小写不敏感,建议关键字使用大写,但是我习惯了小写
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。
Join的实现算法有三种,分别是Nested Loops Join, Merge Join, Hash Join。 DB2、SQL Server和Oracle都是使用这三种方式,不过Oracle选择使用nested loop的条件跟SQL Server有点差别,内存管理机制跟SQL Server不一样,因此查看执行计划,Oracle中nested loops运用非常多,而merge和hash方式相对较少,SQL Server中,merge跟hash方式则是非常普遍。 一.Nested Loopsb Join
这是一个关于 pandas 从基础到进阶的练习题系列,来源于 github 上的 guipsamora/pandas_exercises 。这个项目从基础到进阶,可以检验你有多么了解 pandas。
•此时,B2单元格为被引用单元格,E2单元格为引用单元格,被引用单元格修改,引用单元格同样变化。
领取专属 10元无门槛券
手把手带您无忧上云