一、前言 前几天在Python白银交流群【上海新年人】问了一个Pandas数据提取的问题,问题如下:大佬们,请教个小问题,我要查找某列中具体的值,譬如df[df['作者'] == 'abc'],但实际上这样子我找不到...ABC,因为对方实际是小写的abc。...再次反应是加个或进行处理,也可以用如下代码: # 创建布尔Series mask = df['作者'].isin(['ABC', 'abc']) # 使用布尔Series来索引DataFrame result...但是粉丝的需求又发生了改变,下一篇文章我们一起来看看这个“善变”的粉丝提问。 三、总结 大家好,我是皮皮。...这篇文章主要盘点了一个Pandas数据提取的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。
一、前言 前几天在Python白银交流群【上海新年人】问了一个Pandas数据提取的问题,上一篇中已经给出了代码,粉丝自己可能还没有领悟明白,一用就废,遇到了问题。...他的代码照片如下图: 这个代码这么写,最后压根儿就没有得到他自己预期的结果,遂来求助。这里又回归到了他自己最开始的需求澄清!!!论需求表达清晰的重要性!...二、实现过程 后来【莫生气】给了一份代码,如下图所示: 本以为顺利地解决了问题,但是粉丝又马上增改需求了,如下图所示: 真的,代码写的,绝对没有他需求改的快。得亏他没去做产品经理,不然危矣!...能给你做出来,先实现就不错了,再想着优化的事呗。 后来【莫生气】给了一个正则表达式的写法,总算是贴合了这个粉丝的需求。 如果要结合pandas的话,可以写为下图的代码: 至此,粉丝不再修改需求。...这篇文章主要盘点了一个Pandas数据提取的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。 最后感谢粉丝【上海新年人】提出的问题,感谢【鶏啊鶏。】
一、前言 前几天在Python白银交流群【上海新年人】问了一个Pandas数据提取的问题,但是粉丝又改需求了,需求改来改去的,就是没个定数。 这里他的最新需求,如上图所示。...他的意思在这里就是要上图中最下面这3个。 二、实现过程 后来【论草莓如何成为冻干莓】给了一份代码,如下图所示: 顺利地解决了粉丝的问题。...可以看到,代码刚给出来,但是粉丝的需求又发生了改变,不过不慌,这里又给出了对应代码,如下图所示: 一看就会,一用就废,粉丝自己刚上手,套用到自己的数据里边,代码就失灵了。...下一篇文章,我们再来看这位粉丝新遇到的问题。 三、总结 大家好,我是皮皮。这篇文章主要盘点了一个Pandas数据提取的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。...最后感谢粉丝【上海新年人】提出的问题,感谢【鶏啊鶏。】、【论草莓如何成为冻干莓】给出的思路,感谢【莫生气】等人参与学习交流。
本次的练习是:如下图1所示,单元格区域A1:D6中是一系列数据,其中包含空单元格,现在要将它们放置到一列中,并删除空单元格,如图中所示的单元格区域G1:G13,如何使用公式实现? ?...这个结果传递给INDIRECT函数: INDIRECT(“R1C00004”,0) 结果将取出第1行第4列中的值,即单元格D4中的值。 为什么选用10^5,并且使用R0C00000作为格式字符串呢?...使用足够大的数值,主要是为了考虑行和列扩展后能够准确地取出相应行列所在单元格的数据。 注意到,在TEXT函数中,先填充C之后的五个零,剩下的在填充R之后的部分。...TEXT(SMALL(IF(rngData"",10^5*ROW(rngData)+COLUMN(rngData)),ROWS($1:1)),"R0C00000"),0),"") 这个公式不需要辅助列。...这个公式的缺点是,当下拉很多行时,如果有许多行都为空,则仍会进行很多的计算,占有资源,不会像前面给出的公式,第一个IF判断为大于非空单元格值后,直接输入空值。有兴趣的朋友可以仔细研究。
本次的练习是:这个练习题与本系列上篇文章的练习题相同,如下图1所示,不同的是,上篇文章中将单元格区域A1:D6中的数据(其中包含空单元格)转换到单独的列(如图中所示的单元格区域G1:G13)中时,是以行的方式进行的...这里,需要以列的方式进行,即先放置第1列中的数据、再放置第2列中的数据……依此类推,最终结果如图中所示的单元格区域H1:H13,如何使用公式实现? ? 图1 先不看答案,自已动手试一试。...公式解析 公式中的主要部分与上篇文章相同,不同的是将: TEXT(SMALL(IF(rngData"",10^5*ROW(rngData)+COLUMN(rngData)),ROWS($1:1)),..."),{8,2},5) 应该获取单元格C2中的值,即数据区域的第2行第3列。...相关参考 Excel公式练习32:将包含空单元格的多行多列单元格区域转换成单独的列并去掉空单元格 Excel公式练习4:将矩形数据区域转换成一行或者一列
对象都可以进行方法链接,因为每个对象方法必须返回另一个自身将具有更多方法的对象。...最重要的列(例如电影的标题)位于第一位。 步骤 4 连接所有列名称列表,并验证此新列表是否包含与原始列名称相同的值。 Python 集是无序的,并且相等语句检查一个集的每个成员是否是另一个集的成员。...,而步骤 2 将一个数据帧与另一个数据帧进行比较。...=,=)将序列中的所有值与标量值进行比较。....jpeg)] 我们可以将这种复合索引选择与布尔索引的速度进行比较。
pandas使用最多的数据结构对象是 DataFrame,它是一个面向列(column-oriented)的二维表结构,另一个是 Series,一个一维的标签化数组对象。...,可以将 DataFrame 的列获取为一个 Series,代码示例: frame2['state'] frame2.state 列可以通过赋值的方式进行修改,赋值方式类似 Series。...例如,我们可以给那个空的 “debt” 列赋上一个标量值或一组值(数组或列表形式),代码示例: frame2.debt = np.arange(6.) frame2 注意:将列表或数组赋值给某个列时,...另一种常见的数据形式是嵌套字典,如果嵌套字典传给 DataFrame,pandas 就会被解释为:外层字典的键作为列,内层键则作为行索引,代码示例: #DataFrame另一种常见的数据形式是嵌套字典...与 python 的集合不同,pandas 的 Index 可以包含重复的标签,代码示例: dup_labels = pd.Index(['foo','foo','bar','alice']) dup_labels
使用索引 使用.loc与.iloc 查询数据集 分类和汇总数据 对列进行操作 指定数据类型 数据清洗 数据可视化 一、安装与数据介绍 pandas的安装建议直接安装anaconda,会预置安装好所有数据分析相关的包...因此,我们将暂不使用庞大的NBA数据,从头开始构建一些较小的Pandas对象分析。...我们知道Series对象在几种方面与列表和字典的相似之处。也就意味着我们可以使用索引运算符。现在我们来说明如何使用两种特定于pandas的访问方法:.loc和.iloc。...这些object列中的大多数包含任意文本,但是也有一些数据类型转换的候选对象。...九、数据清洗 数据清洗主要是对空值与无效值或者异常值等数据进行处理。我们以缺失值为例。 处理包含缺失值的记录的最简单方法是忽略它们。
在第一第二课已经讲了notebook的基础使用,python的基础语法及常用的数据结构及其运算,包括: 整型: int 浮点型: float 布尔型: bool 字符串: str 元组: tuple 列表...对于groupby方法返回值的结构,因为其实一个可循环的对象,所以我们可以直接转化为列表,来查看这个对象的结构: list(groups) 在notebook中会显示: [('女',...,使用pandas的plot基本也是够的,如果是一些比较复杂的,那就需要使用Matplotlib包了。...Pandas 适用于处理以下类型的数据: 与 SQL 或 Excel 表类似的,含异构列的表格数据; 有序和无序(非固定频率)的时间序列数据; 带行列标签的矩阵数据,包括同构或异构型数据; 任意其它形式的观测...,二维异构表格 从理解上说,可以将Series理解为Excel中的列,一列就对应一个Series结构的数据,而DataFrame可以理解为对应一个Excel表格,一个表格可以包含多列(Series)。
对象列(object columns)主要用于存储字符串,包含混合数据类型。为了更好地了解怎样减少内存的使用量,让我们看看 Pandas 是如何将数据存储在内存中的。...我们将使用 DataFrame.select_dtypes 来选择整数列,然后优化这些列包含的类型,并比较优化前后内存的使用情况。...内存使用量降低的主要原因是我们对对象类型(object types)进行了优化。 在动手之前,让我们仔细看一下,与数字类型相比,字符串是怎样存在 Pandas 中的。...对象列表中的每一个元素都是一个指针(pointer),它包含了实际值在内存中位置的“地址”。...此外,对象列的内存使用量已经从 752MB 将至 52MB,减少了 93%。现在,我们将其与数据框的其余部分结合起来,再与我们最开始的 861MB 的内存使用量进行对比。
与算术运算一样,与数组进行比较(如==)也是矢量化的。...因此,将names与字符串"Bob"进行比较会产生一个布尔数组: In [104]: names == "Bob" Out[104]: array([ True, False, False, True...重新索引 pandas 对象上的一个重要方法是reindex,它意味着创建一个新对象,其值重新排列以与新索引对齐。...将单个元素或列表传递给[]运算符将选择列。 另一个用例是使用布尔 DataFrame 进行索引,比如通过标量比较生成的 DataFrame。...对象可能会成为新用户的绊脚石,因为它们与内置的 Python 数据结构(如列表和元组)的工作方式不同。
我们可以简单地将 Pandas 对象理解为 Numpy 数组的增强版本,其中行与列可以通过标签进行识别,而不仅是简单的数字索引。Pandas 为这些基本数据结构提供了一系列有用的工具与方法。...字典是一种将任意的键映射到任意的值上的数据结构,而 Series 则是将包含类型信息的键映射到包含类型信息的值上的数据结构。「类型信息」可以为 Series 提供比普通字典更高效的操作。...对象可以看做是二维 Numpy 数组的推广,其行与列都拥有广义的索引以方便进行数据查询。...2.3 Index 对象 在 Series 对象与 DataFrame 对象中,都包含由于查找与修改数据的「索引」(index),其结构为一个 Index 对象。...我们可以将 Index 对象看做一个「不可变数组」或是一个「有序集合」(多重集,因为可能包含重复值)。下面将分别从这两个角度进行介绍。
另见 Pandas Index的官方文档 生成笛卡尔积 每当两个序列或数据帧与另一个序列或数据帧一起操作时,每个对象的索引(行索引和列索引)都首先对齐,然后再开始任何操作。...我们可以将这些列相互比较,通常是而不是情况。 例如,直接将 SAT 口语成绩与大学生人数进行比较是没有意义的。...让我们将此过滤后的数据帧的shape与原始数据进行比较。...再次,将其与步骤 9 中显示的 pandas Timedelta构造器进行比较,该构造器接受这些相同的参数以及字符串和标量数字。...步骤 6 验证每种性别最早雇用的雇员的年份与步骤 4 的输出相匹配。步骤 5 显示了当我们尝试将女性的工资与男性的工资进行比较时,这如何导致不一致。 他们没有相同的 10 年期限。
大多数数据科学家可能会赞扬Pandas进行数据准备的能力,但许多人可能无法利用所有这些能力。...包含值的列将转换为两列:一列用于变量(值列的名称),另一列用于值(变量中包含的数字)。 ? 结果是ID列的值(a,b,c)和值列(B,C)及其对应值的每种组合,以列表格式组织。...“inner”:仅包含元件的键是存在于两个数据帧键(交集)。默认合并。 记住:如果您使用过SQL,则单词“ join”应立即与按列添加相联系。...尽管可以通过将axis参数设置为1来使用concat进行列式联接,但是使用联接 会更容易。 请注意,concat是pandas函数,而不是DataFrame之一。...因此,它接受要连接的DataFrame列表。 如果一个DataFrame的另一列未包含,默认情况下将包含该列,缺失值列为NaN。
是广义的Numpy数组DataFrame是特殊的字典创建DataFrame对象Pandas的Index对象将Index看作不可变数组将Index看作有序集合 安装并使用Pandas import numpy...可以直接用Python字典创建一个Series对象,让Series对象与字典进行类比 population_dict = {'California': 38332521,...的DataFrame对象 Pandas的另一个基础数据结构是DataFrame。...例如,通过’area’ 的列属性可以返回 包含面积数据的Series 对象: # 面积数据 states['area'] California 423967 Texas 695662...) ind Int64Index([2, 3, 5, 7, 11], dtype='int64') 将Index看作不可变数组 Index 对象的许多操作都像数组。
详解:标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。...这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。...(参考:Python 科学计算 – Numpy) Series: Series是一个一维的类似的数组对象,包含一个数组的数据(任何NumPy的数据类型)和一个与数组关联的数据标签,被叫做 索引。...(参考:Series与DataFrame) DataFrame:一个Datarame表示一个表格,类似电子表格的数据结构,包含一个经过排序的列表集,它们每一个都可以有不同的类型值(数字,字符串,布尔等等...(参考:NaN 和None 的详细比较) 3、pandas详解 3.1 简介: pandas是一个Python语言的软件包,在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础编程库
Series Series是一种类似于一维数组的对象,它由一组数据以及一组与之相关的数据标签(索引)组成,创建Series对象的语法如下: #导入Pandas模块中的Series类 from Pandas...对Series对象进行NumPy数组运算,都会保留索引和值之间的连接。 将Series看成是一个定长的有序字典,因为它是一个索引值到数据值的一个映射。 ...它包含一个经过排序的列表集,列表集中的每个数据都可以有不同的类型值(数字、字符串、布尔等)。...在DataFrame对象中使用columns属性获取所有的列,并显示所有列的名称 DataFrame对象的每竖列都是一个Series对象 from pandas import Series, DataFrame...obj.index print(index) # 获取第二位及之后的元素 print(index[1:]) Index类的函数列表见下表: 函数 属性 append 链接另一个Index对象,产生一个新的
我们将说明一些有用的NumPy对象来作为说明pandas的方式。 对于数据分析任务,我们经常需要将不同的数据类型组合在一起。...一个例子是使用频率和计数的字符串对分类数据进行分组,使用int和float作为连续值。此外,我们希望能够附加标签到列、透视数据等。 我们从介绍对象Series和DataFrame开始。...用于检测缺失值的另一种方法是通过对链接属性.isnull().any()使用axis=1参数逐列进行搜索。 ? ? ? ?...NaN被上面的“下”列替换为相邻单元格。下面的单元格将上面创建的DataFrame df2与使用“前向”填充方法创建的数据框架df9进行对比。 ? ?...NaN被上面的“上”列替换为相邻单元格。下面的单元格将上面创建的DataFrame df2与使用“后向”填充方法创建的数据框架df10进行对比。 ? ?
在本节中,我们将探索MultiIndex对象的直接创建,在对多重索引数据执行索引,切片和计算统计数据时的注意事项,以及在数据的简单和分层索引表示之间进行转换的有用例程。...具体而言,我们可能希望,每年为每个州添加另一列人口统计数据(例如,18 岁以下的人口); 使用MultiIndex就像在DataFrame中添加另一列一样简单: pop_df = pd.DataFrame...,包含每个级别的可用索引值)和labels(引用这些标签的列表的列表),直接使用其内部编码构造MultiIndex: pd.MultiIndex(levels=[['a', 'b'], [1, 2]],...和``DataFrame`中与数据进行交互,就像本书中的许多工具一样,熟悉它们的最好方法就是尝试它们!...''' 索引设置和重设 重排分层数据的另一种方法是将索引标签转换为列;这可以通过reset_index方法完成。
20]: c 3 a -5 d 6 dtype: int64 ['c', 'a', 'd']是索引列表,即使它包含的是字符串而不是整数。...另一种用法是通过布尔型DataFrame(比如下面这个由标量比较运算得出的)进行索引: In [134]: data < 5 Out[134]: one two three...表5-4 DataFrame的索引选项 整数索引 处理整数索引的pandas对象常常难住新手,因为它与Python内置的列表和元组的索引语法不同。...后面的频率值是每个列中这些值的相应计数。 5.4 总结 在下一章,我们将讨论用pandas读取(或加载)和写入数据集的工具。...之后,我们将更深入地研究使用pandas进行数据清洗、规整、分析和可视化工具。
领取专属 10元无门槛券
手把手带您无忧上云