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

Python科学计算之Pandas

所以,如果我们取出了某一列,我们获得的自然是一个series。 还记得我所说的命名列标签的注意事项吗?不使用空格和横线等可以让我们以访问类属性相同的方法来访问列,即使用点运算符。 ?...iloc仅仅作用于数字索引。它将会返回该行的一个series。在返回的series中,这一行的每一列都是一个独立的元素。...我们可以在Pandas中通过调用sort_index来对dataframe实现排序。 ? 由于我的所以已经是有序的了,所以为了演示,我设置了关键字参数’ascending’为False。...这将返回数据原始的索引形式。 ? 对数据集应用函数 有时候你会想以某些方式改变或是操作你数据集中的数据。例如,如果你有一列年份的数据而你希望创建一个新的列显示这些年份所对应的年代。...首先,它设置了一个新的索引(set_index()),然后它对这个索引排序(sort_index()),最后它会进行unstack操作。组合起来就是一个pivot操作。

2.9K00

小蛇学python(8)pandas库之DataFrame

比如当我们得到一大堆已经存储在数据库中数据,我们想对它进行索引。当我们不想使用默认的数字来当作索引时(比如上课老师点名,你觉得是点学号好,还是点姓名好呢?),我们可以通过转置来改变索引。...3.png 我们可以看到,在是否有女朋友那一栏全部自动生成了NaN, 表示这一列数据为空。这里我们也可以得到启发,就是表格的index(索引)也是可以改变的,不一定就非要是数字。比如。...6.png 这是因为我的行索引为数字,而列索引是字符串导致的。这时候如果想达到要求效果就应该用loc。 frame.loc[3:4, '是否有女朋友'] = '有' ?...可是在NumPy、Pandas中就分别赋予了数组与表格对整数和一位数组的运算。如果需要更加形象的来表述何为广播。我觉得应该说,它赋予了数据形式可以与比其低一个维度的数据形式运算的能力。...10.png 数组里每个元素都比原来少了1,这个功能的出现使得python更加灵活。其实我对它的最大感悟就是,它使得我在for循环时解决索引溢出问题方便多了。 表格也可以进行广播操作。

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

    Pandas图鉴(三):DataFrames

    把这些列当作独立变量来操作,例如,df.population /= 10**6,人口以百万为单位存储,下面的命令创建了一个新的列,称为 "density",由现有列中的值计算得出: 此外,你甚至可以对来自不同...你不能通过标签访问行,不能通过位置索引访问不相干的行,你甚至不能引用单个单元格,因为df['x', 'y']是为MultiIndex准备的!...1:1的关系joins 这时,关于同一组对象的信息被存储在几个不同的DataFrame中,而你想把它合并到一个DataFrame中。 如果你想合并的列不在索引中,可以使用merge。...例如,插入一列总是在原表进行,而插入一行总是会产生一个新的DataFrame,如下图所示: 删除列也需要注意,除了del df['D']能起作用,而del df.D不能起作用(在Python层面的限制...比如说: 一个解决方案是使用ignore_index=True,它告诉concat在连接后重置行名: 在这种情况下,可以将名字列设置为索引。但是对于更复杂的过滤器来说,这就没有什么用了。

    44420

    快速解释如何使用pandas的inplace参数

    介绍 在操作dataframe时,初学者有时甚至是更高级的数据科学家会对如何在pandas中使用inplace参数感到困惑。 更有趣的是,我看到的解释这个概念的文章或教程并不多。...它似乎被假定为知识或自我解释的概念。不幸的是,这对每个人来说都不是那么简单,因此本文试图解释什么是inplace参数以及如何正确使用它。...我没有记住所有这些函数,但是作为参数的几乎所有pandas DataFrame函数都将以类似的方式运行。这意味着在处理它们时,您将能够应用本文将介绍的相同逻辑。...它直接改变原始数据框架,因此,如果需要改变原始数据,那么inplace=True是首选。 那么,为什么会有在使用inplace=True产生错误呢?...常见错误 使用inplace = True处理一个片段 如果我们只是想去掉第二个name和age列中的NaN,而保留number of children列不变,我们该怎么办?

    2.4K20

    最全面的Pandas的教程!没有之一!

    我喜欢 Pandas 的原因之一,是因为它很酷,它能很好地处理来自一大堆各种不同来源的数据,比如 Excel 表格、CSV 文件、SQL 数据库,甚至还能处理存储在网页上的数据。...增加数据列有两种办法:可以从头开始定义一个 pd.Series,再把它放到表中,也可以利用现有的列来产生需要的新列。比如下面两种操作: 定义一个 Series ,并放入 'Year' 列中: ?...这个方法将把目标 DataFrame 的索引保存在一个叫 index 的列中,而把表格的索引变成默认的从零开始的数字,也就是 [0, ..., len(data) - 1] 。比如下面这样: ?...我喜欢 Pandas 的原因之一,是因为它很酷,它能很好地处理来自一大堆各种不同来源的数据,比如 Excel 表格、CSV 文件、SQL 数据库,甚至还能处理存储在网页上的数据。...数据透视表 在使用 Excel 的时候,你或许已经试过数据透视表的功能了。数据透视表是一种汇总统计表,它展现了原表格中数据的汇总统计结果。

    26K64

    从零开始,教初学者如何征战Kaggle竞赛

    我们之后将频繁使用 read_csv,因此建议先浏览它的文档(这是一个好习惯)。加载数据并查看 DataFrame,可以发现数据集中的第一列是 Id,代表数据集中该行的索引,而不是真实观察值。...因此,我修改了代码,加上 index_col=『Id』作为参数,从而在加载数据到 DataFrame 的时候,确保 Pandas 将其作为索引而不是列,并在它之前添加一个新的索引列。...大多数的数字和字符串都没有什么意义,其中 Alley 列甚至全都是『NaN』,即值的丢失。别担心,我们之后会处理这个问题。下一步是考虑需要使用的模型。...) 说明 在将训练集和测试集分别加载进 DataFrame 之后,我保存了目标变量,并在 DataFrame 中删除它(因为我只想保留 DataFrame 中的独立变量和特征)。...随后,我在训练集和测试集中添加了一个新的临时列('training_set'),以便我们可以将它们连接在一起(将它们放在同一个 DataFrame 中),然后再将它们分开。

    88560

    Java到底是不是一种纯面向对象语言?

    Java——是否确实的 “纯面向对象”?让我们深入到Java的世界,试图来证实它。...所有基本类型(char,boolean,byte,short,int,long,float,double)都不是对象,因为我们不能做类似正常对象的所具有的操作(例如:使用“.”来访问对象的属性和方法)。...到了更后来,在我的一次JVM学习过程中,我有了新的发现: JVM 在创建对象的时候,实际上会创建两个对象: 一个是实例对象。 另一个是Class 对象。...这也揭开了另一个迷:为什么静态内容在一个对象中(不管是emp还是emp2)改变了,在另一个对象中也同时改变,因为这两个对象改变的都是在 Employee.class 同一个对象里面的内容。...所以总结一下是: 在JVM内部,原始类型就是被当作对象来处理的。但是我们开发者直接把 “原始类型” 当作对象使用,开发者应该使用对应的包装来。

    40810

    高逼格使用Pandas加速代码,向for循环说拜拜!

    前言 使用Pandas dataframe执行数千甚至数百万次计算仍然是一项挑战。你不能简单的将数据丢进去,编写Python for循环,然后希望在合理的时间内处理数据。...Pandas是为一次性处理整个行或列的矢量化操作而设计的,循环遍历每个单元格、行或列并不是它的设计用途。所以,在使用Pandas时,你应该考虑高度可并行化的矩阵运算。...这将为我们提供一个基准,以了解我们的新优化对我们有多大帮助。 ? 在上面的代码中,我们创建了一个基本函数,它使用If-Else语句根据花瓣的长度选择花的类。...更准确地说,.iterrows() 为DataFrame中的每一行生成(index, Series)的对(元组)。...Python中的range()函数也做同样的事情,它在内存中构建列表 代码的第(2)节演示了使用Python生成器对数字列表求和。生成器将创建元素并仅在需要时将它们存储在内存中。一次一个。

    5.5K21

    Java到底是不是一种纯面向对象语言?

    Java——是否确实的 “纯面向对象”?让我们深入到Java的世界,试图来证实它。...所有基本类型(char,boolean,byte,short,int,long,float,double)都不是对象,因为我们不能做类似正常对象的所具有的操作(例如:使用“.”来访问对象的属性和方法)。...到了更后来,在我的一次JVM学习过程中,我有了新的发现: JVM 在创建对象的时候,实际上会创建两个对象: 一个是实例对象。 另一个是Class 对象。...这也揭开了另一个迷:为什么静态内容在一个对象中(不管是emp还是emp2)改变了,在另一个对象中也同时改变,因为这两个对象改变的都是在 Employee.class 同一个对象里面的内容。...所以总结一下是: 在JVM内部,原始类型就是被当作对象来处理的。但是我们开发者直接把 “原始类型” 当作对象使用,开发者应该使用对应的包装来。

    891110

    干货:可视化项目实战经验分享,轻松玩转Bokeh(建议收藏)

    实际数据本身保存在可通过 CDS 的 data 属性访问的字典中。 在这里,我们从 dataframe 创建源代码,并查看数据字典中与 dataframe 列对应的键。...格式化提示工具中显示的数据可能令人沮丧,因此我通常在 dataframe 中使用正确的格式创建另一列。...例如,如果我希望我的提示工具显示给定栏的整个间隔,我在 dataframe 中创建一个格式化的列: # Add a column showing the extent of each interval...我不太确定为什么需要它,但是它有效。 在 Python 库和脚本导入之后,我们在Python __file__ 属性的帮助下读取必要的数据。...这样,你就不会发现自己迷失在试图查找错误的代码的泥潭中。 此外,一旦我们开发出一个有效的框架,它可以用最少的努力重复使用。 找到一个允许您快速迭代思路的调试工具至关重要。

    2.9K20

    从零开始,教初学者如何征战全球最大机器学习竞赛社区Kaggle竞赛

    我们之后将频繁使用 read_csv,因此建议先浏览它的文档(这是一个好习惯)。加载数据并查看 DataFrame,可以发现数据集中的第一列是 Id,代表数据集中该行的索引,而不是真实观察值。...因此,我修改了代码,加上 index_col=『Id』作为参数,从而在加载数据到 DataFrame 的时候,确保 Pandas 将其作为索引而不是列,并在它之前添加一个新的索引列。...大多数的数字和字符串都没有什么意义,其中 Alley 列甚至全都是『NaN』,即值的丢失。别担心,我们之后会处理这个问题。下一步是考虑需要使用的模型。...说明 在将训练集和测试集分别加载进 DataFrame 之后,我保存了目标变量,并在 DataFrame 中删除它(因为我只想保留 DataFrame 中的独立变量和特征)。...随后,我在训练集和测试集中添加了一个新的临时列('training_set'),以便我们可以将它们连接在一起(将它们放在同一个 DataFrame 中),然后再将它们分开。

    860100

    干货推荐 | 掌握这几点,轻松玩转 Bokeh 可视化 (项目实战经验分享)

    实际数据本身保存在可通过 CDS 的 data 属性访问的字典中。 在这里,我们从 dataframe 创建源代码,并查看数据字典中与 dataframe 列对应的键。...格式化提示工具中显示的数据可能令人沮丧,因此我通常在 dataframe 中使用正确的格式创建另一列。...例如,如果我希望我的提示工具显示给定栏的整个间隔,我在 dataframe 中创建一个格式化的列: # Add a column showing the extent of each intervaldelays...它加载数据,将其传递给其他脚本,返回结果图,并将它们组织到一个显示中。 这将是我完整展示的唯一脚本,因为它对应用程序尤其重要。...我不太确定为什么需要它,但是它有效。 在 Python 库和脚本导入之后,我们在Python __file__ 属性的帮助下读取必要的数据。

    2.3K40

    Pandas图鉴(二):Series 和 Index

    在内部,Series将数值存储在一个普通的NumPy向量中。因此,它继承了它的优点(紧凑的内存布局,快速的随机访问)和缺点(类型同质性,缓慢的删除和插入)。...在此基础上,可以通过标签访问Series的值,使用一个叫做index的类似数字的结构。标签可以是任何类型的(通常是字符串和时间戳)。...在Pandas中,它被称为MultiIndex(第4部分),索引内的每一列都被称为level。 索引的另一个重要特性是它是不可改变的。与DataFrame中的普通列相比,你不能就地修改它。...索引中的任何变化都涉及到从旧的索引中获取数据,改变它,并将新的数据作为一个新的索引重新连接起来。...一旦在索引中包含了列,就不能再使用方便的df.column_name符号了,而必须恢复到不太容易阅读的df.index或者更通用的df.loc[]。有了MultiIndex。

    33720

    Python进阶之Pandas入门(三) 最重要的数据流操作

    .head()默认输出DataFrame的前五行,但是我们也可以传递一个数字:例如,movies_df.head(10)将输出前十行。 要查看最后五行,请使用.tail()。....您将注意到,DataFrame中的索引是Title列,您可以通过单词Title比其他列稍微低一些的方式看出这一点。...,比如行和列的数量、非空值的数量、每个列中的数据类型以及DataFrame使用了多少内存。...请注意,在我们的movies数据集中,Revenue和Metascore列中有一些明显的缺失值。我们将在下一讲中处理这个问题。 快速查看数据类型实际上非常有用。...我们的movies DataFrame中有1000行和11列。 在清理和转换数据时,您将需要经常使用.shape。例如,您可能会根据一些条件过滤一些行,然后想要快速知道删除了多少行。

    2.7K20

    Java编程思想核心笔记

    : 编译器自动将包装器类型转换为基本类型 char c = ch; 高精度数字: 没有对应的基本类型 BigInteger: 支持任意精度的整数 BigDecimal: 支持任意精度的浮点数 基本数据类型初始化的时候..., 传递的是值) 第三章 操作符 在最底层, Java 中的数据是通过使用操作符来操作的 第四章 控制执行流程 就像有知觉的生物一样, 程序必须在执行过程中控制它的世界, 并作出选择....对于局部变脸, 编译器以报错的方式保证被初始化后才能使用 第六章 访问控制权限 访问控制 (或隐藏具体实现) 与 “最初的实现并不恰当” 有关 四种访问权限控制: public、protected、包访问权限...HashSet 出于速度原因的考虑, 使用了散列函数; TreeSet 将元素存储在红黑树数据结构中; LinkedHashList 因为查询速度的原因, 也使用了散列函数, 使用链表维护插入顺序 第十二章...通过异常处理错误 Java 的基本理念是 “结构不佳的代码不能运行” 发现异常最理想的时机是在编译阶段, 也就是在你试图运行之前.

    56820

    掌握这几点,轻松玩转 Bokeh 可视化 (项目实战经验分享)

    实际数据本身保存在可通过 CDS 的 data 属性访问的字典中。 在这里,我们从 dataframe 创建源代码,并查看数据字典中与 dataframe 列对应的键。...格式化提示工具中显示的数据可能令人沮丧,因此我通常在 dataframe 中使用正确的格式创建另一列。...例如,如果我希望我的提示工具显示给定栏的整个间隔,我在 dataframe 中创建一个格式化的列: # Add a column showing the extent of each interval...它加载数据,将其传递给其他脚本,返回结果图,并将它们组织到一个显示中。 这将是我完整展示的唯一脚本,因为它对应用程序尤其重要。...我不太确定为什么需要它,但是它有效。 在 Python 库和脚本导入之后,我们在Python __file__ 属性的帮助下读取必要的数据。

    2.2K30

    你可能不知道的pandas的5个基本技巧

    between 函数 多年来我一直在SQL中使用“between”函数,但直到最近才在pandas中发现它。 假设我们有一个带有价格的DataFrame,我们想要过滤2到4之间的价格。...函数集合都是有等号的:左<=series<=右 用reindex函数修正行顺序 重索引函数为一个序列或一个数据文件生成一个新索引。在生成具有预定义顺序的列的报告时,我使用reindex函数。...在上表中,大小的顺序是随机的。应该订小杯、中杯、大杯。由于大小是字符串,我们不能使用sort_values函数。...有更好的方法吗? pandas字符串列有一个“str”访问器,它实现了许多简化字符串操作的函数。其中之一是“contains”函数,它支持使用正则表达式进行搜索。...大内存数据集 pandas甚至不能读取比主内存数据集更大的数据。它抛出MemoryError或内核崩溃。但是要处理一个大数据集,你不需要Dask或Vaex这样的包,只需要一些小技巧。

    1.1K40

    Java常见的几大代码

    这就意味着你要传递一个对象到一个函数,你就要传递这个对象的引用,而不能去复制它。任何对这个对象的成员变量的改变都会持久化,这种改变的好坏要取决于你是否是刻意而为之。...有一点要注意,如果字符串没有包含任何方法改变它的值的时候,你最好将它作为值来传递。 5、写一个空的异常处理 我知道一个空的异常处理就像忽略错误一样很诱人。...但是如果真的发生了错误,你不会得到一个错误信息的输出,它使得不太可能发现错误的原因。甚至是最简单的一场处理都是很有用处的。...同时使用同步存取方法。存取方法允许访问似有的成员变量,但是仅仅是在一种控制方式中。下面的存取方法就能够以安全的方式修改计数器的值。...他是很简单的,但是有时我们看着一个没有大写的变量或者方法却并不能发现这个错误。我自己也常常感到困惑,因为我认为这些方法和变量都是存在的,但是却发现不了他们没有大写。

    41830

    写给小白的开源编译器

    因为汇编语言仍然非常低级,对于追求高效的程序员来说是无法忍受的,所以又出现了更高级的语言,这也是大部分程序员使用且熟悉的编程语言,这些抽象的编程语言虽然不能直接转化成机器操作,但是它比汇编语言更好理解且更能够被高效的使用...标记是一个数组,它描述了一个独立的语法片段。这些片段可以是数字、标签、标点符号、运算符等等。...LETTERS.test(char)) { let value = ''; // 同样,我们遍历所有,并将它们完整的存到`value`变量中 while (LETTERS.test(char...由于我们的目标是一种新的语言,所以我们将要专注于创造一个完全新的 AST 来配合这个特定的语言。 为了能够访问所有这些节点,我们需要遍历它们,使用的是深度遍历的方法。...但是仅仅访问树中的每个节点对于我们来说想做和能做的事情已经很多了。 (使用访问(visiting)这个词是因为这是一种模式,代表在对象结构内对元素进行操作。)

    68110

    c++基础之变量和基本类型

    这里要提一句,在mac 的shell中,g++和gcc默认使用的是4.8的版本,许多新的c++标准并不被支持,需要下载最新的编译器并使用替换环境中使用的默认编译器,使其更新到最新版本 gcc / g++...但是实际使用是只能选有符号或者无符号的。根据编译器不同,char的表现不同。...&rp = pi; //定义一个引用,它指向一个指针 int& *pr = &ri; //试图定义一个指向引用的指针,错误 对于这种在变量定义中既有指针又有引用的情况下,想要知道它到底是指针还是引用,可以从右至左理解...,它的值不能被改变。...则会返回变量的完整类型,包括顶层const c++ 中的引用一般会被当作变量的同义词使用,使用引用的表达式可以自动替换成使用该变量,但是在decltype中例外,引用得到的也是引用类型 在使用decltype

    1.6K30
    领券