它类似于Python中的列表或数组,但提供了更多的功能和灵活性。我们可以使用Series来存储和操作单个列的数据。...DataFrame是pandas中的二维表格数据结构,类似于Excel中的工作表或数据库中的表。它由行和列组成,每列可以有不同的数据类型。...字典的键表示列名,对应的值是列表类型,表示该列的数据。我们可以看到DataFrame具有清晰的表格结构,并且每个列都有相应的标签,方便阅读访问和筛选数据我们可以使用索引、标签或条件来访问和筛选数据。...例如,要访问DataFrame中的一列数据,可以使用列名:# 访问列print(df['Name'])运行结果如下要访问DataFrame中的一行数据,可以使用iloc和loc方法:# 访问行print...= df[df['Age'] > 25]print(filtered_df)运行结果如下添加和删除数据我们可以使用相应的方法向Series或DataFrame中添加或删除数据。
2.1 map() 类似Python内建的map()方法,pandas中的map()方法将函数、字典索引或是一些需要接受单个输入值的特别的对象与对应的单个列的每一个元素建立联系并串行得到结果,譬如这里我们想要得到...(当调用DataFrame.apply()时,apply()在串行过程中实际处理的是每一行数据而不是Series.apply()那样每次处理单个值),注意在处理多个值时要给apply()添加参数axis...中tqdm模块的用法中,我对基于tqdm为程序添加进度条做了介绍,而tqdm对pandas也是有着很好的支持,我们可以使用progress_apply()代替apply(),并在运行progress_apply...三、聚合类方法 有些时候我们需要像SQL里的聚合操作那样将原始数据按照某个或某些离散型的列进行分组再求和、平均数等聚合之后的值,在pandas中分组运算是一件非常优雅的事。...3.1 利用groupby()进行分组 要进行分组运算第一步当然就是分组,在pandas中对数据框进行分组使用到groupby()方法,其主要使用到的参数为by,这个参数用于传入分组依据的变量名称,
2.1 map() 类似Python内建的map()方法,pandas中的map()方法将函数、字典索引或是一些需要接受单个输入值的特别的对象与对应的单个列的每一个元素建立联系并串行得到结果。...但相较于map()针对单列Series进行处理,一条apply()语句可以对单列或多列进行运算,覆盖非常多的使用场景。...譬如这里我们编写一个使用到多列数据的函数用于拼成对于每一行描述性的话,并在apply()用lambda函数传递多个值进编写好的函数中(当调用DataFrame.apply()时,apply()在串行过程中实际处理的是每一行数据...三、聚合类方法 有些时候我们需要像SQL里的聚合操作那样将原始数据按照某个或某些离散型的列进行分组再求和、平均数等聚合之后的值,在pandas中分组运算是一件非常优雅的事。...3.1 利用groupby()进行分组 要进行分组运算第一步当然就是分组,在pandas中对数据框进行分组使用到groupby()方法。
) print(data.shape) 2.1 map() 类似Python内建的map()方法,pandas中的map()方法将函数、字典索引或是一些需要接受单个输入值的特别的对象与对应的单个列的每一个元素建立联系并串行得到结果...但相较于map()针对单列Series进行处理,一条apply()语句可以对单列或多列进行运算,覆盖非常多的使用场景。...譬如这里我们编写一个使用到多列数据的函数用于拼成对于每一行描述性的话,并在apply()用lambda函数传递多个值进编写好的函数中(当调用DataFrame.apply()时,apply()在串行过程中实际处理的是每一行数据...三、聚合类方法 有些时候我们需要像SQL里的聚合操作那样将原始数据按照某个或某些离散型的列进行分组再求和、平均数等聚合之后的值,在pandas中分组运算是一件非常优雅的事。...3.1 利用groupby()进行分组 要进行分组运算第一步当然就是分组,在pandas中对数据框进行分组使用到groupby()方法。
Melt Melt可以被认为是“不可透视的”,因为它将基于矩阵的数据(具有二维)转换为基于列表的数据(列表示值,行表示唯一的数据点),而枢轴则相反。...诸如字符串或数字之类的非列表项不受影响,空列表是NaN值(您可以使用.dropna()清除它们 )。 ? 在DataFrame df中Explode列“ A ” 非常简单: ?...尽管可以通过将axis参数设置为1来使用concat进行列式联接,但是使用联接 会更容易。 请注意,concat是pandas函数,而不是DataFrame之一。...为了防止这种情况,请添加一个附加参数join ='inner',该参数 只会串联两个DataFrame共有的列。 ? 切记:在列表和字符串中,可以串联其他项。...串联是将附加元素附加到现有主体上,而不是添加新信息(就像逐列联接一样)。由于每个索引/行都是一个单独的项目,因此串联将其他项目添加到DataFrame中,这可以看作是行的列表。
可以是一个字符串,也可以是一个字符串列表。 axis:指定删除行还是删除列。默认为0,表示删除行;1表示删除列。 index:要删除的行的标签列表或单个标签。...可以是单个列名的字符串,也可以是列名列表。 drop:指示是否在新索引中保留原有的列。默认为True,表示将原有的列从DataFrame中删除。 append:指示是否将新的索引添加到原有的索引之后。...需要注意的是,insert()方法会改变原始列表,而不是创建一个新的列表。如果希望在不改变原始列表的情况下插入元素,可以使用切片和拼接操作来实现。...最后,我们打印修改后的列表,它包含了添加的元素。 iloc() 在Python中,iloc()函数是Pandas库中的一个用于根据索引位置选取数据的函数。...可以是一个字符串,也可以是一个字符串列表。 axis:指定删除行还是删除列。默认为0,表示删除行;1表示删除列。 index:要删除的行的标签列表或单个标签。
[0].astype(int), level=0) 在正确使用这些工具,我们首先需要了解什么是 levels 和 codes,而pdi允许你使用MultiIndex,就像level是普通的列表或NumPy...你可以同时选择行和列。 你可以学习如何使用slice来代替冒号。...作为一维的,Series在不同情况下可以作为行向量或列向量,但通常被认为是列向量(例如DataFrame的列)。 比如说: 也可以通过名称或位置索引来指定要堆叠/取消堆叠的级别。...,--在纯Pandas中没有直接的对应关系: pdi.insert_level(obj, pos, labels, name)用给定的值添加一个关卡(必要时适当广播),--在纯Pandas中不容易做到...一种方法是将所有不相关的列索引层层叠加到行索引中,进行必要的计算,然后再将它们解叠回来(使用pdi.lock来保持原来的列顺序)。
pandas 入门概念 series 和 dataframe 这是pandas 中最为基本的两个概念,series 类似于一维数组,可以近似当成普通的数组进行操作,对于series 默认会有行索引为它索引...不能接受其他的参数类型,可以添加过滤条件。...['a', 'c'] # 按标签信息,传入行列标签索引信息 获取具体某个数据 df.iat[1, 2] # 按位置信息,传入行列位置信息,获取具体某个数据 # 新版本中pandas中 df 似乎不能使用...需要注意的是,在访问dataframe时,访问df中某一个具体元素时需要先传入行表索引再确定列索引。 2....多行连接 与多列连接的方式仅在于axis 参数指定,axis=0按行操作即多行连接,否则按列连接 # 删除一列,在原有的dataframe上进行操作 del df['日期'] 或是使用 pop 方法
自然毫无悬念 dataframe:无法访问单个元素,只能返回一列、多列或多行:单值或多值(多个列名组成的列表)访问时按列进行查询,单值访问不存在列名歧义时还可直接用属性符号" ....与[ ]访问类似,loc按标签访问时也是执行范围查询,包含两端结果 at/iat,loc和iloc的特殊形式,不支持切片访问,仅可以用单个标签值或单个索引值进行访问,一般返回标量结果,除非标签值存在重复...,可通过axis参数设置是按行删除还是按列删除 替换,replace,非常强大的功能,对series或dataframe中每个元素执行按条件替换操作,还可开启正则表达式功能 2 数值计算 由于pandas...是在numpy的基础上实现的,所以numpy的常用数值计算操作在pandas中也适用: 通函数ufunc,即可以像操作标量一样对series或dataframe中的所有元素执行同一操作,这与numpy...两种数据结构作图,区别仅在于series是绘制单个图形,而dataframe则是绘制一组图形,且在dataframe绘图结果中以列名为标签自动添加legend。
因为列表中的元素是可以重复的,如果 2 个列表能相减,他就要考虑有重复元素与没有重复元素的歧义。...因此,列表是不能相减,但是 Python 中的确有一种东西与列表相似,但他里面的元素不能重复—— set(集) 由此我们可以得到第二种解法: 行4:用 set 函数得到 set 结构,即可相减。...为什么需要在外面再套一个 list 呢?因为下一步我们需要使用 "列表相加" 的骚操作 细心的你可能注意到,出来的结果中,其他列的顺序与解法1不一样!...pandas 中不也有去重功能吗,我们也可以用上。 行4:pd.Series 中传入有重复元素的列表,就能返回一个 Series。使用他的去重方法即可完成 "有问题啊,new_cols 是列表?...为什么 df[一个Series] 也能改变列顺序?" 实际上,df[] 里面可以接受大多数序列,比如 set 或 numpy 的数组等等,唯独元组不行。
当使用列名、行标签或条件表达式时,请在选择括号[]前面使用loc运算符。对于逗号前后的部分,可以使用单个标签、标签列表、标签切片、条件表达式或冒号。使用冒号指定你想选择所有行或列。...记住 在选择数据子集时,使用方括号[]。 在这些括号内,您可以使用单个列/行标签、列/行标签列表、标签切片、条件表达式或冒号。 使用loc选择特定行和/或列时,请使用行和列名称。...当使用列名称、行标签或条件表达式时,请在选择括号[]前使用loc运算符。对于逗号前后的部分,您可以使用单个标签、标签列表、标签切片、条件表达式或冒号。使用冒号指定您要选择所有行或列。...当特别关注表中位置的某些行和/或列时,请在选择括号[]前使用iloc运算符。 在使用loc或iloc选择特定行和/或列时,可以为所选数据分配新值。...记住 在选择数据子集时,使用方括号[]。 在这些括号内,您可以使用单个列/行标签、列/行标签列表、标签切片、条件表达式或冒号。 使用loc选择特定行和/或列时,请使用行和列名称。
fr=aladdin')[1] 按单个条件筛选数据框架 从世界500强列表中选择中公司,我们可以使用.loc[]来实现。注意,这里使用的是方括号而不是括号()。...此数据框架包括原始数据集中的所有列,我们可以将其作为一个独立的表(数据框架)使用,而不需要额外的步骤(例如,如果我们在Excel中进行筛选后,需要将其复制到另一个工作表或删除其他行以使其成为“一个表”)...看看下面的Excel屏幕截图,添加了一个新列,名为“是否中国”,还使用了一个简单的IF公式来评估一行是否“总部所在国家”为中国,该公式返回1或0。实际上,我正在检查每一行的值。...完成公式检查后,我可以筛选”是否中国”列,然后选择值为1的所有行。 图3 Python使用了一种类似的方法,让我们来看看布尔索引到底是什么。 图4 注意上面代码片段的底部——长度:500。...上面的代码行创建了一个列表,该列表的长度与数据框架本身相同,并用True或False填充。这基本上就是我们在Excel中所做的。
如果你 "即时" 添加流媒体数据,则你最好的选择是使用字典或列表,因为 Python 在列表的末尾透明地预分配了空间,所以追加的速度很快。...你不能通过标签访问行,不能通过位置索引访问不相干的行,你甚至不能引用单个单元格,因为df['x', 'y']是为MultiIndex准备的!...DataFrame有两种可供选择的索引模式:loc用于通过标签进行索引,iloc用于通过位置索引进行索引。 在Pandas中,引用多行/列是一种复制,而不是一种视图。...,你必须使用方法而不是运算符,你可以看到如下: 由于这个有问题的决定,每当你需要在DataFrame和类似列的Series之间进行混合操作时,你必须在文档中查找它(或记住它): add, sub,...例如,插入一列总是在原表进行,而插入一行总是会产生一个新的DataFrame,如下图所示: 删除列也需要注意,除了del df['D']能起作用,而del df.D不能起作用(在Python层面的限制
具体来说,数据准备是在处理和分析之前对原始数据进行清洗和转换的过程,通常包括重新格式化数据、更正数据和组合数据集来丰富数据等。 本次数据分析实战系列运用股市金融数据,并对其进行一些列分析处理。...loc类似,但是比loc有更快的访问数据的速度,而且只能访问单个元素,不能访问多个元素。...Matrix 在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合。由 m × n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵。...>>> print("A[0][-1] =", A[0][-1]) # 第1行的最后第1个元素A[0][-1] = 82.63999938964844 取出元素放到列表中 >>> column...、行和列 访问一维矩阵单个元素 # 第一个元素 >>> print("A[0] =", A[0]) A[0] = 82.63999938964844 # 第三个元素 >>> print("A[2]
也可以在创建Series的时候为值直接创建索引。 b、通过字典的形式来创建Series。 (3)获取Series中的值 通过索引的方式选取Series中的单个或一组值。...DataFrame既有行索引也有列索引,其中的数据是以一个或多个二维块存放的,而不是列表、字典或别的一维数据结构。...(2)创建DataFrame: 最常用的一种方法是直接传入一个等长列表或numpy数组组成的字典: 结果DataFrame会自动加上索引(添加方法与Series一样),且全部列会被有序排列。...(3)获取DataFrame的值(行或列) 通过查找columns值获取对应的列。(下面两种方法) 通过索引字段ix查找相应的行。 (4)对列进行赋值处理。 对某一列可以赋一个标量值也可以是一组值。...也可以按columns(行)进行重新索引,对于不存在的列名称,将被填充空值。 对于不存在的索引值带来的缺失值,也可以在重新索引时使用fill_value给缺失值填充指定值。
在Excel中,我们可以看到行、列和单元格,可以使用“=”号或在公式中引用这些值。...在Python中,数据存储在计算机内存中(即,用户不能直接看到),幸运的是pandas库提供了获取值、行和列的简单方法。 先准备一个数据框架,这样我们就有一些要处理的东西了。...df.columns 提供列(标题)名称的列表。 df.shape 显示数据框架的维度,在本例中为4行5列。 图3 使用pandas获取列 有几种方法可以在pandas中获取列。...获取1行 图7 获取多行 我们必须使用索引/切片来获取多行。在pandas中,这类似于如何索引/切片Python列表。...要获取前三行,可以执行以下操作: 图8 使用pandas获取单元格值 要获取单个单元格值,我们需要使用行和列的交集。
agg():自定义聚合函数,可以使用numpy函数或自己定义的函数进行聚合。 这些聚合函数可以应用于单个列或多个列,也可以同时应用于多个列。...使用read_csv导入数据之后,我们添加了一个小费百分比的列tip_pct: 如果希望对不同的列使用不同的聚合函数,或一次应用多个函数,将通过下面的例来进行展示。...其中参数index指定“行”键,columns指定“列”键。 Pandas是一个强大的数据分析工具,而pivot()函数是Pandas中的一个重要函数,用于数据透视操作。...可以是单个列名、多个列名组成的列表或者数组,表示数据透视后的行的唯一标识。 columns:指定数据透视后的列索引。可以是单个列名、多个列名组成的列表或者数组,表示数据透视后的列的唯一标识。...传入margins=True参数(添加小计/总计) ,将会添加标签为ALL的行和列。
这是pandas最基础的开篇知识点使用可迭代对象构造DataFrame,列表的每个元素都是整个DataFrame对应的一行,而这个元素内部迭代出来的每个元素将构成DataFrame的某一列。...然后再看看这个explode函数,它是pandas 0.25版本才出现的函数,只有一个参数可以传入列名,然后该函数就可以把该列的列表每个元素扩展到多行上。...在黄佬的邀请下,一位经过我多次辅导的群友率先使用了循环法解题: ? 我觉得非常棒,但我也希望看到有人再用变形法实现一次。林胖和一位群友再次给出了简化版本的循环解法: ?...---- 列表的extend方法是将可迭代对象的每个元素都添加到列表中,而append方法只能添加单个元素。...列表分列的2种方法 列表分列的思路:Pandas的Series对象调用apply方法单个元素返回的结果是Series时,这个Series的每个数据会作为Datafrem的每一列,索引会作为列名。
通过将isna与sum函数一起使用,我们可以看到每列中缺失值的数量。 df.isna().sum() ? 6.使用loc和iloc添加缺失值 我正在做这个例子来练习loc和iloc。...我们可以使用特定值,聚合函数(例如均值)或上一个或下一个值。 对于Geography列,我将使用最常见的值。 ?...method参数指定如何处理具有相同值的行。first表示根据它们在数组(即列)中的顺序对其进行排名。 21.列中唯一值的数量 使用分类变量时,它很方便。我们可能需要检查唯一类别的数量。...在计算元素的时间序列或顺序数组中的变化百分比时很有用。 ? 从第一元素(4)到第二元素(5)的变化为%25,因此第二个值为0.25。...29.根据字符串过滤 我们可能需要根据文本数据(例如客户名称)过滤观察结果(行)。我已经将虚构名称添加到df_new DataFrame中。 ? 让我们选择客户名称以Mi开头的行。
当列表具有与行和列标签相同数量的元素时,此分配有效。 以下代码在每个索引对象上使用tolist方法来创建 Python 标签列表。...步骤 4 使用大于或等于比较运算符返回布尔序列,然后在步骤 5 中使用all方法对其进行求值,以检查每个单个值是否为True。 drop方法接受要删除的行或列的名称。 默认情况下是按索引名称删除行。...在此示例中,每年仅返回一行。 正如我们在最后一步中按年份和得分排序一样,我们获得的年度最高评分电影。 更多 可以按升序对一列进行排序,而同时按降序对另一列进行排序。...序列的索引运算符的一种可接受的用例是在进行布尔索引时。 有关更多详细信息,请参见第 6 章“索引对齐”。 我在本节中将这种行切片称为惰性,因为它不使用更明确的.iloc或.loc。...就个人而言,我总是在对行进行切片时使用这些索引器,因为从来没有确切地知道我在做什么。 更多 重要的是要知道,这种延迟切片不适用于列,仅适用于数据帧的行和序列,也不能同时选择行和列。
领取专属 10元无门槛券
手把手带您无忧上云