Where Where用来根据条件替换行或列中的值。如果满足条件,保持原来的值,不满足条件则替换为其他值。默认替换为NaN,也可以指定特殊值。..., raise_on_error=None) 参数作用: cond:布尔条件,如果 cond 为真,保持原来的值,否则替换为other other:替换的特殊值 inplace:inplace为真则在原数据上操作...用法: DataFrame.loc[] 或者 DataFrame.iloc[] loc:按标签(column和index)选择行和列 iloc:按索引位置选择行和列 选择df第1~3行、第1~2列的数据...如果未指定, 请使用未设置为id_vars的所有列 var_name [scalar]:指代用于”变量”列的名称。...[int或string, 可选]:如果列为MultiIndex, 它将使用此级别来融化 例如有一串数据,表示不同城市和每天的人口流动: import pandas as pd df1 = pd.DataFrame
**查询总行数:** 取别名 **查询某列为null的行:** **输出list类型,list中每个元素是Row类:** 查询概况 去重set操作 随机抽样 --- 1.2 列元素操作 --- **获取...Row元素的所有列名:** **选择一列或多列:select** **重载的select方法:** **还可以用where按条件选择** --- 1.3 排序 --- --- 1.4 抽样 --- --...otherwise表示,不满足条件的情况下,应该赋值为啥。...DataFrame类型): avg(*cols) —— 计算每组中一列或多列的平均值 count() —— 计算每组中一共有多少行,返回DataFrame有2列,一列为分组的组名...,另一列为行总数 max(*cols) —— 计算每组中一列或多列的最大值 mean(*cols) —— 计算每组中一列或多列的平均值 min(*cols) —— 计算每组中一列或多列的最小值
比如下面,想要筛选出大于NOX这变量平均值的所有数据,然后按NOX降序排序。...loc按标签值(列名和行索引取值)访问,iloc按数字索引访问,均支持单值访问或切片查询。除了可以像[]按条件筛选数据以外,loc还可以指定返回的列变量,从行和列两个维度筛选。...举例如下,将Sex为male当作筛选条件,cond就是一列布尔型的Series,非male的值就都被赋值为默认的NaN空值了。...filter不筛选具体数据,而是筛选特定的行或列。...它支持三种筛选方式: items:固定列名 regex:正则表达式 like:以及模糊查询 axis:控制是行index或列columns的查询 下面举例介绍下。
可以看出,当how=’inner‘时,得到的合并数据框会自动剔除存在数据缺失的行,只保留完美的行,'outer'时则相反 dataframe.join() join()的一些常用参数: other:...join()的合并对象 on:指定的合并依据的联结键列 how:选择合并的方式,'left'表示左侧数据框行数不可改变,只能由右边适应左边;'right'与之相反;'inner'表示取两个数据框联结键列的交集作为合并后新数据框的行...;'outer'表示以两个数据框联结键列的并作为新数据框的行数依据,缺失则填充缺省值 lsuffix:对左侧数据框重复列重命名的后缀名 rsuffix:对右侧数据框重复列重命名的后缀名 sort:表示是否以联结键所在列为排序依据对合并后的数据框进行排序...细心的你会发现虽然我们成功得到了一个数据框按行的随即全排列,但是每一行的行index却依然和打乱前对应的行保持一致,如果我们利用行标号进行遍历循环,那么实际得到的每行和打乱之前没什么区别,因此下面引入一个新的方法...8.数据框元素的去重 df.drop_duplicates()方法: 参数介绍: subset:为选中的列进行去重,默认为所有列 keep:选择对重复元素的处理方式,'first'表示保留第一个,'last
Ture表示允许新的列名与已存在的列名重复 在第三列的位置插入新列: #新列的值 new_col = np.random.randn(10) #在第三列位置插入新列,从0开始计算 df.insert(2...Where Where用来根据条件替换行或列中的值。如果满足条件,保持原来的值,不满足条件则替换为其他值。默认替换为NaN,也可以指定特殊值。..., raise_on_error=None) 参数作用: cond:布尔条件,如果 cond 为真,保持原来的值,否则替换为other other:替换的特殊值 inplace:inplace为真则在原数据上操作...用法: DataFrame.loc[] # 或者 DataFrame.iloc[] loc:按标签(column和index)选择行和列 iloc:按索引位置选择行和列 选择df第1~3行、第1~2列的数据...如果未指定, 请使用未设置为id_vars的所有列 var_name [scalar]:指代用于”变量”列的名称。
可以直接用列名选择,也可以通过ix、iloc、loc方法进行选择行、列。 ix方法可以使用数值或者字符作为索引来选择行、列。 iloc则只能使用数值作为索引来选择行、列。...选择多列。ix、iloc、loc方法都可使用。 只不过ix和loc方法,行索引是前后都包括的,而列索引则是前包后不包(与列表索引一致)。 iloc方法则和列表索引一致,前包后不包。...# ignore_index=True表示忽略两表原先的行索引,合并并重新排序索引,drop_duplicates()表示去重 print(pd.concat([df1, df2], ignore_index...05 排序 Pandas的排序方法有以下三种。 sort_values、sort_index、sortlevel。 第一个表示按值排序,第二个表示按索引排序,第三个表示按级别排序。...这里以性别列为例,将0,1,2替换为未知、男性、女性。
.xlsx') # 相对路径 # df = pd.read_excel(r'E:\Anaconda\hc\dataScience\table1.csv') # 绝对路径 显示数据 显示数据的行与列数...(by=['Score']) (注:默认升序,且空值在后面) 数据分组 ①单一条件分组 # 如果Score列的值>=85,Score列显示high,否则显示low # group列为增加列 df['group...'] = np.where(df['Score'] > 85,'high','low') ②多个条件分组 # 利用loc函数,进行多列查询 # sign为增加列 df.loc[(df['Sex'] =...:5] ②按位置提取 #[0, 2, 5] 代表指定的行,[0, 1, 5] 代表指定的列 df.iloc[[0, 2, 5],[0, 1, 5]] 按条件提取(isin与loc函数) ①用isin...85'), ['Name','Age','Class']] ③先判断结果,将结果为True的提取 # 先判断Score列里是否包含80和90,然后将复合条件的数据提取出来。
bfill表示用所在索引1206的后一个有效行填充,ffill为前一个有效行。...1. where函数 当对条件为False的单元进行填充,不满足条件的行全部被设置为NaN df.where(df['Gender']=='M').head() 注意和query的区别 df.query...df[df['Gender']=='M'].head() 第一个参数con为布尔条件,第二个参数other为填充值 df.where(df['Gender']=='M',np.random.rand(df.shape...('Class') 上边有些类似于mysql中按某列groupby之后,还能选择其他的非分组列。...[0]) df.sample(n=3,weights=w).head() 以某一列为权重,这在抽样理论中很常见 df.sample(n=3,weights=df['Math']).head() 以某一列为权重
(df1) #行 > ncol(df1) # 列 > rownames(df1) #行名 > colnames(df1) #列名 3.4 数据框取子集:$ 、[ ] 、按照名字、按条件(逻辑值...) 按照1列取 df1$ > df1$score #删掉score,按Tab键试试。...因为这一列的数据类型必须是一样的。 > df1[c(1,3),1:2] 中括号里的逗号,表示维度的分割。 #按照名字,按照这种方式可以一次提取两列。...但是 $ 自动补齐不可以 >df1[,"gene"] > df1[,c("gene","change")] #按条件(逻辑值) 挑选score>0 的行 > df1[df1$score>0,] #这是按照行取的...逻辑值符合的条件是score一列大于0被保留下来。 #思考?筛选score>0的基因?
方式1: 按列的名称进行索引 > df$a [1] 1 2 3 4 5 6 7 8 9 10 方式2: 按对应轴的标号进行索引 > df[2] b a 10 b 9 c...在R中,通过内联键合并数据框的函数为merge(),其主要参数如下: by:对两个数据框建立内联的共有列(元素交集部分不能为空集),以此列为依据,返回内联列取交集后剩下的样本行 sort:是否对合并后的数据框以内联列为排序依据进行排序...,其第一个输入值为待筛选的数据框,第二个位置写入行筛选的条件(或多个条件的逻辑符连接的组合筛选),第三个select参数控制选中的列: > subset(df1, a >= 6& a <=8) a...需要删除的行,!需要删除的列] 上面的duplicated(df)已经提取出df的所有重复行的逻辑型标号,因此只需要在删除方法里设置删除的标号为duplicated(df)的返回值即可: > df[!...j j 可以看到,所有重复行均已清除。
.T) # print(np.transpose(df2))等价于上述操作 ''' axis=1表示行 axis=0表示列 默认ascending(升序)为True ascending=True表示升序...,ascending=False表示降序 下面两行分别表示按行升序与按行降序 ''' print(df2.sort_index(axis=1,ascending=True)) print(df2.sort_index...6.0 2018-08-19 2 2 foo test 3 9.0 2018-08-19 3 3 foo train 3 10.0 2018-08-19 4 ''' # 表示按列降序与按列升序...# 按行或列设置 # 列批处理,F列全改为NaN df['F'] = np.nan print(df) 4.5 添加Series序列(长度必须对齐) df['E'] = pd.Series([1,2,3,4,5,6...# 删除掉有NaN的行或列 print(df.dropna()) # 默认是删除掉含有NaN的行 print(df.dropna( axis=0, # 0对行进行操作;1对列进行操作
:end_index] # 根据条件过滤行 df[df['column_name'] > 5 ] # 使用多个条件过滤行 df[(df['column_name1'] > 5) & (df['column_name2..., column_indices] # 根据条件选择数据框中的行和列 df.loc[df['column_name'] > 5, ['column_name1', 'column_name2']]...# 根据条件过滤行 df_filtered = df[df['column_name'] > 5] # 按单列对DataFrame进行排序 df_sorted = df.sort_values('column_name...False]) # 按单列对DataFrame进行分组并计算另一列的平均值 grouped_data = df.groupby('column_name')['other_column'].mean...() # 按多列对DataFrame进行分组并计算另一列的总和 grouped_data = df.groupby(['column_name1', 'column_name2'])['other_column
排名 首先需要解决的是怎么得到班级 top 3? 首要任务是得到排名,如下: 这里需要在数据中新增一列[排名] df.groupby('班级') 就是按 班级 分组的意思。...df.groupby('班级')['总分'] 表示分组后每个组我们只使用[总分]这个字段。...参数 method='min' ,表明如果有多个人有相同的总分,那么全部的人都用所有名次中最小的排名值。后面会看到数据。...df.sort_values(['班级','排名'],inplace=True) ,按先[班级]后[排名]进行排序,不是必须的,只是为了方便查看数据。...而 transform 方法的特点就是不会压缩原数据的行数,因此每组的数都是一样的平均分。 df['班级均分']=class_avg ,同样新增一列。
Python 中使用 shape 函数来查看数据表的维度,也就是行数和列数,函数返回的结果(6,6)表示数据表有 6 行,6 列。下面是具体的代码。 ...按标签提取(loc) Loc 函数按数据表的索引标签进行提取,下面的代码中提取了索引列为 3 的单条数据。 ...1#提取 4 日之前的所有数据 2df_inner[:'2013-01-04'] 按提起提取 按位置提取(iloc) 使用 iloc 函数按位置对数据表中的数据进行提取,这里冒号前后的数字不再是索引的标签名称...,后面方括号中的数表示所在列的位置。 ...符合条件的数据有 4 条。将筛选结果按 id 列进行排序。 1#使用“非”条件进行筛选 2df_inner.loc[(df_inner['city'] !
(tg_query)[cols]) ,因为只有一行(.iloc[0]) ,看看哪些是缺考的(.isna()) 行6:同上的逻辑,只是这次的条件是其他的同学 行8:用前2步的结果对比(tg_cond ==...pandas 也能按这种思路完成: pandas 中的 isin 对应 Sql 的 in A列.isin(B列),得到的结果是一个长度与A列一样的 bool值的列,每个 bool 值表示 A列对应的值是否在...,正确的 Sql 做法请看源码吧 ---- 没学过"张三"老师讲授的任一门课程的学生姓名: 行4:所有(all)课程教师都不是"张三"(df_wd[cols]!...平均成绩(df_wd[cols].mean(axis=1)) ---- 检索"语文 "课程分数小于 60,按分数降序排列的学生信息: 行3:语文成绩小于60分(df_wd[cols]<60) 行5:按分数降序排列...(.sort_values(cols,ascending=False)) ---- 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩: 行4:求出平均成绩 行5:有平均成绩的学生 行6:排序
自定义函数变量data data=df.loc[2:5] #这里的[2:5]表示第3行到第5行内容,[]第一个起始是0,表示数据的第一行 筛选出数据某列为某值的所有数据记录 df['列名'] =...'值' 多条件匹配时 自定义函数data_many data_many=df[(df['列名1']== ‘列值1’)&(df['列名2']==‘列值2’)] 多值匹配时 data_many="...是不是很像SQL的语句:select * from id where name in (‘值1’,‘值2’,‘值3’) 3.2 模式匹配 某列中开头是某值,中间包含某值的模式匹配法,可能在Excel中实现比较困难...自定义函数获取返回函数值——cond 开头包含某值的模式匹配 cond=df['列名'].str.startswith('值') 中间包含某值的模式匹配 cond=df['列名'].str.contains...('值') 3.3 范围区间值筛选 筛选出基于两个值之间的数据: 自定义函数cond cond=df[(df['列名1']>‘列值1’)&(df['列名1']<‘列值2’)] 返回列名1介于列值1和列值
: # 通过位置索引选取第一行数据 df.iloc[0] # 通过位置索引选取第一行和第二行数据 df.iloc[0:2] 通过布尔索引筛选数据: # 选取年龄大于等于 20 的记录 df[df['age...判断数据是否为缺失值: # 返回一个布尔型 DataFrame,表明各元素是否为缺失值 df.isnull() 删除缺失值所在的行或列: # 删除所有含有缺失值的行 df.dropna() # 删除所有含有缺失值的列...df.dropna(axis=1) 用指定值填充缺失值: # 将缺失值使用 0 填充 df.fillna(0) 数据去重 对 DataFrame 去重: # 根据所有列值的重复性进行去重 df.drop_duplicates...'].drop_duplicates() 数据合并 横向(按列)合并 DataFrame: # 创建一个新的 DataFrame other_data = {'name': ['Tom', 'Jerry...DataFrame 在列上合并 pd.concat([df, other_df], axis=1) 纵向(按行)合并 DataFrame: # 创建一个新的 DataFrame other_data
0.467826 -2.119408 -0.492461 0.135464 4 E 0.539113 -0.436789 1.232529 0.170452 用.set_index()表示设置某一列为索引...列 可以使用.drop()函数,在使用这个函数的时候,需要指定具体的删除方向,axis=0表示删除某行,axis=1表示删除某列。...4.0 7 1 2.0 NaN 8 2 NaN 6.0 9 把包含NaN的行或列丢弃 df.dropna() #默认是把包含NaN的行丢弃 >> A B C 0 1.0...4.0 7 把包含NaN的列丢弃 df.dropna(axis=1) #默认是axis=0 >> C 0 7 1 8 2 9 把全是NaN的行丢弃 df.dropna(how='all')...0.604937 0.854352 -0.798596 0.445300 -1.106076 -0.073527 1.528935 merge contcat是直接把两个DataFrame按行或列拼起来
数据框有两个维度,分别表示行数和列数,可以用dim()函数来获取。数据框中的每个向量可以有一个名称,可以用names()函数来获取或设置。...行列索引号从1开始,表示第一行或第一列,负数表示排除对应位置的元素。名称是指数据框中每个向量的名称,可以用双引号或单引号包围。使用方括号[]访问数据框中的元素时,返回的结果仍然是一个数据框。...M London # 3 Charlie 30 M Tokyo 合并数据框 我们可以用rbind()和cbind()函数来按行或列合并数据框,参数是两个或多个数据框,它们必须有相同的列数或行数...= 25) cat("根据条件删除age为25岁的行后的数据框:\n") print(df_deleted_age) # 根据条件删除age为25岁的行后的数据框: # name age gender...<- subset(df, select = -c(age)) cat("根据条件删除age列后的数据框:\n") print(df_deleted_age_column) # 根据条件删除age列后的数据框
领取专属 10元无门槛券
手把手带您无忧上云