1、 计算两个日期之间所经历的月数:数字 MONTHS_BETWEEN(日期 1 | 列 1,日期 2 | 列 2) 2、 加上指定月之后的日期:日期 ADD_MONTHS(日期 | 列 ,月数) 思考题...:要求计算出每一位雇员到今天为止雇佣的年限 A、 例如:今天是 2014 年 08 月 12 日,CLARK 的雇佣日期是:1981 年 06 月 09 日 B、 到今天 CLARK 已经在公司服务了:...:日期 NEXT_DAY(日期 | 列,一周时间数) 4、 求出指定日期所在月的最后一天日期:日期 LAST_DAY(日期 | 列) 转换函数 1、 转字符串数据:字符串 TO_CHAR(数字 | 日期...| 列,转换格式) 在进行转换格式设置的时候要根据不同的数据类型进行格式标记的定义: · 日期:年(yyyy)、月(mm)、日(dd)、时(HH、HH24)、分(mi)、秒(ss); · 数字:一位任意数字...--group by作用于多列:先按照第一列分组;如果相同,再按照第二列分组 select deptno,job,avg(sal) from emp group by deptno,job; -
这里我们使用的是 Pandas 中的 value_counts 函数。它可以帮助我们自动统计某一列中不同类别出现的次数,而且还自动进行排序。为了显示的方便,我们只要求展示前10项内容。...P.*)" subst = "\\g" 这里,我们用括号把需要保留的内容,赋值为 street 分组。然后替换的时候,只保留这个分组的信息。...注意最后多出来的一列,确实已经变成了我们希望转换的形式。 依然按照前面的方法,我们分组统计每一条街道上的犯罪数量,并且进行排序。...因为目前的日期时间列(incidentdatetime)是个字符串,因此我们可以直接用 parse 函数解析它,并且抽取其中的年份(year)项。...于是 Pandas 就会按照列表中指定的顺序,先按照月份分组,再按照小时分组。
数据排序及异常值处理 (1)选择子集 在我们获取到的数据中,可能数据量非常庞大,并不是每一列都有价值都需要分析,这时候就需要从整个数据中选取合适的子集进行分析,这样能从数据中获取最大价值。...,但在数据分析过程中不需要用到,因此要把销售时间列中日期和星期使用split函数进行分割,分割后的时间,返回的是Series数据类型: ''' 定义函数:分割销售日期,提取销售日期 输入:timeColSer...销售时间这一列,Series数据类型,例‘2018-01-01 星期五’ 输出:分割后的时间,返回Series数据类型,例‘2018-01-01’ ''' def splitSaletime(timeColSer...timeSer = dataDF.loc[:,'销售时间'] #对字符串进行分割,提取销售日期 dateSer = splitSaletime(timeSer) #修改销售时间这一列的值 dataDF.loc...分析每月的消费金额 接下来,我销售时间先聚合再按月分组进行分析: #将销售时间聚合按月分组 gb = groupDF.groupby(groupDF.index.month) print(gb) monthDF
参考链接: 使用Python进行数据分析和可视化2 python小白,在“一心学”公众号学习了一点疫情数据分析可视化的课程,记录下来,供小白参考。 ...二、时间序列与区域划分 1、数据类型转换为时间序列 在数据中,有一个字段是“date”,但是它的数据类型是整型(int),需要将其转换为日期的格式。...3、按照日期提取数据 例如,我需要提取2020年2月1日的数据: data_0201 = df[df['date'] == '2020-2-1] 4、按照地区提取数据——判断索引逻辑 如果想要提取某一省市的数据...,代表不同日期的数据情况“非湖北省”数据,应当先按照 省市 字段筛选,再按照 date 字段求和 #提取全国数据 data_china = df.gruopby('date')['疑似', '确诊',...,针对问题构思需要提取或者分组的数据字段,以及需不需要进行聚合操作
:删除所有小于n个非空值的行 df.fillna(x):用x替换DataFrame对象中所有的空值 s.astype(float):将Series中的数据类型更改为float类型 s.replace(1...], ascending=[True,False]):先按列col1升序排列,后按col2降序排列数据 df.groupby(col):返回一个按列col进行分组的Groupby对象 df.groupby...([col1,col2]):返回一个按多列进行分组的Groupby对象 df.groupby(col1)[col2]:返回按列col1进行分组后,列col2的均值 df.pivot_table(index...):返回按列col1分组的所有列的均值 data.apply(np.mean):对DataFrame中的每一列应用函数np.mean data.apply(np.max,axis=1):对DataFrame...df.corr():返回列与列之间的相关系数 df.count():返回每一列中的非空值的个数 df.max():返回每一列的最大值 df.min():返回每一列的最小值 df.median():返回每一列的中位数
Cohort分析通过对性质完全一样的可对比群体的留存情况的比较,来发现哪些因素影响短、中、长期的留存。Cohort分析受到欢迎的另一个原因是它用起来十分简单,但却十分直观。...维度:如果按用户的新增日期分组,那时间就是维度,如果按新增用户的渠道来源分组,渠道就是维度。...粒度:例如,时间维度是按照月划分、还是按照天划分;新增渠道维度是新增的来源产品还是来源的具体网址,这些都是粒度差异。 分组留存率计算起来比较简单,首先对用户进行分组,先按照维度分,再按照粒度分。...表1:Cohort Analysis表格 表1中,第一列为月份的排列,第二列为对应每个自然月中新增的用户数量。右侧表格即为当月新增的用户数量在后续每个月中的留存情况。那么这个图是怎么看的呢?...Cohort Analysis的一般分析过程是将数据分成相同权重,连续的几个部分,然后对每部分数据做相同分析,最后做连续性讨论并得到结果。
如果情况并非如此,就需要采取不同的方法。此时,最可能的方法是将员工拆分成几行,然后通过与另一个表的合并来检索位置,这一点将在本书第 10 章介绍。...图 7-25 这么多的日期筛选选项 这个列表看起来令人生畏,其实许多选项会帮助用户完成所期望的事情。 如下所示。 将数据筛选为【一月】,只显示【月份】为【一月】的日期。...当然,如果有六年的数据,会有六个不同年份的一月份结果,这可能是或者也可能不是用户想要的数据结果。 将数据集筛选到【最早】的日期,只筛选与所选列中最早的日期相匹配的行。...图 7-27 Power Query 首先按 “State” 排序,然后按 “Date” 排序 如你所见,Power Query 默认应用连续排序,与 Excel 不同。...更改 “Date” 列的数据类型【使用区域设置】【日期】【英语 (美国)】【确定】。 更改 “Sales” 列的数据类型【使用区域设置】【货币】【英语 (美国)】【确定】。
(pd.Series.value_counts) # 查看DataFrame对象中每一列的唯一值和计数 数据选取: df[col] # 根据列名,并以Series的形式返回列 df[[col1, col2...() # 返回每一列中的非空值的个数 df.max() # 返回每一列的最大值 df.min() # 返回每一列的最小值 df.median() # 返回每一列的中位数 df.std() # 返回每一列的标准差...,col2], ascending=[True,False]) # 先按列col1升序排列,后按col2降序排列数据 df.groupby(col) # 返回一个按列col进行分组的Groupby对象...df.groupby([col1,col2]) # 返回一个按多列进行分组的Groupby对象 df.groupby(col1)[col2] # 返回按列col1进行分组后,列col2的均值 df.pivot_table...).agg(np.mean) # 返回按列col1分组的所有列的均值 data.apply(np.mean) # 对DataFrame中的每一列应用函数np.mean data.apply(np.max
当用于一般用途时,它们有以下缺点: 不太直观(例如,你将面临到处都是的常数); 与普通的NumPy数组相比,有一些性能问题; 在内存中连续存储,所以每增加或删除一列都需要对整个数组进行重新分配...2.按columns排序 如果我们需要使用权重列按价格列打破平局进行排序,那么对于NumPy来说却有些糟糕: 如果选择使用NumPy,我们首先按重量排序,然后再按价格应用第二次排序。...5.按列连接 如果想用另一个表的信息来补充一个基于共同列的表,NumPy几乎没有用。而Pandas更好,特别是对于1:n的关系。...Pandas连接有所有熟悉的 inner, left, right, 和 full outer 连接模式。 6.按列分组 数据分析中另一个常见的操作是按列分组。...在Pandas中,做了大量的工作来统一NaN在所有支持的数据类型中的用法。根据定义(在CPU层面上强制执行),nan+任何东西的结果都是nan。
建议用户在大型应用程序中不要使用SMALLDATETIME数据类型,避免出现类似千年虫的问题。因为2079年12月31日不是一个特别遥远的日期。...在SELECT子句中,将要增加的字符串用单引号括起来,然后和列的名字写在一起,中间用逗号分隔开。...可以在ORDER BY子句中指定多个列,查询结果首先按第1列进行排序,对第1列值相同的那些数据行,再按照第2行排序…..依此类推,ORDERBY子句,要写在WHERE子句的后面。...加入UNION运算符的SELECT语句中列举的与下面的方式对应;第一个SELECT语句的第一列将对应在每一个随后的SELECT语句的第一列,第二列对应在每一个随后的SELECT语句的第二列……...另外,对应的列必须用于兼容的数据类型,这意味着两个对应列必须是相同的数据类型,或者SQL Server必须明确地从一种数据类型转换到另一种数据类型。
ROLL UP ROLL UP 搭配 GROUP BY 使用,可以为每一个分组返回一个小计行,为所有分组返回一个总计行。 直接看例子,我们有以下数据表,包含工厂列,班组列,数量列三列。 ?...当向 ROLLUP 传入一列时,会得到一个总计行。...当向 ROLLUP 传递两列时,将会按照这两列进行分组,同时按照第一列的分组结果返回小计行。我们同时传入工厂和部门看一下。...可以看出来首先对 FACTORY,DEPARTMENT进行分组汇总,然后对FACTORY 分组汇总,之后对 DEPARTMENT 分组汇总,最后有一行全表汇总。...GROUPING SETS则对每个参数分别进行分组,GROUPING SETS(A,B)就代表先按照 A 分组,再按照 B分组。
ORDERBY子句后面可以放置1列或多列,在每一列后面还要指定该列的排序方式,DESC代表的降序排列,ASC代表的是升序排列。...(1)、IN关键字后面的查询就是一个子查询,是用来判断某个列是否在某个范围内。先执行in后面的语句,然后执行in前面的语句,并且IN后面的查询语句只能返回一列值。 ?...(2)、ANY通常被比较运算符连接ANY得到的结果,它可以用来比较某一列的值是否全部都大于(小于、等于、不等于等运算符)ANY后面的子查询中得到的结果。 ?...在现实生活中,经常会遇到分组,比如:扫雪时经常会把一个班级分成几个组,分别完成不同的扫雪任务。在数据库中的分组也是同一个意思,将数据按照一定条件进行分组,然后统计每组中的数据。...HAVING子句要放在GROUPBY 子句之后,也就是要对数据进行分组,然后再对其按条件进行数据筛选。还有一点使用HAVING语句作为条件时,条件后面的列只能是在GROUPBY子句后面出现过的列。
BY 修改量 desc 一天内更新多次的记录也就是数据是>1 或者是>=2 两种写法都可以,顺序是先按照每天日期分组,再按照item_id,也就是商品分组。...比如说1月8号为一组,在这组里面再以某个商品为一组,就可以count出他一天的交易量。 ?...之后按照窗口函数,先对item分组再对日期分组,之后按照精准日期就是具体哪一秒的时间进行排序,下图查询结果可以看到,按照降序后的结果最新的日期会排在第一位,所以我们直接进行where 排序>1 筛选即可...,然后删除。...用rank方法可以实现SQL的 窗口函数,对day和itemid分组,在进行insert_time排序,然后row_number的保留,因为这条数据是当天最新数据。 第三题: ?
Python中对数据分组利用的是 groupby() 方法,类似于sql中的 groupby。...1.分组键是列名 分组键是列名时直接将某一列或多列的列名传给 groupby() 方法,groupby() 方法就会按照这一列或多列进行分组。...df.groupby(["客户分类","区域"]).sum() #只会对数据类型为数值(int,float)的列才会进行运算 无论分组键是一列还是多列,只要直接在分组后的数据进行汇总运算,就是对所有可以计算的列进行计算...有时不需要所有的列进行计算,这时就可以把想要计算的列(可以是单列,可以是多列)通过索引的方式取出来,然后在这个基础上进行汇总运算。...df.groupby("客户分类")["7月销量"].sum() ---- 2.分组键是Series 把DataFrame的其中一列取出来就是一个Series ,如df["客户分类"]。
提取2.png 选定新产生的一列转换数据类型为整数 ? 转化1.png ? 转化2.png ? 转化3.png ? 转换4.png ? 转换5.png ? 转换6.png ?...加载数据到PowerQuery中.png 客户首次购买分析 选定下单日期这一列,进行升序排序。 ? 下单日期升序排序.png 选定客户名称这一列,进行删除重复项 ?...加载数据至查询编辑器中.png 选定日期这一列,将数据类型改为整数。 ? image.png ? 删除错误行.png ?...打开文件图示.png 不要选中第一列,选中后面的列,然后点击下图所示的逆透视列。 ? 逆透视1.png ? 成功逆透视结果.png 选择关闭并上载至,在窗口中设置值如下图所示。...成功分组结果.png 10.添加列 打开下载文件中的10-添加列.xlsx,如下图所示。 ? 打开文件图示.png ? 进行分组操作.png ? 逆序排序.png ? 添加索引列.png ?
SQL> select deptno,avg(sal) 2 from emp 3 group by deptno; SQL> --语法 SQL> --在select列表中所有未包含在组函数中的列都应该包含在...group by子句中 SQL> --包含在group by子句中的列不必包含在select列表中 SQL> --按部门,不同的职位统计平均工资 SQL> select deptno,job,avg(sal...) 2 from emp 3 group by deptno,job 4 order by 1 SQL> --group by多列:先按照第一列分;如果第一列相同,再按照第二列分 SQL...> --having:过滤分组 SQL> --查询平均工资大于2000的部门 SQL>select deptno,avg(sal) 2 from emp 3 group by deptno...先按照第一列分;如果第一列相同,再按照第二列分 SQL> ed 已写入 file afiedt.buf 1 select deptno,job,avg(sal) 2 from emp
image.png 【腾讯面试题】 有一张用户签到表,表中记录了每个用户每天签到的情况。该表包括了三列日期、用户id、用户当日是否签。...该问题是分组排序问题,这类问题要想到《猴子 从零学会SQL》里讲过的窗口函数。 先按用户id分组,找出每个用户id当天未签到的日期,再按日期降序排序。...因为在给出的示例数据中,用户id为1的用户每天都签到,没有未签到日期。那么这类用户的连续签到天数该如何计算呢?...我们可以查询用户签到表的开始日期,将那天作为该用户开始签到的日期,计算该日期和当天的间隔,然后加1,即为该用户的连续签到天数。...对应SQL如下: image.png 查询结果: image.png 【本题考点】 遇到要取出每个分组(用户/部门/月份)中,某个字段的值最高/最低/处于第n个的记录,也就是分组排序问题,要想到用窗口函数
连接删除 根据另一个表中的值删除表中的行。 UPSERT 如果新行已存在于表中,则插入或更新数据。 第 10 节....重命名表 将表的名称更改为新名称。 添加列 向您展示如何向现有表添加一列或多列。 删除列 演示如何删除表的列。 更改列数据类型 向您展示如何更改列的数据。 重命名列 说明如何重命名表中的一列或多列。...唯一约束 确保一列或一组列中的值在整个表中是唯一的。 非空约束 确保列中的值不是NULL。 第 14 节....DATE 引入DATE用于存储日期值的数据类型。 时间戳 快速了解时间戳数据类型。 间隔 向您展示如何使用间隔数据类型有效地处理一段时间。 TIME 使用TIME数据类型来管理一天中的时间值。...CAST 从一种数据类型转换为另一种数据类型,例如,从字符串转换为整数,从字符串转换为日期。 第 16 节.
然后,单击列类型(列名称旁边的小字母),选择新的数据类型和格式,如果需要的话,可以选择一个新的名称,然后单击执行。 您是否看到单元格中也添加了更多代码?...使用不同的数据类型和名称创建新列 如果您需要一个具有不同数据类型和名称的新列,而不是更改列的数据类型和名称,该怎么办?只需单击列数据类型,选择新的格式和名称,然后单击执行即可。...删除列 如果您意识到不需要列,只需在search转换框中搜索下拉,选择下拉,选择想要下拉的列,然后单击执行。 重命名列 现在您需要重命名列,这是再容易不过的了。...只需搜索rename,选择要重命名的列,写入新的列名,然后单击执行。您可以选择任意多的列。 将一个字符串分割 假设您需要将一列人的名字分成两列,一列写名,另一列写姓。这很容易做到。...在Search转换框中搜索分组by,选择要分组的列,然后选择要查看的计算。 在这个例子中,我希望看到每个平台上的游戏数量和平均分数。我发现PlayStation 4在所有平台中得分最低。
例如,在金融数据分析中,我们可能想要按日期和股票代码同时对数据进行索引;或者在实验数据中,按照实验批次和样本编号进行索引。...比如有一个包含订单信息的数据表,其中“客户ID”和“订单日期”两列可以组合成多级索引,以更好地分析每个客户的订单随时间的变化情况。...三、常见问题及解决方案(一)索引层级混乱当创建多级索引后,可能会遇到索引层级顺序不符合预期的问题。例如,我们希望先按地区再按产品类别进行索引,但实际结果却相反。...groupby()方法可以指定按照哪些级别进行分组,然后再进行聚合操作。例如df.groupby(level = ['地区', '产品类别']).sum()。...(二)TypeError如果在构建多级索引时传入了不兼容的数据类型(例如将字符串与整数混合构建索引),可能会引发TypeError。避免方法:确保构建多级索引时传入的数据类型一致。
领取专属 10元无门槛券
手把手带您无忧上云