操作数据帧可能很快会成为一项复杂的任务,因此在Pandas中的八种技术中均提供了说明,可视化,代码和技巧来记住如何做。 ?...可以按照与堆叠相同的方式执行堆叠,但是要使用level参数: df.unstack(level = -1)。 Merge 合并两个DataFrame是在共享的“键”之间按列(水平)组合它们。...合并不是pandas的功能,而是附加到DataFrame。始终假定合并所在的DataFrame是“左表”,在函数中作为参数调用的DataFrame是“右表”,并带有相应的键。...另一方面,如果一个键在同一DataFrame中列出两次,则在合并表中将列出同一键的每个值组合。...“inner”:仅包含元件的键是存在于两个数据帧键(交集)。默认合并。 记住:如果您使用过SQL,则单词“ join”应立即与按列添加相联系。
在第二章中,我们详细介绍了在 NumPy 数组中访问,设置和修改值的方法和工具。...作为字典的序列 像字典一样,Series对象提供从一组键到一组值的映射: import pandas as pd data = pd.Series([0.25, 0.5, 0.75, 1.0],...数据帧中的数据选择 回想一下,DataFrame在很多方面都类似二维或结构化数组,在其它方面莱斯共享相同索引的Series结构的字典。在我们探索此结构中的数据选择时,记住些类比是有帮助的。...作为字典的数据帧 我们将考虑的第一个类比是,DataFrame作为相关Series对象的字典。...作为二维数组的数据帧 如前所述,我们还可以将DataFrame视为扩展的二维数组。
,df_2称为右数据框架,将df_2与df_1合并基本上意味着我们将两个数据帧框架的所有数据合并在一起,使用一个公共的唯一键匹配df_2到df_1中的每条记录。...注意,在第一个Excel文件中,“保险ID”列包含保险编号,而在第二个Excel文件中,“ID”列包含保险编号,因此我们必须指定,对于左侧数据框架(df_1),希望使用“保险ID”列作为唯一键;而对于右侧的数据框架...(df_2),我们希望使用“ID”列作为唯一键。...这一次,因为两个df都有相同的公共列“保险ID”,所以我们只需要使用on='保险ID'来指定它。最终的组合数据框架有8行11列。...有两个“保单现金值”列,保单现金值_x(来自df_2)和保单现金值_y(来自df_3)。当有两个相同的列时,默认情况下,pandas将为列名的末尾指定后缀“_x”、“_y”等。
数据获取 ①列索引取值 使用单个值或序列,可以从DataFrame中索引出一个或多个列。...left_on和right_on:两个表里没有完全一致的列名,但是有信息一致的列,需要指定以哪个表中的字段作为主键。...关键技术:使用’ id’键合并两个数据帧,并使用merge()对其执行合并操作。...代码和输出结果如下所示: (2)使用多个键合并两个数据帧: 关键技术:使用’ id’键及’subject_id’键合并两个数据帧,并使用merge()对其执行合并操作。...代码和输出结果如下所示: (3)使用“how”参数合并 关键技术:how参数指定如何确定结果表中包含哪些键。如果左表或右表中都没有出现组合键,则联接表中的值将为NA。
使用 Python 字典时,pandas 将把键用作列名,并将每个键的值用作列中的数据: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KkvivW8g-1681365384134...我们将通过首先学习选择列,然后选择行,在单个语句中选择行和列的组合以及使用布尔选择来检查这些内容。 此外,pandas 提供了一种构造,用于在我们将要研究的特定行和列上选择单个标量值。...该技术很重要,并且存在,因为它是访问这些值的一种非常高性能的方法。 选择数据帧的列 使用[]运算符选择DataFrame特定列中的数据。 这与Series不同,在Series中,[]指定了行。...使用这些属性被认为是最佳实践。 使用布尔选择来选择行 可以使用布尔选择来选择行。 当应用于数据帧时,布尔选择可以利用多列中的数据。...结果数据帧将由两个列的并集组成,缺少的列数据填充有NaN。 以下内容通过使用与df1相同的索引创建第三个数据帧,但只有一个列的名称不在df1中来说明这一点。
一、Pandas 基础 在本章中,我们将介绍以下内容: 剖析数据帧的结构 访问主要的数据帧组件 了解数据类型 选择单列数据作为序列 调用序列方法 与运算符一起使用序列 将序列方法链接在一起 使索引有意义...在本章中,您将学习如何从数据帧中选择一个数据列,该数据列将作为序列返回。 使用此一维对象可以轻松显示不同的方法和运算符如何工作。 许多序列方法返回另一个序列作为输出。...许多秘籍将与第 1 章,“Pandas 基础”中的内容类似,这些内容主要涵盖序列操作。 选择数据帧的多个列 选择单个列是通过将所需的列名作为字符串传递给数据帧的索引运算符来完成的。...关系数据库的一种非常常见的做法是将主键(如果存在)作为第一列,并在其后直接放置任何外键。 主键唯一地标识当前表中的行。 外键唯一地标识其他表中的行。...这些布尔值通常存储在序列或 NumPy ndarray中,通常是通过将布尔条件应用于数据帧中的一个或多个列来创建的。
我们将使用标准的 NumPy 和 Pandas 导入,来启动我们的代码会话: import numpy as np import pandas as pd Pandas 序列对象 Pandas Series...字典是将任意键映射到一组任意值的结构,而Series是将类型化键映射到一组类型化值的结构。...Pandas 数据帧对象 Pandas 的下一个基本结构是DataFrame。...作为特化字典的DataFrame 同样,我们也可以将DataFrame视为字典的特化。 字典将键映射到值,DataFrame将列名称映射到列数据的Series。...0 0 0 1 1 2 2 2 4 即使字典中的某些键丢失,Pandas 也会用NaN(即“非数字”)值填充它们: pd.DataFrame([{'a': 1, 'b': 2}, {'b': 3, '
name属性在将序列对象组合到数据帧结构等任务中很有用。 使用标量值 对于标量数据,必须提供索引。 将为尽可能多的索引值重复该值。...在本书的下一章中,我们将处理 Pandas 中缺失的值。 数据帧 数据帧是一个二维标签数组。 它的列类型可以是异构的:即具有不同的类型。 它类似于 NumPy 中的结构化数组,并添加了可变性。...使用ndarrays/列表字典 在这里,我们从列表的字典中创建一个数据帧结构。 键将成为数据帧结构中的列标签,列表中的数据将成为列值。 注意如何使用np.range(n)生成行标签索引。...它不如序列或数据帧广泛使用。 由于其 3D 性质,它不像其他两个屏幕那样容易在屏幕上显示或可视化。面板数据结构是 Pandas 中数据结构拼图的最后一部分。 它使用较少,用于 3D 数据。...由于并非所有列都存在于两个数据帧中,因此对于不属于交集的数据帧中的每一行,来自另一个数据帧的列均为NaN。
类似地,AB,H和R列是两个数据帧中唯一出现的列。 即使我们在指定fill_value参数的情况下使用add方法,我们仍然缺少值。 这是因为在我们的输入数据中从来没有行和列的某些组合。...每个组由元组唯一标识,该元组包含分组列中值的唯一组合。 Pandas 允许您使用第 5 步中显示的get_group方法选择特定的组作为数据帧。...将多个变量存储为列值时进行整理 在同一单元格中存储两个或多个值时进行整理 在列名和值中存储变量时进行整理 将多个观测单位存储在同一表中时进行整理 介绍 前几章中使用的所有数据集都没有做太多或做任何工作来更改其结构...查看 Pandas 文档的“新增功能”部分,以了解所有更改的最新信息。 准备 在本秘籍中,我们使用melt方法来整理一个简单的数据帧,以变量值作为列名。...,关联表以及主键和外键 有关wide_to_long函数的更多信息,请参阅本章中的“同时堆叠多组变量”秘籍 九、组合 Pandas 对象 在本章中,我们将介绍以下主题: 将新行追加到数据帧 将多个数据帧连接在一起
这两个主题都超出了本文的范围,但如果考虑将PySpark作为更大数据集的panda和scikit-learn的替代方案,那么应该考虑到这两个主题。...这意味着在UDF中将这些列转换为JSON,返回Pandas数据帧,并最终将Spark数据帧中的相应列从JSON转换为复杂类型 [2enpwvagkq.png] 5.实现 将实现分为三种不同的功能: 1)...42 的键 x 添加到 maps 列中的字典中。...但首先,使用 complex_dtypes_to_json 来获取转换后的 Spark 数据帧 df_json 和转换后的列 ct_cols。...作为最后一步,使用 complex_dtypes_from_json 将转换后的 Spark 数据帧的 JSON 字符串转换回复杂数据类型。
因此,我们使用df.rename,指定我们要重命名的列,然后在字典形式中,键是原始名称,值是新名称。 我们最终使用inplace = True,以便修改原始对象。...我们将使用 50 个独立的数据帧? 听起来像一个愚蠢的想法,我们需要一些方法来组合他们。 Pandas 背后的优秀人才看到了这一点,并为我们提供了多种组合数据帧的方法。...每个数据帧都有日期和值列。这个日期列在所有数据帧中重复出现,但实际上它们应该全部共用一个,实际上几乎减半了我们的总列数。 在组合数据帧时,你可能会考虑相当多的目标。...左 - SQL 左外连接 - 仅使用左侧数据帧中的键 右 - SQL 右外连接 - 仅使用右侧数据帧中的键 外部 - 全外联接 - 使用键的并集 内部 - 使用键的交集 merged = pd.merge...在本教程中,我们将讨论各种滚动统计量在我们的数据帧中的应用。 其中较受欢迎的滚动统计量是移动均值。这需要一个移动的时间窗口,并计算该时间段的均值作为当前值。在我们的情况下,我们有月度数据。
由于我们没有定义数据帧的列名,因此Pandas默认使用序号作为列名。...那么如果要添加一个Quantity列来表示水果数量该怎么做?...4、使用字典创建Pandas DataFrame 字典就是一组键/值对: dict = {key1 : value1, key2 : value2, key3 : value3} 当我们将上述字典对象转换为...容易注意到,字段的键对应成为DataFrame的列,而所有的值对应数据。 记住这个对应关系。 现在假设我们要创建一个如下形状的DataFrame: ?...由于列名为Fruits、Quantity和Color,因此对应的字典也应当 有这几个键,而每一行的值则对应字典中的键值,字典应该是 如下的结构: fruits_dict = { 'Fruits':['Apple
这为我们提供了索引为7的行和列为Metro的值。 我们还可以通过按索引而不是列名来引用列来实现此选择。 为此,我们将使用iloc方法。 在iloc方法中,我们需要将行和列都作为索引号传递。...我们可以使用它来将列中的所有值转换为大写。 我们通过在序列中调用str.upper来实现。...三、处理,转换和重塑数据 在本章中,我们将学习以下主题: 使用inplace参数修改 Pandas 数据帧 使用groupby方法的场景 如何处理 Pandas 中的缺失值 探索 Pandas 数据帧中的索引...接下来,我们了解如何将函数应用于多个列或整个数据帧中的值。 我们可以使用applymap()方法。 它以类似于apply()方法的方式工作,但是在多列或整个数据帧上。...将多个数据帧合并并连接成一个 本节重点介绍如何使用 Pandas merge()和concat()方法组合两个或多个数据帧。 我们还将探讨merge()方法以各种方式加入数据帧的用法。
在本文中,我们将重点讨论一个将「多个预处理操作」组织成「单个操作」的特定函数:pipe。 在本文中,我将通过示例方式来展示如何使用它,让我们从数据创建数据帧开始吧。...需要注意的是,管道中使用的函数需要将数据帧作为参数并返回数据帧。...只要它将数据帧作为参数并返回数据帧,它就可以在管道中工作。...return df 调用 Pandas 内置的 drop duplicates 函数,它可以消除给定列中的重复值。...这里需要提到的一点是,管道中的一些函数修改了原始数据帧。因此,使用上述管道也将更新df。 解决此问题的一个方法是在管道中使用原始数据帧的副本。
(或者,你可以在linux中使用 head 命令来检查任何文本文件中的前5行,例如:head -c 5 data.txt) 然后,你可以使用df.columns.tolist()来提取列表中的所有列,然后添加...此参数还有另一个优点,如果你有一个同时包含字符串和数字的列,那么将其类型声明为字符串是一个好选择,这样就可以在尝试使用此列作为键去合并表时不会出错。...我们定义了一个带有两个输入变量的函数,并使用apply函数将其应用于列 c1 和 c2 。...缺失值的数量 构建模型时,你可能希望排除具有很多缺失值或全是缺失值的行。你可以使用.isnull()和.sum()来计算指定列中缺失值的数量。...选择具有特定ID的行 在SQL中,我们可以使用SELECT * FROM ... WHERE ID( A001 , C022 ,...)来获取具有特定ID的记录。
MPG 值最高的车辆在第一排。 选择排序算法 值得注意的是,pandas 允许您选择不同的排序算法来与.sort_values()和一起使用.sort_index()。...注意:在 Pandas 中,kind当您对多个列或标签进行排序时会被忽略。 当您对具有相同键的多条记录进行排序时,稳定的排序算法将在排序后保持这些记录的原始顺序。...在 DataFrame 中对两个数据集的索引进行排序可以使用其他方法(例如.merge(). ...要了解有关在 Pandas 中组合数据的更多信息,请查看在 Pandas 中使用 merge()、.join() 和 concat() 组合数据。...DataFrame的轴指的是索引 ( axis=0) 或列 ( axis=1)。您可以使用这两个轴来索引和选择DataFrame 中的数据以及对数据进行排序。
import pandas as pd pandas在默认情况下,如果数据集中有很多列,则并非所有列都会显示在输出显示中。...您可以使用以下代码行来设置输出显示中的列数: pd.set_option('display.max_columns', 500) 500表示列的最大宽度。...也就是说,500意味着在调用数据帧时最多可以显示500列。 默认值仅为50。此外,如果想要扩展输显示的行数。...下面的代码将平方根应用于“Cond”列中的所有值。 df['Cond'].apply(np.sqrt) 数据分组 有时我们需要将数据分组来更好地观察数据间的差异。...按列连接数据 pd.concat([df, df2], axis=1) 按行连接数据 pd.concat([df, df2], axis=0) 当您的数据帧之间有公共列时,合并适用于组合数据帧。
在本节中,我们将探讨 Pandas 中的聚合,从类似于我们在 NumPy 数组中看到的简单操作,到基于groupby概念的更复杂的操作。...“组合”步骤将这些操作的结果合并到输出数组中。 虽然这肯定可以使用前面介绍的掩码,聚合和合并命令的某种组合来手动完成,但一个重要的认识是,中间的分割不需要显式实例化。...相反,GroupBy可以(经常)只遍历单次数据来执行此操作,在此过程中更新每个组的总和,均值,计数,最小值或其他聚合。...例如,这里是一个apply(),它按照第二列的总和将第一列标准化: def norm_by_data2(x): # x 是分组值的数据帧 x['data1'] /= x['data2']...此外,可以组合任何前面选择的键,来在多重索引上分组: df2.groupby([str.lower, mapping]).mean() data1 data2 a vowel 1.5 4.0 b
MPG 值最高的车辆在第一排。 选择排序算法 值得注意的是,pandas 允许您选择不同的排序算法来与.sort_values()和一起使用.sort_index()。...注意:在 Pandas 中,kind当您对多个列或标签进行排序时会被忽略。 当您对具有相同键的多条记录进行排序时,稳定的排序算法将在排序后保持这些记录的原始顺序。...在 DataFrame 中对两个数据集的索引进行排序可以使用其他方法(例如.merge()....要了解有关在 Pandas 中组合数据的更多信息,请查看在 Pandas 中使用 merge()、.join() 和 concat() 组合数据。...DataFrame的轴指的是索引 ( axis=0) 或列 ( axis=1)。您可以使用这两个轴来索引和选择DataFrame 中的数据以及对数据进行排序。
(或者,你可以在linux中使用'head'命令来检查任何文本文件中的前5行,例如:head -c 5 data.txt) 然后,你可以使用df.columns.tolist()来提取列表中的所有列,然后添加...此参数还有另一个优点,如果你有一个同时包含字符串和数字的列,那么将其类型声明为字符串是一个好选择,这样就可以在尝试使用此列作为键去合并表时不会出错。...df.head() 在上面的代码中,我们定义了一个带有两个输入变量的函数,并使用apply函数将其应用于列'c1'和'c2'。 但“apply函数”的问题是它有时太慢了。...缺失值的数量 构建模型时,你可能希望排除具有很多缺失值或全是缺失值的行。你可以使用.isnull()和.sum()来计算指定列中缺失值的数量。 1....选择具有特定ID的行 在SQL中,我们可以使用SELECT * FROM ... WHERE ID('A001','C022',...)来获取具有特定ID的记录。
领取专属 10元无门槛券
手把手带您无忧上云