Pandas提供了强大的数据操作和分析功能,是数据科学的日常基本工具。在本文中,我们将介绍最常用的15个Pandas代码片段。这些片段将帮助简化数据分析任务,从数据集中提取有价值的见解。...1、过滤数据 Pandas提供了多种方法来过滤数据。...id_vars:需要保留的列,它们将成为长格式中的标识变量(identifier variable),不被"融化"。 value_vars:需要"融化"的列,它们将被整合成一列,并用新的列名表示。...var_name:用于存储"融化"后的列名的新列的名称。 value_name:用于存储"融化"后的值的新列的名称。...将数据列转换为分类类型有助于节省内存和提高性能,特别是当数据列中包含有限的不同取值时。
一、Pandas 数据分析DataFrames 1.DataFrames原理分析 Pandas的主要数据结构是DataFrame。它将一个二维数组与它的行和列的标签捆绑在一起。...4.DataFrames的基本操作 DataFrame最好的地方(在我看来)是你可以: 轻松访问其列,如d.area返回列值(或者df[’ Area ']——适用于包含空格的列名) 将列作为自变量进行操作...更多信息见下图: 注意,创建新列时,即使列名中不包含空格,也必须使用方括号。...为了满足这些需求,dataframes,就像series一样,有两种可选的索引模式:按标签索引的loc和按位置索引的iloc。 在Pandas中,引用多行/多列是一个副本,而不是视图。...就像1:1关系一样,在Pandas中连接一对1:n相关的表,你有两种选择。如果要合并的列或者不在索引中,并且可以丢弃碰巧在两张表的索引中都存在的列,则使用merge。
当我们必须处理可能有多个列和行的大型DataFrames时,能够以可读格式显示数据是很重要的。这在调试代码时非常有用。...在今天的文章中,我们将探讨如何配置所需的pandas选项,这些选项将使我们能够“漂亮地打印” pandas DataFrames。...仅显示一部分列(缺少第4列和第5列),而其余列以多行方式打印。 ? 尽管输出仍可读取,但绝对不建议保留列或将其打印在多行中。...则输出将在多个“页面”中回绕。...另外,您可以更改display.max_rows的值,而不是将expand_frame_repr设置为False: pd.set_option(‘display.max_rows’, False) 如果列仍打印在多页中
SQL VS Pandas SELECT(数据选择) 在SQL中,选择是使用逗号分隔的列列表(或*来选择所有列): ? 在Pandas中,选择不但可根据列名称选取,还可以根据列所在的位置选取。...WHERE(数据过滤) 在SQL中,过滤是通过WHERE子句完成的: ? 在pandas中,Dataframe可以通过多种方式进行过滤,最直观的是使用布尔索引: ?...宝器带你画重点: subset,为选定的列做数据去重,默认为所有列; keep,可选择{'first', 'last', False},保留重复元素中的第一个、最后一个,或全部删除; inplace ,...这是因为count()将函数应用于每个列,返回每个列中的非空记录的数量。具体如下: ? 还可以同时应用多个函数。例如,假设我们想要查看每个星期中每天的小费金额有什么不同。 SQL: ?...默认情况下,join()将联接其索引上的DataFrames。 每个方法都有参数,允许指定要执行的连接类型(LEFT, RIGHT, INNER, FULL)或要连接的列(列名或索引) ?
04 实战练习 这次我们拿大名鼎鼎的泰坦尼克数据集来做练习,一起看一下用这款神器如何分析,还是用上面的几行示例代码来启动PandaGui: 在首页中我们可以看到数据的大小维数(第一个红框)891*12...下面以直方图和词云为例子向大家进行展示: 上图绘制了年龄大于30的船上游客的年龄直方图,可以看到Filter工具在画图时仍可以同时使用。 上图以名字为例子,绘制了船上人员名字的词云图。...它包含了DataFrames的基本属性,实际上代表了DataFrames的两个方法,df.melt(),df.pivot(),以图像化的形式进行了展现。...这里以pivot进行展示:pivot()参数:values:对应的二维NumPy值数组。columns:列索引:列名称。index:行的索引:行号或行名。...aggfun: 使用方法 上图中以Sex为行索引,Age为列索引,Fare系统值,操作后的表格展示为: 在上图中,我们可以看到,在最左边增加了df_pivot的DataFrames数据,每操作一次,会增加一个
使用DataFrame的基本操作 关于DataFrame最好的事情是你可以: 很容易访问它的列,例如,df.area返回列值(或者,df['area']-适合包含空格的列名)。...DataFrame有两种可供选择的索引模式:loc用于通过标签进行索引,iloc用于通过位置索引进行索引。 在Pandas中,引用多行/列是一种复制,而不是一种视图。...如果该列已经在索引中,你可以使用join(这只是merge的一个别名,left_index或right_index设置为True,默认值不同)。...与普通模式相比,这种模式有些限制: 它没有提供一个解决重复列的方法; 它只适用于1:1的关系(索引到索引的连接)。 因此,多个1:n的关系应该被逐一连接。'...比如说: 一个解决方案是使用ignore_index=True,它告诉concat在连接后重置行名: 在这种情况下,可以将名字列设置为索引。但是对于更复杂的过滤器来说,这就没有什么用了。
在需要管理多个DataFrames时你会需要用更有意义的名字来代表它们,但在数据科学领域里只要看到df,每个人都会预期它是一个Data Frame,不论是Python或是R语言的使用者。...很多时候你也会需要改变DataFrame 里的列名称: ? 这里也很直观,就是给一个将旧列名对应到新列名的Python dict。...值得注意的是参数axis=1:在pandas里大部分函数预设处理的轴为行(row),以axis=0表示;而将axis设置为1则代表你想以列(column)为单位套用该函数。...前面说过很多pandas函数预设的axis参数为0,代表着以行(row)为单位做特定的操作,在pd.concat的例子中则是将2个同样格式的DataFrames依照axis=0串接起来。...完整显示所有列 有时候一个DataFrame 里头的栏位太多, pandas 会自动省略某些中间栏位以保持页面整洁: ?
大多数情况下,会使用NumPy或Pandas来导入数据,因此在开始之前,先执行: import numpy as np import pandas as pd 两种获取help的方法 很多时候对一些函数方法不是很了解...Flat 文件是一种包含没有相对关系结构的记录的文件。(支持Excel、CSV和Tab分割符文件 ) 具有一种数据类型的文件 用于分隔值的字符串跳过前两行。 在第一列和第三列读取结果数组的类型。...comment='#', # 分隔注释的字符 na_values=[""]) # 可以识别为NA/NaN的字符串 二、Excel 电子表格 Pandas中的...ExcelFile()是pandas中对excel表格文件进行读取相关操作非常方便快捷的类,尤其是在对含有多个sheet的excel文件进行操控时非常方便。...索引 df.columns # 返回DataFrames列名 df.info() # 返回DataFrames基本信息 data_array = data.values # 将DataFrames转换为
DataFrame Pandas 中的 DataFrame 类似于 Excel 工作表。虽然 Excel 工作簿可以包含多个工作表,但 Pandas DataFrames 独立存在。 3....在 Pandas 中,索引可以设置为一个(或多个)唯一值,这就像在工作表中有一列用作行标识符一样。与大多数电子表格不同,这些索引值实际上可用于引用行。...过滤 在 Excel 中,过滤是通过图形菜单完成的。 可以通过多种方式过滤数据框,其中最直观的是使用布尔索引。...在 Pandas 中,您通常希望在使用日期进行计算时将日期保留为日期时间对象。输出部分日期(例如年份)是通过电子表格中的日期函数和 Pandas 中的日期时间属性完成的。...填充柄 在一组特定的单元格中按照设定的模式创建一系列数字。在电子表格中,这将在输入第一个数字后通过 shift+drag 或通过输入前两个或三个值然后拖动来完成。
pandas为 Python开发者提供高性能、易用的数据结构和数据分析工具。该包基于NumPy(发音‘numb pie’)中,一个基本的科学计算包,提供ndarray,一个用于数组运算的高性能对象。...可以认为Series是一个索引、一维数组、类似一列值。可以认为DataFrames是包含行和列的二维数组索引。好比Excel单元格按行和列位置寻址。...下表比较在SAS中发现的pandas组件。 ? 第6章,理解索引中详细地介绍DataFrame和Series索引。...df.columns返回DataFrame中的列名称序列。 ? 虽然这给出了期望的结果,但是有更好的方法。...显然,这会丢弃大量的“好”数据。thresh参数允许您指定要为行或列保留的最小非空值。在这种情况下,行"d"被删除,因为它只包含3个非空值。 ? ? 可以插入或替换缺失值,而不是删除行和列。.
错误3:让Pandas消耗内存来猜测数据类型 当你把数据导入到 DataFrame 中,没有特别告诉 Pandas 列和数据类型时,Pandas 会把整个数据集读到内存中,只是为了弄清数据类型而已。...例如,如果你有一列全是文本的数据,Pandas 会读取每一个值,看到它们都是字符串,并将该列的数据类型设置为 "string"。然后它对你的所有其他列重复这个过程。...除非你在折腾很小的数据集,或者你的列是不断变化的,否则你应该总是指定数据类型。 每次指定数据类型是一个好习惯。 为了做到这一点,只需添加 dtypes 参数和一个包含列名及其数据类型的字符串的字典。...在一行中把多个 DataFrame 修改链在一起(只要不使你的代码不可读):df = df.apply(something).dropna() 正如国外大牛 Roberto Bruno Martins...Matplotlib 是由 Pandas 自动导入的,它甚至会在每个 DataFrame 上为你设置一些图表配置。既然已经为你在 Pandas 中内置了它,那就没有必要再为每张图表导入和配置了。
有很多种实现的途径,我最喜欢的方式是传一个字典给DataFrame constructor,其中字典中的keys为列名,values为列的取值。 ?...更改列名 让我们来看一下刚才我们创建的示例DataFrame: ? 我更喜欢在选取pandas列的时候使用点(.),但是这对那么列名中含有空格的列不会生效。让我们来修复这个问题。...按行从多个文件中构建DataFrame 假设你的数据集分化为多个文件,但是你需要将这些数据集读到一个DataFrame中。 举例来说,我有一些关于股票的小数聚集,每个数据集为单天的CSV文件。...比如我们想要对该DataFrame进行过滤,我们只想显示genre为Action或者Drama或者Western的电影,我们可以使用多个条件,以"or"符号分隔: ?...如果你想要进行相反的过滤,也就是你将吧刚才的三种类型的电影排除掉,那么你可以在过滤条件前加上破浪号: ? 这种方法能够起作用是因为在Python中,波浪号表示“not”操作。 14.
最简单的melt 最简单的melt()不需要任何参数,它将所有列变成行(显示为列变量)并在新列值中列出所有关联值。...df_wide.melt( id_vars='Country', ) 现在行数为 15,因为 Country 列中的每个值都有 5 个值(3 X 5 = 15)。...ID Melt() 最有用的特性之一是我们可以指定多个 id 以将它们保留为列。...有两个问题: 确认、死亡和恢复保存在不同的 CSV 文件中。将它们绘制在一张图中并不简单。 日期显示为列名,它们很难执行逐日计算,例如计算每日新病例、新死亡人数和新康复人数。...: 请注意,列都是从第 4 列开始的日期,并获取确认的日期列表 df.columns [4:] 在合并之前,我们需要使用melt() 将DataFrames 从当前的宽格式逆透视为长格式。
1.Select数据查询 在SQL中,选择是使用您要选择的列(用逗号分隔)或(*选择所有列)来完成的。...SELECT '总费用', '小费', '是否吸烟', '吃饭时间' FROM df LIMIT 5; 对于pandas,通过将列名列表传递给DataFrame来完成列选择。...注意:调用不带列名列表的DataFrame将显示所有列(类似于SQL的 *)。...在SQL中,您可以添加一个计算列: SELECT *, "小费"/"总费用" as "小费占比" FROM df LIMIT 5; 对于pandas,可以使用DataFrame.assign()的方法追加新列...注意,在pandas代码中我们使用了size()而不是count()。这是因为count()将函数应用于每一列,并返回每一列中的记录数。
DataFrame的概念来自R/Pandas语言,不过R/Pandas只是runs on One Machine,DataFrame是分布式的,接口简单易用。...Threshold: Spark RDD API VS MapReduce API One Machine:R/Pandas 官网的说明 http://spark.apache.org/docs/2.1.0.../sql-programming-guide.html#datasets-and-dataframes 拔粹如下: A Dataset is a distributed collection of data...(RDD with Schema) 以列(列名、列的类型、列值)的形式构成的分布式数据集,按照列赋予不同的名称 An abstraction for selecting,filtering,aggregation...peopleDF.select(peopleDF.col("name"), (peopleDF.col("age") + 10).as("age2")).show(); //根据某一列的值进行过滤
人工智能之数据分析 Pandas第二章 Series前言Pandas 的 Series 是其最基础、最核心的一维数据结构,是学习 Pandas 的起点。...Series 是一个带标签索引的一维数组,由两部分组成:values(值):实际存储的数据,底层为 NumPy 数组(ndarray),支持整数、浮点、字符串、布尔值等任意类型,也可包含缺失值 NaN。...→ data# 若指定 index 中有字典未包含的键,则对应值为 NaNs5 = pd.Series(data_dict, index=['数学', '物理']) # 输出:数学 90.0,物理...= NaN,不能用 == 判断,应使用 isnull() 或 pd.isna()含 NaN 的 Series,dtype 通常为 float64索引可重复,但慎用重复索引会导致 s['key'] 返回多个值...;是构建 DataFrame 的基本单元(DataFrame 的每一列就是一个 Series);掌握 Series,就掌握了 Pandas 数据操作的核心逻辑。
背景介绍 DataFrames和Series是用于数据存储的pandas中的两个主要对象类型:DataFrame就像一个表,表的每一列都称为Series。您通常会选择一个系列来分析或操纵它。...今天我们将学习如何重命名Pandas DataFrame中的列名。 ? 入门示例 ? ? ? ?...上述代码: # ## 如何重命名pandas dataframe中的列名字 # In[32]: import pandas as pd # In[33]: data = pd.read_csv('ufo.csv...') # ## 查看data的类型 # In[34]: type(data) # ## 显示前几条数据 # In[35]: data.head() # ## 打印所有的列名 # In[36]: data.columns...'Shape Reported':'Shape_Reported',\ 'Colors Reported':'Colors_Reported'},inplace=True) # ## 打印重命名后的列
有很多种实现的途径,我最喜欢的方式是传一个字典给DataFrame constructor,其中字典中的keys为列名,values为列的取值。...3更改列名 我们来看一下刚才我们创建的示例DataFrame: df 我更喜欢在选取pandas列的时候使用点(.),但是这对那么列名中含有空格的列不会生效。让我们来修复这个问题。...按行从多个文件中构建DataFrame 假设你的数据集分化为多个文件,但是你需要将这些数据集读到一个DataFrame中。 举例来说,我有一些关于股票的小数聚集,每个数据集为单天的CSV文件。...更好的方式为使用内置的glob模块。你可以给glob()函数传递某种模式,包括未知字符,这样它会返回符合该某事的文件列表。...按列从多个文件中构建DataFrame 上一个技巧对于数据集中每个文件包含行记录很有用。但是如果数据集中的每个文件包含的列信息呢?
Isin 在处理数据帧时,我们经常使用过滤或选择方法。Isin是一种先进的筛选方法。例如,我们可以根据选择列表筛选数据。...Melt Melt用于将维数较大的 dataframe转换为维数较少的 dataframe。一些dataframe列中包含连续的度量或变量。在某些情况下,将这些列表示为行可能更适合我们的任务。...我们有三个不同的城市,在不同的日子进行测量。我们决定将这些日子表示为列中的行。还将有一列显示测量值。...Explode 假设数据集在一个观测(行)中包含一个要素的多个条目,但您希望在单独的行中分析它们。 ? 我们想在不同的行上看到“c”的测量值,这很容易用explode来完成。...例如,我们可以使用pandas dataframes的style属性更改dataframe的样式。
Pandas可以在一个步骤中完成。...3.增加一列 从语法和架构上来说,用Pandas添加列要好得多: Pandas不需要像NumPy那样为整个数组重新分配内存;它只是为新的列添加一个引用,并更新一个列名的 registry。...Pandas连接有所有熟悉的 inner, left, right, 和 full outer 连接模式。 6.按列分组 数据分析中另一个常见的操作是按列分组。...下面是1行和1亿行的结果: 从测试结果来看,似乎在每一个操作中,Pandas都比NumPy慢!而这并不意味着Pandas的速度比NumPy慢! 当列的数量增加时,没有什么变化。...在Pandas中,做了大量的工作来统一NaN在所有支持的数据类型中的用法。根据定义(在CPU层面上强制执行),nan+任何东西的结果都是nan。