首页
学习
活动
专区
圈层
工具
发布

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

---- ---- 我们来看看数据: 注意看左上角有3个 nan ,是因为表格的标题行前3列是空的。 由于前2列有合并单元格,出现了很多 nan。 此外注意看第3列,把课时序号显示成小数。...---- 处理标题 pandas 的 DataFrame 最大的好处是,我们可以使用列名字操作数据,这样子就无需担心列的位置变化。因此需要把标题处理好。...如下是一个 DataFrame 的组成部分: 红框中的是 DataFrame 的值部分(values) 上方深蓝色框中是 DataFrame 的列索引(columns),注意,为什么方框不是一行?...是因为 DataFrame 允许多层次索引。类似于平时的复合表头。 左方深蓝色框中是 DataFrame 的行索引(index)。...下面来看看一个多层次索引的例子: 上图的上方有3个层次的列索引,依次从上到下。 上图的左方有2个层次的行索引,依次从左到右。

6.4K30

用过Excel,就会获取pandas数据框架中的值、行和列

df.columns 提供列(标题)名称的列表。 df.shape 显示数据框架的维度,在本例中为4行5列。 图3 使用pandas获取列 有几种方法可以在pandas中获取列。...请注意双方括号: dataframe[[列名1,列名2,列名3,…]] 图6 使用pandas获取行 可以使用.loc[]获取行。请注意此处是方括号,而不是圆括号()。...获取1行 图7 获取多行 我们必须使用索引/切片来获取多行。在pandas中,这类似于如何索引/切片Python列表。...要获取前三行,可以执行以下操作: 图8 使用pandas获取单元格值 要获取单个单元格值,我们需要使用行和列的交集。...想想如何在Excel中引用单元格,例如单元格“C10”或单元格区域“C10:E20”。以下两种方法都遵循这种行和列的思想。 方括号表示法 使用方括号表示法,语法如下:df[列名][行索引]。

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

    通宵翻译Pandas官方文档,写了这份Excel万字肝货操作!

    在 Pandas 中,如果未指定索引,则默认使用 RangeIndex(第一行 = 0,第二行 = 1,依此类推),类似于电子表格中的行标题/数字。...索引值也是持久的,所以如果你对 DataFrame 中的行重新排序,特定行的标签不会改变。 5. 副本与就地操作 大多数 Pandas 操作返回 Series/DataFrame 的副本。...列操作 在电子表格中,公式通常在单个单元格中创建,然后拖入其他单元格以计算其他列的公式。在 Pandas 中,您可以直接对整列进行操作。...获取第一个字符: =MID(A2,1,1) 使用 Pandas,您可以使用 [] 表示法按位置位置从字符串中提取子字符串。请记住,Python 索引是从零开始的。...这可以通过创建一个系列并将其分配给所需的单元格来实现。

    25.5K20

    Python自动化:Python操作Excel的多种方式Pandas+openpyxl+xlrd

    读取Excel文件(read_excel) pandas的read_excel函数用于读取Excel文件(.xls或.xlsx),并将其内容加载到DataFrame对象中。...sheet_name: 指定要读取的工作表名称或索引。可以是字符串、整数、字符串列表或None。如果是None,则返回字典,其中包含所有工作表。 header: 指定作为列名的行,默认为0(第一行)。...如果文件没有列标题,可以设置为None。 names: 用于结果的列名的列表,如果文件不包含列标题行,应该明确指定此参数。...columns: 要写入的列名列表。 header: 是否写入列名作为Excel文件的第一行,默认为True。 index: 是否将行索引写入Excel文件,默认为True。...# 通过名称 ws = wb['Sheet1'] # 或者通过索引(索引从0开始) ws = wb.worksheets[0] # 也可以使用 active 属性获取当前活动的工作表

    5K10

    Python与Excel协同应用初学者指南

    这种从单元格中提取值的方法在本质上与通过索引位置从NumPy数组和Pandas数据框架中选择和提取值非常相似。...这将在提取单元格值方面提供很大的灵活性,而无需太多硬编码。让我们打印出第2列中包含值的行的值。如果那些特定的单元格是空的,那么只是获取None。...注意,区域的选择与选择、获取和索引列表以及NumPy数组元素非常相似,其中还使用方括号和冒号:来指示要获取值的区域。此外,上面的循环还很好地使用了单元格属性。...可以使用Pandas包中的DataFrame()函数将工作表的值放入数据框架(DataFrame),然后使用所有数据框架函数分析和处理数据: 图18 如果要指定标题和索引,可以传递带有标题和索引列表为...,即标题(cols)和行(txt); 4.接下来,有一个for循环,它将迭代数据并将所有值填充到文件中:对于从0到4的每个元素,都要逐行填充值;指定一个row元素,该元素在每次循环增量时都会转到下一行;

    23.4K20

    Pandas 2.2 中文官方教程和指南(十九·一)

    这些不能用于列标题行或索引,也无法导出到 Excel。 使用.apply()和.map()函数向特定数据单元格添加直接内部 CSS。请参见这里。...操作索引和列标题 通过使用以下方式实现标题的类似应用: .map_index()(逐元素):接受一个接受单个值并返回具有 CSS 属性-值对的字符串的函数。...传递给subset的值类似于对 DataFrame 进行切片; 将标量视为列标签 将列表(或 Series 或 NumPy 数组)视为多列标签 元组被视为(行索引器,列索引器) 考虑使用...可扩展性 pandas 的核心是,并将始终是其“高性能、易于使用的数据结构”。...作用于索引和列标题 通过使用以下方式实现标题的类似应用: .map_index()(逐元素):接受一个接受单个值并返回带有 CSS 属性-值对的字符串的函数。

    88810

    15个节省时间的Jupyter技巧

    (在命令模式下) Esc + O:切换单元格输出(在命令模式下) 选择多个单元格: Shift + Down选择向下方向的下一个单元格。 Shift + Up选择向上方向的下一个单元格。...输出中的列数和行数 默认情况下,panda的dataframe只能显示有限数量的行和列。...有几种方法可以扩展Jupyter Notebook中pandas DataFrame中显示的行和列的数量。...我们在jupyter notebook中执行单元格时,它将分配一个行号为ln: 当单元格完成执行时,我们会得到一个输出并且可以通过传递执行编号作为索引来访问它 Out是一个python字典,存储单元格的所有输出...我们可以使用编号作为索引来访问输出。 15、导出单元格的内容 当完成jupyter的测试我们可能会想将jupyter单元中内容导出到python文件中。

    3.4K40

    【愚公系列】2023年07月 Pandas数据分析之DataFrames

    你不能通过名称访问行,不能通过位置索引访问不相交的行,你甚至不能引用单个单元格,因为df[‘x’, ‘y’]是为多索引保留的!...7.1 垂直叠加 这可能是将两个或多个dataframe合并为一个的最简单方法:您获取第一个dataframe中的行,并将第二个dataframe中的行追加到底部。...7.4 连接查询 1、1:1 连接的关系 当同一组对象的信息存储在几个不同的DataFrame中时,你希望将它们合并为一个DataFrame。...默认情况下,Pandas会对所有远端可求和的东西进行求和,因此你需要缩小选择范围,如下所示: 注意,当对单个列求和时,你将得到一个Series而不是DataFrame。...当使用多索引时,透视表特别方便。

    2.3K10

    如何使用Selenium Python爬取动态表格中的复杂元素和交互操作

    rows = table.find_elements_by_tag_name('tr')# 创建一个空列表,用于存储数据data = []# 遍历每一行for row in rows: # 获取行中的所有单元格...cells = row.find_elements_by_tag_name('td') # 如果单元格数量大于0,则说明是数据行,而不是标题行或空行 if len(cells) >...判断行类型:对于每一行,通过find_elements_by_tag_name('td')方法找到行中的所有单元格,然后判断单元格数量是否大于0,以确定该行是否是数据行,而不是标题行或空行。...解析数据并存储:如果是数据行,代码创建一个空字典record,并将每个单元格的文本和对应的列名作为键值对存入字典。...将列表转换为DataFrame对象:使用pd.DataFrame(data)将data列表转换为一个pandas的DataFrame对象df,其中每个字典代表DataFrame的一行。

    5.3K20

    Python 数据分析与可视化:开启数据洞察之旅(510)

    添加和删除单元格:如果我们需要添加新的单元格,可以点击菜单栏中的 “Insert” -> “Insert Cell Above”(在当前单元格上方插入)或 “Insert Cell Below”(在当前单元格下方插入...访问 Series 中的数据也很直观,我们可以通过索引来获取单个数据或多个数据: # 访问单个数据 print(s2['b']) # 访问多个数据 print(s2[['a', 'c']])...在第一行代码中,我们通过索引 'b' 获取了 s2 中对应的数据 200;第二行代码中,我们通过传递一个包含索引 'a' 和 'c' 的列表,获取了这两个索引对应的数据,输出结果是一个包含这两个数据的新...print(row_data) 在第一行代码中,我们通过列名 ' 年龄 ' 获取了 df 中的 ' 年龄 ' 列数据,返回的是一个 Series 对象;第二行代码中,我们使用 loc 索引器通过行索引...,获取了 df 中索引为 1、2、3 的行,以及 ' 姓名 ' 和' 城市 ' 两列的数据,返回的是一个新的 DataFrame 对象。

    1.7K00

    一文讲述Pandas库的数据读取、数据获取、数据拼接、数据写出!

    1. pandas介绍 Pandas是一个强大的数据分析库,它的Series和DataFrame数据结构,使得处理起二维表格数据变得非常简单。...这里我一共提供了5种需要掌握的数据获取方式,分别是 “访问一列或多列” ,“访问一行或多行” ,“访问单元格中某个值” ,“访问多行多列” 。...”的方式,就可以获取到一列或多列。...,"地区2","地区4"]] ④ 访问单元格中某个值 “访问单元格中某个值”,也有很多种方式,既可以使用“位置索引”,也可以使用“标签索引”。...在Pandas库中,将数据导出为xlsx格式,使用的是DataFrame对象的to_excle()方法,其中这里面有4个常用的参数,详情如下。

    14.8K30

    Python数据分析之pandas数据选取

    Pandas中,数据主要保存为Dataframe和Series是数据结构,这两种数据结构数据选取的方式基本一致,本文主要以Dataframe为例进行介绍。...Dataframe对象的每一列都有列名,可以通过列名实现对列的选取。 1)选取行 选取行的方式包括三种:整数索引切片、标签索引切片和布尔数组。...df.at[]和df.iat[]选取的都是单个单元格(单行单列),所以返回值都为基本数据类型。...4)选取数据时,返回值存在以下情况: 如果返回值包括单行多列或多行单列时,返回值为Series对象;如果返回值包括多行多列时,返回值为DataFrame对象;如果返回值仅为一个单元格(单行单列)时,返回值为基本数据类型...5)df[]的方式只能选取行和列数据,不能精确到单元格,所以df[]的返回值一定DataFrame或Series对象。 6)当使用DataFrame的默认索引(整数索引)时,整数索引即为标签索引。

    1.9K30

    Pandas 2.2 中文官方教程和指南(四)

    Excel DataFrame 工作表 Series 列 Index 行标题 行 行 NaN 空单元格 DataFrame 在 pandas 中,DataFrame类似于 Excel 工作表。...Excel DataFrame 工作表 Series 列 Index 行标题 行 行 NaN 空单元格 DataFrame 在 pandas 中,DataFrame 类似于 Excel 的工作表。...索引值也是持久的,因此如果重新排序DataFrame的行,则特定行的标签不会更改。 查看 索引文档以获取更多关于如何有效使用Index的信息。 副本 vs....一般术语翻译 pandas Excel DataFrame 工作表 Series 列 Index 行标题 行 行 NaN 空单元格 DataFrame 在 pandas 中,DataFrame 类似于...在 pandas 中,如果未指定索引,则默认使用RangeIndex(第一行= 0,第二行= 1,依此类推),类似于电子表格中的行标题/数字。

    1.6K10

    分享7个数据分析的有用工具

    也就是说,你只需调用 .plot() 方法,即可快速绘制简单的 pd.DataFrame 或 pd.Series: ? 有点无聊?...魔术命令包括两种方法:行魔术命令(line magics):以 % 为前缀,在单个输入行上运行;单元格魔术命令(cell magics):以 %% 为前缀,在多个输入行上运行。...在命令模式内: A 和 B:在当前单元格上方(Above)或下方(Below)插入新的单元格。 M:当前单元格转入 Markdown 状态。 Y:当前单元格转入 code 状态。...选择多个单元格: Shift + Down 和 Shift + Up:选中下方或上方的单元格。 Shift + M:合并选中单元格。...在 Jupyter(或 IPython)中使一个单元同时有多个输出 ” 想展示 pandas DataFrame 的 .head() 和 .tail(),但由于创建运行 .tail() 方法的额外代码单元过于麻烦而不得不中途放弃

    1.6K20

    7个Python特殊技巧,助力你的数据分析工作之路

    也就是说,你只需调用 .plot() 方法,即可快速绘制简单的 pd.DataFrame 或 pd.Series: ? 有点无聊?...魔术命令包括两种方法:行魔术命令(line magics):以 % 为前缀,在单个输入行上运行;单元格魔术命令(cell magics):以 %% 为前缀,在多个输入行上运行。...在命令模式内: A 和 B:在当前单元格上方(Above)或下方(Below)插入新的单元格。 M:当前单元格转入 Markdown 状态。 Y:当前单元格转入 code 状态。...选择多个单元格: Shift + Down 和 Shift + Up:选中下方或上方的单元格。 Shift + M:合并选中单元格。...在 Jupyter(或 IPython)中使一个单元同时有多个输出 想展示 pandas DataFrame 的 .head() 和 .tail(),但由于创建运行 .tail() 方法的额外代码单元过于麻烦而不得不中途放弃

    1.4K20

    数据分析的工作随你挑!

    也就是说,你只需调用 .plot() 方法,即可快速绘制简单的 pd.DataFrame 或 pd.Series: ? 有点无聊? 这已经很好了,不过是否可以绘制一个交互式、可缩放、可扩展的全景图呢?...魔术命令包括两种方法:行魔术命令(line magics):以 % 为前缀,在单个输入行上运行;单元格魔术命令(cell magics):以 %% 为前缀,在多个输入行上运行。...在命令模式内: A 和 B:在当前单元格上方(Above)或下方(Below)插入新的单元格。 M:当前单元格转入 Markdown 状态。 Y:当前单元格转入 code 状态。...选择多个单元格: Shift + Down 和 Shift + Up:选中下方或上方的单元格。 Shift + M:合并选中单元格。...在 Jupyter(或 IPython)中使一个单元同时有多个输出 想展示 pandas DataFrame 的 .head() 和 .tail(),但由于创建运行 .tail() 方法的额外代码单元过于麻烦而不得不中途放弃

    1.1K20
    领券