首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Pandas三百题

sns.set(font='Songti SC') sns.heatmap(df.corr().round(2),annot=True,cmap='RdBu') plt.show() 15-统计信息|频率 计算各省市出现的次数...|频率 计算不同行政区(district),不同规模公司(companySize)出现的次数 df.groupby(['district','companySize']).size() 5 - 分组统计...groupby(len)['salary'].mean() 12 - 分组规则|通过字典 将 score 和 matchScore 的和记为总分,与 salary 列同时进行分组,并查看结果 df.groupby...5 题的透视表进行逆透视,其中不需要转换的列为『数量』列 pd.pivot_table(df,values = ['销售额','利润','数量'],index = '类别',aggfunc = sum...|值 将 df1 的索引设置为日期,将 df1 数据向后移动一天 df1.set_index(['日期']).shift(1) 25 - 日期重采样|日 -> 周 按周对 df1 进行重采样,保留每周最后一个数据

4.8K22

Python数据分析案例-药店销售数据分析

(1)选择子集 在我们获取到的数据中,可能数据量非常庞大,并不是每一列都有价值都需要分析,这时候就需要从整个数据中选取合适的子集进行分析,这样能从数据中获取最大价值。...,但在数据分析过程中不需要用到,因此要把销售时间列中日期和星期使用split函数进行分割,分割后的时间,返回的是Series数据类型: ''' 定义函数:分割销售日期,提取销售日期 输入:timeColSer...timeSer = dataDF.loc[:,'销售时间'] #对字符串进行分割,提取销售日期 dateSer = splitSaletime(timeSer) #修改销售时间这一列的值 dataDF.loc...() 构建模型及数据可视化 数据清洗完成后,需要利用数据构建模型(就是计算相应的业务指标),并用可视化的方式呈现结果。...分析药品销售情况 对“商品名称”和“销售数量”这两列数据进行聚合为Series形式,方便后面统计,并按降序排序: #聚合统计各种药品数量 medicine = groupDF[['商品名称','销售数量

1.9K22
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    终于踩到了慢查询的坑

    执行计划中慢查询和快查询唯一的区别就是type不一样:慢查询中type为index,快查询中type为range。...key_len 显示mysql在索引里使用的字节数 ref 显示了之前的表在key列记录的索引中查找值所用的列或常量 rows 为了找到所需的行而需要读取的行数,估算值,不精确。...导致索引全扫描统计出近七天的数据量的 解决方案 尽量避免在where子句中对字段进行函数操作,这将导致存储引擎放弃使用索引而进行全表扫描。...对于需要计算的值最好通过程序计算好传入而不是在sql语句中做计算,比如这个sql中我们将当前的日期和七天前的日期计算好传入 后记 这个问题当时在测试环境没有发现,测试环境的请求速度还是可以的。..., 分组和多表join的情况, 查询效率不高, 仍需要进行优化,这里出现临时表的原因是数据量过大使用了临时表进行分组运算 优化慢sql二 慢查询的sql业务逻辑为根据时间段分类统计出条件范围内各个时间段的数量

    2K30

    想学数据分析但不会Python,过来看看SQL吧(下)~

    在使用GROUP BY时需要注意的几点: GROUP BY子句可以包含任意数量的列,因而可以对分组进行多重嵌套,如按照班级和性别进行分组的话,结果中班级A包含男生组和女生组,班级B也包含男生组和女生组;...过滤分组(HAVING) 在SQL入门中我们学过WHERE,它是对行数据进行筛选过滤的,那么,如果我想对创建的分组数据进行筛选过滤呢?...⚠️UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型。而且UNION返回的结果只会选取列中不同的值(即唯一值)。...(’y’)进行了分组,并按由大至小的顺序排序,取前10组数据。...BY 分组数据 仅在按组计算时使用 HAVING 过滤分组 否 ORDER BY 对输出进行排序 否 LIMIT 限制输出的行数 否 附:数据分析师的SQL思维导图 ?

    3.1K30

    图解面试题:累计求和问题如何分析?

    (不推荐) “薪水表”中只有“雇员编号”和“薪水表”,根据上述累计薪水的计算方法, 因此我们需要得到下图所示的表1才能计算累计薪水,左边是雇员编号以及对应的当前薪水,右边则是左边雇员编号对应的求累计薪水需要用到的雇员编号和薪水...如计算左边雇员编号10002的累计薪水则需用到右边雇员编号(1)中10001和10002两人的当前薪水,且需要满足右边雇员编号(1)<=左边雇员编号 根据左边的雇员编号和薪水分组,再对右边的薪水(1)...薪水表中只有一列雇员编号和一列薪水,因此我们需要复制一张薪水表并与原来的合并,需要用到自联结,语法如下: select 列名 from 表名 as 别名1,表名 as 别名2; select *from...显然观察上述图表,需满足雇员编号(1)的薪水需要满足结束日期 = '9999-01-01',并按雇员编号升序排列: select s1.雇员编号,s1.薪水,s2.雇员编号...-01-01'order by s1.雇员编号; 最后用 group by 对雇员编号,薪水进行分组,并用 sum 函数对薪水(1)进行求和: select s1.雇员编号,s1.薪水,sum(s2.

    1.1K20

    mysql慢查询日志

    可以把分析结果输出到文件中,分析过程中先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化 // 功能 // (1)...,也没有主键和唯一索引的要求,只要使用相等条件检索时就可能出现,常见与辅助索引的等值查找或者多列主键、唯一索引中,使用第一个列之外的列作为等值查找也会出现,总之,返回数据*不唯一的等值*查找就可能出现...: 索引全表扫描,把索引从头到尾扫一遍,常见于使用索引列就可以处理不需要读取数据文件的查询、可以使用索引排序或者分组的查询,换句话说,所有的数据就在索引里,不需要回表 all: 这个就是全表扫描数据文件...,这里就会计算进去,没有使用的列不会计算进去。...另外,key_len只计算where条件用到的长度,而排序和分组就算用到了索引,也不会计算到key_len中 // ref 如果是使用的常数等值查询,这里会显示const,如果是连接查询,被驱动表的执行计划这里会显示驱动表的关联字段

    74920

    SQL快速入门 ( MySQL快速入门, MySQL参考, MySQL快速回顾 )

    SQL 目录 检索 过滤检索结果 数据汇总处理 分组 给检索结果排序 表操作 插入数据 更新删除数据 子查询-迭代查询 联结-关联多个表 组合查询 视图 其它 检索 检索某表中单个列: SELECT 列名...创建分组: SELECT vend_id FROM Products GROUP BY vend_id; 根据 vend_id列中内容对 vend_id分组, 第一行换成 SELECT vend_id...注意:多行NULL会分为一组,GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前。 可以对一个以上的列进行 GROUP BY 过滤分组: HAVING:类似于WHERE。...唯一的差别是,WHERE过滤行,而HAVING过滤分组。...约束:每个列可以有一种或几种约束。 NOT NULL 非空约束. UNIQUE 唯一约束,可唯一标识数据库表中的每条记录。

    1.5K10

    ActiveReports 报表应用教程 (7)---交叉报表及数据透视图实现方案

    在葡萄城ActiveReports报表中可以通过矩阵控件非常方便的实现交叉报表,同时还可以设置数据的分组、排序、过滤、小计、合计等操作,可以满足您报表的智能数据分析等需求。...在矩阵控件中组的行数和列数由每个行分组和列分组中的唯一值的个数确定。同时,您可以按行组和列组中的多个字段或表达式对数据进行分组。...在矩阵控件中,也可以包括最初隐藏详细信息数据的明细切换,然后用户便可单击该切换以根据需要显示更多或更少的详细信息,以此实现数据向下钻取功能。...我们这里将要演示的是产品销售数据分析表,列分组按照产品类别和产品名称进行分组;行分组按照年和月进行分组,并对销量大于2000的数据进行高亮显示,以下是详细实现步骤: 1、创建报表文件 在应用程序中创建一个名为...( SELECT DATEPART("yyyy",订单.订购日期) AS 订购年, DATEPART("m",订单.订购日期) AS 订购月,类别.类别ID,产品.产品名称,订单明细.数量

    1.8K50

    SQL快速入门 ( MySQL快速入门, MySQL参考, MySQL快速回顾 )

    目录 检索 过滤检索结果 数据汇总处理 分组 给检索结果排序 表操作 插入数据 更新删除数据 子查询-迭代查询 联结-关联多个表 组合查询 视图 其它 检索 检索某表中单个列: SELECT 列名...创建分组: SELECT vend_id FROM Products GROUP BY vend_id; 根据 vend_id列中内容对 vend_id分组, 第一行换成...注意:多行NULL会分为一组,GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前。 可以对一个以上的列进行 GROUP BY 过滤分组: HAVING:类似于WHERE。...唯一的差别是,WHERE过滤行,而HAVING过滤分组。...约束: 每个列可以有一种或几种约束。 NOT NULL 非空约束. UNIQUE 唯一约束,可唯一标识数据库表中的每条记录。

    2.2K20

    Mysql 必知必会(一)

    在上例中,只对 prod_price列指定DESC,对prod_name列不指定。因此, prod_price列以降序排序,而prod_name列(在每个价格内)仍然按标准 的升序排序。...而REGEXP在列值内进行匹配,如果被匹配的文本在 列值中出现,REGEXP将会找到它,相应的行将被返回。这是一 个非常重要的差别。...GROUP BY子句指示MySQL分组数据,然后对每个组而不是 整个结果集进行聚集。 在具体使用GROUP BY子句前,需要知道一些重要的规定。 GROUP BY子句可以包含任意数目的列。...如果分组列中具有NULL值,则NULL将作为一个分组返回。如果列中有多行NULL值,它们将分为一组。 GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前。...HAVING和WHERE的差别:这里有另一种理解方法,WHERE在数据 分组前进行过滤,HAVING在数据分组后进行过滤。这是一个重 要的区别,WHERE排除的行不包括在分组中。

    2.6K20

    Mysql学习笔记,持续记录

    这使得能对分组进行嵌套,为数据分组提供更细致的控制。 如果在 group by 子句中嵌套了分组,数据将在最后规定的分组上进行汇总。...换句话说,在建立分组时,指定的所有列都一起计算(所以不能从个别的列取回数据)。 group by 子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)。...如果分组列中具有 NULL 值,则 NULL 将作为一个分组返回。如果列中有多行 NULL 值,它们将分为一组。 group by 子句必须出现在 where 子句之后,order by 子句之前。...MySQL中无法利用索引完成的排序操作称为“文件排序”。 使用了用临时表保存中间结果,MySQL在对查询结果排序时使用临时表。常见于排序order by和分组查询group by。...,小于10的日期需要加0; 在sql语句中进行时间比较的时候,时间值也需要和字符串一样使用单、双引号包括。

    1.2K50

    MySQL 系列教程之(七)DQL:从 select 开始丨【绽放吧!数据库】

    如果在最后一个列名后加了逗号,将出现错误。 检索所有列 select * from user 使用通配符 一般,除非你确实需要表中的每个列,否则最好别使用*通配符。...,可以使用DESC设置降序排列 select * from user order by classid,age DESC 以上语句就是先对classid进行升序排序,然后在结果中对age进行降序排序...物品订单表存储物品的价格和数量,但不需要存储每个物品的总价格(用价格乘以数量即可)。为打印发票,需要物品的总价格。 需要根据表数据进行总数、平均数计算或其他计算 计算字段并不实际存在于数据库表中。...但此新计算列的名字是什么呢?实际上它没有名字,它只是一个值。 > >如果仅在SQL查询工具中查看一下结果,这样没有什么不好。...计算 > 在mysql中可以对列中的字进行计算,使用基本算术操作符,此外,圆括号可用来区分优先顺序。

    3.6K43

    MySQL数据库案例实战教程:数据类型、语法与高级查询详解

    查询结果的不确定性:使用*通配符可能会返回多个不必要的列,包括一些不需要的敏感信息或者关联表中的数据,增加了数据传输的开销,并且也增加了处理结果集的复杂度。 3....维护性和可读性:明确指定需要查询的列名可以使查询语句更易于维护和理解,尤其是在团队协作或者未来需要对查询进行修改和优化的情况下。...); 在这个示例中,(SELECT AVG(age) FROM students) 就是一个子查询,它计算了学生年龄的平均值,并将该值作为外部查询条件进行筛选。...这条查询的作用是获取网站名称、访问次数以及最近访问日期(如果有的话)。...ifnull 函数用于将可能的 NULL 值替换为指定的默认值(0 或 '无日期')。 总的来说,这条查询用于获取网站的访问次数以及最近访问日期(如果有的话),并且对可能的 NULL 值进行了处理。

    24710

    MySQL基础

    ,每张表具有唯一的表名用来标识自己 3、表中有一个或多个列,列又称为“字段”,相当于java中“属性” 4、表中的每一行数据,相当于java中“对象” 四、常见的数据库管理系统 mysql、oracle...⑤ having 分组后的筛选 ⑥ order by 排序列表 ⑦ 执行顺序: ② ③ ④ ⑤ ⑥ ① ⑦ 特点: ​ ① 表的顺序可以调换 ​ ② 内连接的结果=多表的交集 ​ ③ n 表连接至少需要...`department_id`>100; 添加分组+筛选+排序: 查询部门中员工个数>10 的部门名,并按员工个数降序 SELECT department_name,COUNT(*) 员工个数 FROM...`department_id` HAVING 员工个数>10 ORDER BY 员工个数 DESC; 非等值连接: 查询部门编号在 10-90 之间的员工的工资级别,并按级别进行分组 SELECT COUNT...列子查询 ​ 行子查询 ​ 表子查询 按结果集的行列 标量子查询(单行子查询):结果集为一行一列 列子查询(多行子查询):结果集为多行一列 行子查询:结果集为多行多列 表子查询:结果集为多行多列 代码示例

    2.5K30

    数据导入与预处理-第6章-02数据变换

    基于列值重塑数据(生成一个“透视”表)。使用来自指定索引/列的唯一值来形成结果DataFrame的轴。此函数不支持数据聚合,多个值将导致列中的MultiIndex。...pivot_table透视的过程如下图: 假设某商店记录了5月和6月活动期间不同品牌手机的促销价格,保存到以日期、商品名称、价格为列标题的表格中,若对该表格的商品名称列进行轴向旋转操作,即将商品名称一列的唯一值变换成列索引...,将出售日期一列的唯一值变换成行索引。...,商品一列的唯一数据变换为列索引: # 将出售日期一列的唯一数据变换为行索引,商品一列的唯一数据变换为列索引 new_df = df_obj.pivot(index='出售日期', columns='商品名称...('data',ascending=False) 输出为: 分组+内置函数+频率统计 # 频率 计算不同key,不同data出现的次数 pd.DataFrame(df_obj.groupby(

    19.3K20

    pandas实战:用户消费行为画像

    该项目主要对某平台用户消费行为进行画像分析,通过pandas的灵活使用,对月销量、客户复购率、回购率、客户分层、高质量客户、留存率、消费间隔等进行多维度分析。...order_product:订单产品 order_amount:订单金额 1.统计每个客户购买的总数量和平均金额 使用groupby+agg聚合的方法得到统计结果,并按order_product降序排序...不活跃户:老客户,在时间窗口内未发生过消费的客户 回流:上个月未消费但本月消费过的客户 为了给每个客户在各观察月打上客户分层标签,需要借助一些辅助列。...9.计算用户生命周期 求出每个客户的最早和最晚的消费日期作差得到最早和最晚的时间间隔时长,即为客户的生命周期。...order_amount","order_date"]] order_date_min = user_purchase.groupby("user_id").order_date.min() #按客户分组求最早的消费日期

    35010

    老板丢给我60万行的Excel数据,幸亏我会Python,不然就惨了

    : 1、第一列是订单日期和时间(乱序) 2、第二列是客户的id 3、第三列不需要使用 4、60+万行数据 相关定义如下: 1、existing:此次下单日期时间与上次日期时间的距离在N天以内,精确到时间...(时分秒) 2、new:即超过N天 整体思路 1、读取表格的行数据存储成list,并按照时间列的升序排序。...判断客户 id 是否已经存在于map中,若首次出现,则置该客户 id 在map中的value为[1,'首次下单'],对应行数据新增的4个数据为[1,'首次下单',该次日期时间与上次日期时间差,'new'...若已经存在,则更新map中对应的value为[原次数+1,该次日期时间],对应行数据新增的4个数据为[原次数+1,上次日期时间,间隔时间,new/existing取决于间隔时间与预设N]。...输出结果如下: 既然读取文件没有问题,进一步浏览整个文件发现存在多余的空行和重复的标题行在读取和转存中可以用正则匹配过滤掉这些行。 将读取的行数据转存到list中,以便进行排序。

    61600

    从Excel到Python:最常用的36个Pandas函数

    5.查看唯一值 Excel中查看唯一值的方法是使用“条件格式”对唯一值进行颜色 标记。 ? Python中使用unique函数查看唯一值。...4.数据分组 Excel中可以通过VLOOKUP函数进行近似匹配来完成对数值的分组,或者使用“数据透视表”来完成分组 Python中使用Where函数用来对数据进行判断和分组 #如果price列的值>3000...还可以对多个字段的值进行判断后对数据进行分组,下面的代码中对city列等于beijing并且price列大于等于4000的数据标记为1。...Reset_index函数用于恢复索引,这里我们重新将date字段的日期 设置为数据表的索引,并按日期进行数据提取。 #重设索引 df_inner.reset_index() ?...Python中通过pivot_table函数实现同样的效果 #设定city为行字段,size为列字段,price为值字段。 分别计算price的数量和金额并且按行与列进行汇总。

    11.5K31

    MySQL入门学习笔记(上)

    对SQL语句进行执行,最终来完成数据库的数据管理。...select count(ename) from emp; (2)注意事项 分组函数在使用的时候必须先进行分组,然后才能使用,如果你没有对数据进行分组,整张表默认为一组 分组函数自动忽略NULL,你不需要提前对...,将这个表分组,然后对每一组数据进行求和sum(sal) select ename,job,sum(sal) from emp group by job; 以上语句在mysql中可以执行,但是毫无意义...这题就不能用where,因为平均值只能在分组之后才能计算,而where是在分组之前进行的,而只有having是在分组之后进行的 select deptno,avg(sal) from emp...次 使用union的话是:100次 + 100次 = 200次 union使用的注意事项: union在进行结果集合并的时候,要求两个结果集的列数相同。

    1.8K10
    领券