一、前言 前几天在Python铂金交流群【逆光】问了一个Pandas数据处理的问题,问题如下:请问 合并excel的两列,为空的单元格被另一列有值的替换。...【逆光】:好的,我去看看这个函数谢谢 【逆光】:我列表的两列不挨着, a b互补,我需要变成c (c 包含 a 和 b) 【Siris】:最笨的方法遍历判断呗 【逆光】:太慢了,我的数据有点多。...pandas里两列不挨着也可以用bfill。 【瑜亮老师】:@逆光 给出两个方法,还有其他的解决方法,就不一一展示了。 【逆光】:报错,我是这样写的。...就是你要给哪一列全部赋值为相同的值,就写df['列名'] = '值'。不要加方括号,如果是数字,就不要加引号。 【逆光】:我也试过,分开也是错的· 【瑜亮老师】:哦,是这种写法被替换了。...【瑜亮老师】:3列一起就是df.loc[:, ['列1', '列', '列3'']] = ["值", 0, 0] 【不上班能干啥!】:起始这行没有报错,只是警告,因为你这样操作会影响赋值前的变量。
首先,可以通过isnull 和 notnull 方法查看有哪些NaN值,这两个方法返回的布尔值,指示该值是否是NaN值,结合sum 方法可以获取每列空值的数目以及总数。...也可以通过 count 方法得到每列不为NaN值的数目。...# axis 按行操作,how 原理同上 # 同时可以添加条件删除 print(df.dropna(axis = 1, thresh = 2)) # axis=1按列操作,thresh 指示这一列或行中有两个或以上的非...NaN值,向后同理 # 在df 的e 这一列上操作,默认下按行操作,向前填充数据,即取e列中最近的一个不为NaN值来填充接下去的NaN值 df["e"].fillna(method = 'ffill',...简单的按单列分组 # 按单列进行分组 dg = df0.groupby("fruit") # 打印查看按fruit分组后的每组组名,及详细信息 for n, g in dg: print "group_name
DISTINCT|ALL] column|expression):返回表中满足条件的非空行记录数 --当前表中的总记录数 select count(*) from stu_class; --查询sclass这一列不为空时的总记录数...)和DISTINCT(COLUMN)之外,其他所有分组函数都会忽略列表中的空值,然后再进行计算 在分组函数中使用NVL函数可以使分组函数强制包含含有空值的记录 select avg(sscore) from...,其中GROUP BY子句指定要分组的列 SELECT [column,] group_function(column) FROM table [WHERE condition] [GROUP...,所有列都必须包含在GROUP BY子句中 --按照班级分组后求每个班级的得分最高的值,如果想将sclass查出则需要在group by语句中指定按其进行分组得到每班最大值 select sclass,...select sclass,sum(sscore) from stu_class group by sdept,sclass; 按多列分组的GROUP BY子句 --按照多列进行分组查询求平均值 select
ROLL UP ROLL UP 搭配 GROUP BY 使用,可以为每一个分组返回一个小计行,为所有分组返回一个总计行。 直接看例子,我们有以下数据表,包含工厂列,班组列,数量列三列。 ?...当向 ROLLUP 传入一列时,会得到一个总计行。...当向 ROLLUP 传递两列时,将会按照这两列进行分组,同时按照第一列的分组结果返回小计行。我们同时传入工厂和部门看一下。...GROUPING GROUPING()函数只能配合 ROLLUP 和 CUBE 使用,GROUPING()接收一列,如果此列不为空则返回0,如果为空则返回1....有了GROUPING_ID列,我们就可以使用 HAVING 字句来对查询结果进行过滤。选择GROUPING_ID=0的就表示 FACTORY,DEPARTMENT两列都不为空。 ?
的含义是对结果集中的重复行只选择一个,以保证行的唯一性(注意:强调的是“行”,而不是某一列)。...(2).count([all]|[distinct] 字段名) 功能:统计指定字段值不为空的记录个数,字段的数据类型可以是text、image、ntext、uniqueidentifier之外的任何类型...例19:查询学生总数 select count(借书证号) as 总人数 from xs 说明: A.本例中由于“借书证号”字段值所有记录都不为空,故这一统计结果即为总记录个数,即和count(...*)的统计结果一样; B.distinct表示:先消除指定字段取值重复的记录,然后再统计指定字段值不为空的记录个数;而all 则表示所有指定字段值不为空的全部记录都参加统计计数。...如:以下操作将会产生错误: select 借书证号,count(*) from xs (六):对查询结果分组: group by子句用于将查询结果表按某一列或多列值进行分组,列值相等的为一组,
如果你想学习Pandas,建议先看两个网站。...], 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():返回每一列的中位数
1 单个字段排名2 单个字段分组排名3 多个字段排名计算表:1 新建计算表,并一步到位增加一列单个字段排名2 新建计算表,并一步到位增加一列单个字段分组排名3 新建计算表,并一步到位增加一列多个字段排名举例使用不同函数实现各种场景的排名...RANKX不支持按多个依据排名,可以做两次排名叠加,按产品个数放大销量排名的倍数,然后在这个基础上叠加产品排名。...因此,第1种场景中的度量值都自然就会按分组排名。4 多个字段相对排名第3种场景下,表中有两个维度字段,人员和产品,除了分组给产品排名,还有一种情况就是把人员&产品当作排名对象,按销量做排名。...('人员表'[人员])), DESC,[产品],ASC)))2 新建计算表,并一步到位增加一列单个字段分组排名计算表中,给整个表新增一个排名列,使用RANK函数中的PARTITIONBY参数,先分组再排名...人员产品Sales_一步到位增加一列产品在人员分组中按Sales排名列 = VAR _vt_basic = SUMMARIZECOLUMNS('人员表'[人员],'产品表'[产品],"Sales",[Sales
primary key: 表示约束(不能重复且不能为空); 加速查找not null: 不为空 查看表 show tables; -->查看有哪些表 desc student; -...ALTER TABLE testalter_tbl ALTER i DROP DEFAULT; 1.增加 ALTER TABLE student ADD sex CHAR(32); #-->增加一列...2.删除 ALTER TABLE student DROP sex; #-->删除一列 3.修改表名 ALTER TABLE student RENAME TO students;...by id desc; #--->按id倒叙排列 6.分组 1.按名字分组后,并且统计名字出现的次数 select name,count(*) from students group by name...; 2.按名字分组后,把年龄加起来 select name,sum(age) from students group by name; select name,sum(age) as rename_sumage
组函数会自动滤空,只统计不为空 SQL> select count(*),count(comm) from emp; --结果不同,count(comm)只统计comm不为空的个数 SQL> --可以在组函数中嵌套滤空函数...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
、切片访问、通函数、广播机制等 series是带标签的一维数组,所以还可以看做是类字典结构:标签是key,取值是value;而dataframe则可以看做是嵌套字典结构,其中列名是key,每一列的series...切片形式访问时按行进行查询,又区分数字切片和标签切片两种情况:当输入数字索引切片时,类似于普通列表切片;当输入标签切片时,执行范围查询(即无需切片首末值存在于标签列中),包含两端标签结果,无匹配行时返回为空...切片类型与索引列类型不一致时,引发报错 loc/iloc,最为常用的两种数据访问方法,其中loc按标签值访问、iloc按数字索引访问,均支持单值访问或切片查询。...count、value_counts,前者既适用于series也适用于dataframe,用于按列统计个数,实现忽略空值后的计数;而value_counts则仅适用于series,执行分组统计,并默认按频数高低执行降序排列...groupby,类比SQL中的group by功能,即按某一列或多列执行分组。
细化聚集函数的作用对象 未对查询结果分组,聚集函数将作用于整个查询结果 对查询结果分组后,聚集函数将分别作用于每个组 作用对象是查询的中间结果表 按指定的一列或多列值分组,值相等的为一组 合计函数...李四 29 王五 28 如果我们不加GROUP BY 会得到这样一个表 Customer Quantity 张三 88 李四 88 王五 88 张三 88 王五 88 当然GROUP BY也可以按多个列分组...FROM ; 选择全部列查询: 当然我们可以,把所有的列一一列举,我们也可以使用SELECT * SELECT * FROM ; 举例: 还是BILL表 Customer Quantity...BY [ ASC|DESC ] ];--按什么条件排序 其中目标表达式可以为: 算术表达式 字符串常量 函数 列别名 例子: Students表 Name Birth 李勇 1999 刘晨...SELECT AVG(Grade) FROM SC WHERE Cno= ‘ 1 ’; 最大最小值 MAX() 函数和MIN()函数 MAX 函数返回一列中的最大值,MIN 函数返回一列中的最小值
1.分组键是列名 分组键是列名时直接将某一列或多列的列名传给 groupby() 方法,groupby() 方法就会按照这一列或多列进行分组。...参数: ①分组键是列名: 单个列名直接写(按一列进行分组),多个列名以列表的形式传入(这就是按多列进行分 组)。...""" (1)按一列进行分组 import pandas as pd df = pd.DataFrame([[99,"A类","一线城市","是",6,20,0],...、quantile 求分位数 (2)按多列进行分组 按多列进行分组,只要将多个列名以列表的形式传给 groupby() 即可。...df.groupby("客户分类")["7月销量"].sum() ---- 2.分组键是Series 把DataFrame的其中一列取出来就是一个Series ,如df["客户分类"]。
('xxxx.xls') 这里可以单独查看其中的内容 data['nick'],计算其中的大小则使用 data['nick'].value_counts()。...df['b'].dtype: 某一列的格式 df.isnull(): 是否空值 df....查看默认的后 10 行数据 数据表清洗 df.fillna(value=0): 用数字 0 填充空值 df['pr'].fillna(df['pr'].mean()): 用列 pr 的平均值对 na...df.groupby('city').count(): 按 city 列分组后进行数据汇总 df.groupby('city')['id'].count(): 按 city 进行分组,然后汇总 id...列的数据 df.groupby(['city','size'])['id'].count(): 对两个字段进行分组汇总,然后进行计算 df.groupby('city')['pr'].agg([len
,后按col2降序排列数据 df.groupby(col) # 返回一个按列col进行分组的Groupby对象 df.groupby([col1,col2]) # 返回一个按多列进行分组的Groupby...对象 df.groupby(col1)[col2].agg(mean) # 返回按列col1进行分组后,列col2的均值,agg可以接受列表参数,agg([len,np.mean]) df.pivot_table...(index=col1, values=[col2,col3], aggfunc={col2:max,col3:[ma,min]}) # 创建一个按列col1进行分组,计算col2的最大值和col3的最大值...、最小值的数据透视表 df.groupby(col1).agg(np.mean) # 返回按列col1分组的所有列的均值,支持df.groupby(col1).col2.agg(['min','max'...df.mean() # 返回所有列的均值 df.corr() # 返回列与列之间的相关系数 df.count() # 返回每一列中的非空值的个数 df.max() # 返回每一列的最大值 df.min
from p_emp e order by e.sal --按照职位和工资排序,工资要大到小 select * from p_emp e order by e.job,e.sal desc --按照第一列排序...--除以不为空的人数 select avg(nvl(e.comm,0)) from p_emp e --除以总人数 --可以处理字符串,传三个参数 select nvl2(e.comm,'为空','...不为空') from p_emp e lower---将字母全部改为小写 upper---改为大写 concat---连接两个字符串 ?...wm_concat---列转行函数(也属于分组函数) --只能连接两个字符串 select concat('aaa','bbb') from dual select wm_concat() from -...-不推荐使用,将一列值链接可分租
三种处理方式:删除整行,根据上下文(瞎)蒙一个,同一列的空值填上同一个数。 ?...其中有三个空值,我要填充上ddd relate ? 1532868462756.png 试了多次,成功了但不知道咋回事。 expand(列出每列值所有可能的组合,天哪我是写到这里的时候刚看懂的!)...就是选中的列中的值各种组合,成为一个新表。(我想给自己打个优秀) 4.split cells 把一列拆成两列。目测要有分隔符才行啊好像。 ?...二、Dplyr能实现的小动作 1.arrange 排序 按某一/两列值的大小,按照升/降对行排序。...这两种关联方式都是以表格1为基础,根据表格2与其共有的那一列进行筛选。
分组统计 Pandas 的分组统计功能可以按某一列的内容对数据行进行分组,并对其应用统计函数,比如求和,平均数,中位数,标准差等等… 举例来说,用 .groupby() 方法,我们可以对下面这数据表按...因为我们没有指定堆叠的方向,Pandas 默认按行的方向堆叠,把每个表的索引按顺序叠加。 如果你想要按列的方向堆叠,那你需要传入 axis=1 参数: ? 注意,这里出现了一大堆空值。...其中 left 参数代表放在左侧的 DataFrame,而 right 参数代表放在右边的 DataFrame;how='inner' 指的是当左右两个 DataFrame 中存在不重合的 Key 时,...排序 如果想要将整个表按某一列的值进行排序,可以用 .sort_values() : ? 如上所示,表格变成按 col2 列的值从小到大排序。...,index 表示按该列进行分组索引,而 columns 则表示最后结果将按该列的数据进行分列。
统计某列数据信息 以下是一些用来查看数据某一列信息的几个函数: df['Contour'].value_counts() : 返回计算列中每个值出现次数。....unique():返回'Depth'列中的唯一值 df.columns:返回所有列的名称 选择数据 列选择:如果只想选择一列,可以使用df['Group']....基本使用方法如下: df.loc[:,['Contour']]:选择'Contour'列的所有数据。 其中单冒号:选择所有行。 在逗号的左侧,您可以指定所需的行,并在逗号的右侧指定列。...Pandas中提供以下几种方式对数据进行分组。 下面的示例按“Contour”列对数据进行分组,并计算“Ca”列中记录的平均值,总和或计数。...'])['Ca'].mean() df.groupby(by=['Contour'])['Ca'].count() df.groupby(by=['Contour'])['Ca'].sum() 也可以按多列进行数据分组
其中第一个只要以刘开头即可以,第二个以刘开头的两个字。 ②查询成绩不为null的学生 score is not null; 这很好理解,从字面意思就能看出来。...count(score):score这一列因为有一行数据为null,所以不计算在内, ②统计班上的总分 sum,求和的意思。 sum(score):分数这一列所有的数据求和。...sum(score+age):(分数+年龄这两列)所有的数据求和。 ③统计班上的平均分 avg,求平均数的意思,很好理解。 avg(score):分数这一列求平均值。...avg(score+age):分数+年龄这两列求平均值。 sum(score)/count(*):总分除以总人数求平均值。...此外,还有两个聚合函数: max(score):求分数这列的最大值。 min(score):求分数这列的最小值。 用法和上述一样,就不再赘述了。 再次强调: null是不参与运算的。
领取专属 10元无门槛券
手把手带您无忧上云