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

Excel数据处理你是选择Vba还是Python?当然是选pandas!

上述的括号部分就是表中的列标题 - 数据行中,有许多无效的行,只要 开单部门 列有名字,就是有效的行 此案例的数据对所有敏感数据进行随机生成替换 需求结果如下图: - 按 销售员、货品编码,汇总 货品数量和价税合计...这次我们直接使用 pandas 读写 excel 数据,而无需使用 xlwings 库 首先定义需要的列与每列的统计方式: - 其中核心是 g_agg_funcs 字典,他定义了每个输出列的统计方法...设置为 None,表示不需要用 excel 中的数据行作为 DataFrame 的标题 - header=df.iloc[header_idx,:] ,把指定行的内容读取出来 - df.columns...=header ,赋值作为 df 的标题 - df.dropna(subset=[g_pName]) ,把名字列中是空的行去掉 然后即可生成结果,如下: - df.groupby(cols).agg...这里先创建一个 ExcelWriter对象 - res.index.get_level_values(0) ,从分组结果中获得销售人员列,但这里的输出是带重复值的,因此我们需要使用 set 去重复 -

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

    Python替代Excel Vba系列(三):pandas处理不规范数据

    ---- 这是典型的报表输出格式,其中有合并单元格,内容把科目和人名回到一起去。由于案例原有的需求比较繁琐,本文核心是处理数据,因此简化了需求。....options(np.array),因此我们把整块数据加载到 numpy 的数组中。numpy 数组可以很方便做各种切片。 header=arr[2] , 取出第3行作为标题。...---- ---- 我们来看看数据: 注意看左上角有3个 nan ,是因为表格的标题行前3列是空的。 由于前2列有合并单元格,出现了很多 nan。 此外注意看第3列,把课时序号显示成小数。...此外 pandas 中有各种内置的填充方式。 ffill 表示用上一个有效值填充。 合并单元格很多时候就是第一个有值,其他为空,ffill 填充方式刚好适合这样的情况。...此时,由于把唯一的列索引移走了,df 已经没有任何列索引! .reset_index(-1) , 把最后的行索引移走,并成为单独的一列。 到此,df 又重新有了一层列索引。

    5K30

    python pandas.read_csv参数整理,读取txt,csv文件

    header参数可以是一个list例如:[0,1,3],这个list表示将文件中的这些行作为列标题(意味着每一列有多个标题),介于中间的行将被忽略掉(例如本例中的2;本例中的数据1,2,4行将被作为多级标题出现...names : array-like, default None 用于结果的列名列表,如果数据文件中没有列标题行,就需要执行header=None。...na_values : scalar, str, list-like, or dict, default None 一组用于替换NA/NaN的值。如果传参,需要制定特定列的空值。默认为‘1....verbose : boolean, default False 是否打印各种解析器的输出信息,例如:“非数值列中缺失值的数量”等。...If [1, 2, 3] -> 解析1,2,3列的值作为独立的日期列; list of lists. e.g. If [[1, 3]] -> 合并1,3列作为一个日期列使用 dict, e.g.

    3.8K20

    Read_CSV参数详解

    header参数可以是一个list例如:[0,1,3],这个list表示将文件中的这些行作为列标题(意味着每一列有多个标题),介于中间的行将被忽略掉(例如本例中的2;本例中的数据1,2,4行将被作为多级标题出现...names : array-like, default None 用于结果的列名列表,如果数据文件中没有列标题行,就需要执行header=None。...na_values : scalar, str, list-like, or dict, default None 一组用于替换NA/NaN的值。如果传参,需要制定特定列的空值。默认为‘1....verbose : boolean, default False 是否打印各种解析器的输出信息,例如:“非数值列中缺失值的数量”等。...If [1, 2, 3] -> 解析1,2,3列的值作为独立的日期列; list of lists. e.g. If [[1, 3]] -> 合并1,3列作为一个日期列使用 dict, e.g.

    2.7K60

    python pandas.read_csv参数整理,读取txt,csv文件

    header参数可以是一个list例如:[0,1,3],这个list表示将文件中的这些行作为列标题(意味着每一列有多个标题),介于中间的行将被忽略掉(例如本例中的2;本例中的数据1,2,4行将被作为多级标题出现...names : array-like, default None 用于结果的列名列表,如果数据文件中没有列标题行,就需要执行header=None。...na_values : scalar, str, list-like, or dict, default None 一组用于替换NA/NaN的值。如果传参,需要制定特定列的空值。默认为‘1....verbose : boolean, default False 是否打印各种解析器的输出信息,例如:“非数值列中缺失值的数量”等。...If [1, 2, 3] -> 解析1,2,3列的值作为独立的日期列; list of lists. e.g. If [[1, 3]] -> 合并1,3列作为一个日期列使用 dict, e.g.

    6.4K60

    pandas.read_csv参数详解

    header参数可以是一个list例如:[0,1,3],这个list表示将文件中的这些行作为列标题(意味着每一列有多个标题),介于中间的行将被忽略掉(例如本例中的2;本例中的数据1,2,4行将被作为多级标题出现...names : array-like, default None 用于结果的列名列表,如果数据文件中没有列标题行,就需要执行header=None。...na_values : scalar, str, list-like, or dict, default None 一组用于替换NA/NaN的值。如果传参,需要制定特定列的空值。默认为‘1....verbose : boolean, default False 是否打印各种解析器的输出信息,例如:“非数值列中缺失值的数量”等。...If [1, 2, 3] -> 解析1,2,3列的值作为独立的日期列; list of lists. e.g. If [[1, 3]] -> 合并1,3列作为一个日期列使用 dict, e.g.

    3.1K30

    如何在PQ里面数据靠左对齐?

    (一) 首先我们来分析下思路 如果要把靠左的空值数据去除,把右边的数据靠左移动的话,肯定是针对记录进行调整,最终再整理成一张表格。...(二) 涉及到的函数定义及说明 主要步骤有表格根据记录转换成列 Table.ToRows,在列里面删除空值 List.RemoveNulls,然后再还原成表格 Table.FromRows。 1....转换成列 记录转换成列= Table.ToRows(源) ? 解释:把每一行,也就是记录转成了一个单独的列表。 2....去除空值 去除空值=List.Transform(记录转换成列,each List.RemoveNulls(_)) ? 3. 转换成表 转换成表= Table.FromRows(去除空值) ? 4....而在自定义函数中的原标题我们这里是做了省略了,默认是当前表的所有标题,也就是Column1和Column2。 ? 如果觉得不错,请点赞转发下。 请点个赞,转发分享给更多的人。

    1.1K20

    【SAS Says】基础篇:3. 描述数据

    标题的去处可以用title+空值:TITLE; Label语句 它可以为输出的变量加上标签,一个标签最大256字节,下面的代码为receivedate和shipdate创建了标签: LABEL ReceiveDate...变量值是字符串要加上引号,range不止一个值要用逗号隔开,连续的range要用-,关键字low和high可以用来指代变量中最小和最大的的非缺失值。...File语句创建了一个输出文件,空标题title语句告诉SAS去除所有的自动标题。...交叉表的每个小方格内,SAS打印了频数、百分比、行百分比和列百分比。左边和右边是累积百分比。注意计算频数时没有考虑缺失值。 ?...你想得到一份报告,包含了每一个港口的、sailing或者power vessel的、每一种类型的、船的数量,下面的代码用proc tabulate创建了一个三维报告:港口作为页、移动方式作为行、类型作为列

    3.9K101

    VBA中的高级筛选技巧:获取唯一值

    在VBA中,AdvancedFilter方法是处理这种情形的非常强大的一个工具。该方法可以保留原数据,采用基于工作表的条件,可以找到唯一值。下面,将详细介绍如何获取并将唯一值放置在单独的地方。...设置要筛选的单元格区域 AdvancedFilter方法对Range对象进行操作。接通常做法,设置单元格区域,但要注意,VBA始终将第一行视为包含标题的行。...AdvancedFilter方法可以对多个列进行操作,如果只想筛选数据的子集,则可以限制其行范围。 可以跨列筛选唯一值。...如果输出区域太小,无法包含所有结果,VBA将溢出该区域。这意味着无法限制输出,因此要选择一个没有值或可以覆盖原有值的列。...) If iBeforeCount iAfterCount Then MsgBox ("原数据有重复值") End Sub 小结 本文展示了如何在单列或连续列中筛选出唯一的记录,如何将结果放在一个单独的位置供以后比较

    8.6K10

    Project1-特异性共性数据处理

    1、处理思路 1、特异性数据 tsv文件用Excel打开是这样的格式(假设用n列),我想要利用awk工具找到每一个A列在剩下列中特有的部分,思路是在加入额外一列,在原有的去除A列的所有列,每有一个列有内容就在额外加入的一列中记...对应行名n 对应列名n 特异性基因n 2、共性数据 用Excel打开文件后,在除了第一列之外的所有列全部不选择空白,得到的就是共性数据,最后我仅需要输出这些满足条件的行名。...此时只需要在特异性的基础上更改代码,输出所有在额外列中为n-1的数据格所对应的行名。并且在输出结果中简化,只输出对应行名。 对应行名1 对应行名2 ......说明只有 B 到最后一列中的一个列有内容 if (count == 1) { # 输出行名、列名和格内内容,格内内容放在行尾 printf "%s\t%s\t%s...OG0003427 OG0003462#错误行 3、疑问(问题已修改) 目前我的代码在处理最末端的空格时会出现识别不到的现象,误以为每一列都有非空白数据,这可能会对共性的处理产生较大问题(比如示例数据)

    12220

    Python 学习小笔记

    ,默认是将整数作为二进制运算的 a=3 a<<3 print(a) '''将会输出24''' 逻辑运算符 and or not Python的判断语句不支持&& 和 || 成员运算符...: a="string"; a=a*2; print(a) 就会输出stringstring python中字符串格式化的用法和C中一样 end end一般用于print语句中,用于将结果输出到同一行...使用0值表示沿着每一列或行标签\索引值向下执行方法 使用1值表示沿着每一行或者列标签模向执行对应的方法 定位符合某个条件的数据(在处理缺失数据时十分有用) data.loc[行条件,列条件]...data.loc[data[‘Age’]50,‘Survived’]=1 #将所有年龄为50岁的乘客的存活情况设置为1(行条件为Age50,列条件为列标签是Survived) 如果要修改筛选出来的数据...1,‘b’]=3 将列标签为b的第2行数据替换为3 >>>data[data.age.isnull(),‘Age’]=34 将列标签为Age的空数据全部替换为34 >>>data[data.Survived

    97830

    Python库的实用技巧专栏

    list表示将文件中的这些行作为列标题(意味着每一列有多个标题), 介于中间的行将被忽略掉, 注意:如果skip_blank_lines=True, 那么header参数忽略注释行和空行, 所以header...=0表示第一行数据而不是文件的第一行 names: array like 用于结果的列名列表, 若数据文件中没有列标题行则需要执行header=None, 默认列表中不能出现重复, 除非设定参数mangle_dupe_cols...=False来使pandas不适用第一列作为行索引 usecols: array-like 返回一个数据子集, 该列表中的值必须可以对应到文件中的位置(数字可以对应到指定的列)或者是字符传为文件中的列名...在没有列标题时, 给列添加前缀 mangle_dupe_cols : bool 重复的列, 将多个重复列表示为"X.0"..."...从文件头开始算起) na_values: scalar, str, list-like, or dict 一组用于替换NA/NaN的值, 如果传递, 需要制定特定列的空值。

    2.3K30

    软件测试(测试用例)—写用例无压力

    空或者是三位数字 2.前缀码:非“O”且非“1”开头的三位数字 3.后缀码:四位数字 2、边界值 ☆ 针对输入和输出的边界进行测试用例的设计。...1、明确需求 2、确定有效和无效等价类 3、确定边界范围值 4、提取数据编写测试用例 案例一: 需求:通过边界值法验证标题长度的合法性 要求:标题大于0,小于等于30个字符 补充:边界范围节点: 1...(相当于逻辑图) 逻辑关系:恒等 与 或 非 因果图法设计测试用例的步骤: 1、分析出所有的输入和输出; 2、找出输出和输出之间的关系; 3、画因果图; 4、画判定图; 5、把判定表转换成测试用例;...; 正交表设计测试用例的步骤: 1、找出所有的输入变量(因素),确定因素数; 2、确定变量的取值,确定水平数; 3、确定正交表的行和列; 4、根据正交表的性质去填写正交表 5、把正交表的每一行对应写成一个测试用例...以上就是软件测试用例的全部方法,重点掌握等价类,边界值,判定表,场景设计法,因为这四个是实际运用的多的,因果图和正交排列可以看看,知道下概念,写测试用例的时候尤其注意标题,标题可能影响你测试用例的好还,

    1.3K30

    Sqoop工具模块之sqoop-export 原

    1>选择列 --columns参数选择列并控制它们的排序。 默认情况下,表格中的所有列都被选中用于导出。以逗号为间隔选择和排列各个列。...如果--input-null-non-string未指定,则字符串“null”和空字符串将被解释为非字符串列的空值。...注意,除了由--input-null-non-string参数指定外,空字符串将始终被解释为非字符串列的空值。 5>指定分段表 --staging-table选项充当用于分阶段导出数据的辅助表。...在这种情况下,Sqoop在更新现有记录之前将匹配参数列表中的所有列。...这个模式下,--update-key指定的字段在数据库表中必须是唯一非空的(简单理解主键就行),这样此模式才能实现数据库表中已存在的数据进行更新,不存在的数据进行插入。

    7K30

    【NLP】ACL2020表格预训练工作速览

    ,并将线性化的表格和自然语言描述输入到Transformer中,输出编码后的单词向量和列值向量。...如果K>1,对表中的每一行与输入描述计算n-gram覆盖率,选取前K行作为快照。...如果K=1,为了尽可能多的获得表中的信息,TaBert构建了一个合成行,每一列都是从对应列选取n-gram覆盖率最高的一个值,作为合成行这一列的值。这样做的动机是,与描述相关的值可能存在于多行中。...3.1.2 行的线性化 TaBert对内容快照中的每一行进行线性化,作为Transformer的输入。每一个值表示成三部分:列名、类型和单元值,中间使用“|”分割。...3.1.3 垂直自注意力机制(Vertical Self-Attention) TaBert中Transformer输出了每一行的编码结果,但是每一行是单独计算的,因此是相互独立的。

    5.9K10

    SQL数据库查询语句

    select 姓名,专业名,借书数 from xs 3.指定查询结果中的列标题 通过指定列标题(也叫列别名)可使输出结果更容易被人理解。...cardno=借书证号,name=姓名,cnt=借书数 from xs 4.查询经过计算的列(即表达式的值): 使用select对列进行查询时,不仅可以直接以列的原始值作为结果,而且还可以将列值进行计算后所得值作为查询结果...消除查询结果中的重复行 对于关系数据库来说,表中的每一行都必须是不同的(即无重复行)。但当对表进行查询时若只选择其中的某些列,查询结果中就可能会出现重复行。...如:以下操作将产生错误,思考一下为什么?...如: select ‘we are friends’ 又如:select 123.56,’中国’,’沈阳’ select 45*23-1 注意:这里也可以为要输出的值指定列显示标题,如: select

    4.3K20

    Hemberg-lab单细胞转录组数据分析(七)-导入10X和SmartSeq2数据Tabula Muris

    建库测序方法包括通量高覆盖率低的10X数据和通量低覆盖率高的FACS筛选+Smartseq2建库技术。 起始数据于2017年12月20日释放,包含20个组织/器官的100,000细胞的转录组图谱。...CellRanger默认的输出格式是.mtx文件用于存储这个稀疏矩阵,第一列是基因的坐标(0-based),第二列是细胞的坐标(0-based),第三列是大于0的表达值 (长表格形式)。...打开.mtx文件会看到两行标题行后面是包含总行数 (基因数)、列数 (样本数)和稀疏矩阵总行数 (生信宝典注:所有细胞中表达不为0的基因的总和)的一行数据。...,而实际的基因和样品的名字必须单独存储到文件genes.tsv和barcodes.tsv。...SingleCellExperiment对象的优势是可以正常矩阵、稀疏矩阵格式存储数据,还可以以HDF5格式在磁盘存储和访问大的非稀疏矩阵而不用全部加载到内存中。

    1.9K30

    关于SQLServer 中行列互转的实例说明

    pivot 与 unpivot 函数是SQL2005新提供的2个函数,PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合。...UNPIVOT 与 PIVOT 执行相反的操作,将表值表达式的列转换为列值。      ...Sup_Name(供应商)作为列值显示。...将与 PIVOT 执行几乎完全相反的操作,将列转换为行,但是也不是完全的相同,PIVOT 会执行一次聚合,从而将多个可能的行合并为输出中的单个行。...另外,UNPIVOT 的输入中的空值不会显示在输出中,而在执行 PIVOT 操作之前,输入中可能有原始的空值。                3.动态处理和静态处理不一样的地方在于列转行的数量。

    1.5K70
    领券