Pandas是一个用于数据操作和分析的Python库。它建立在 numpy 库之上,提供数据帧的有效实现。数据帧是一种二维数据结构。在数据帧中,数据以表格形式在行和列中对齐。...它类似于电子表格或SQL表或R中的data.frame。最常用的熊猫对象是数据帧。大多数情况下,数据是从其他数据源(如csv,excel,SQL等)导入到pandas数据帧中的。...在本教程中,我们将学习如何创建一个空数据帧,以及如何在 Pandas 中向其追加行和列。...然后,通过将列名 ['Name', 'Age'] 传递给 DataFrame 构造函数的 columns 参数,我们在数据帧中创建 2 列。...然后,通过将列名称 ['Batsman', 'Runs', 'Balls', '5s', '4s'] 传递给 DataFrame 构造函数的 columns 参数,我们在数据帧中创建了 6 列。
操作数据帧可能很快会成为一项复杂的任务,因此在Pandas中的八种技术中均提供了说明,可视化,代码和技巧来记住如何做。 ?...每种方法都将包括说明,可视化,代码以及记住它的技巧。 Pivot 透视表将创建一个新的“透视表”,该透视表将数据中的现有列投影为新表的元素,包括索引,列和值。...Melt Melt可以被认为是“不可透视的”,因为它将基于矩阵的数据(具有二维)转换为基于列表的数据(列表示值,行表示唯一的数据点),而枢轴则相反。...合并不是pandas的功能,而是附加到DataFrame。始终假定合并所在的DataFrame是“左表”,在函数中作为参数调用的DataFrame是“右表”,并带有相应的键。...记住:合并数据帧就像在水平行驶时合并车道一样。想象一下,每一列都是高速公路上的一条车道。为了合并,它们必须水平合并。
如果笛卡尔积是 Pandas 的唯一选择,那么将数据帧的列加在一起这样的简单操作将使返回的元素数量激增。 在此秘籍中,每个序列具有不同数量的元素。...要设置关联表的创建,我们将此唯一 ID 添加到actor/director表中。 步骤 8 和步骤 9 通过选择两个唯一标识符来创建关联表。...通过在表中搜索特定的字符串,我们将表的数量减少到只有三个。...一旦创建了引擎,就可以使用步骤 2 中的read_sql_table函数将整个表选择到数据帧中非常容易。数据库中的每个表都有一个主键,该主键唯一地标识每一行。 在图中用图形符号标识它。...在第 6 步中,我们将最新数据选择到单独的数据帧中。 我们将以 8 月的这个月为基准,并创建Total_Goal列,该列比当前少 20% 。
通常,这些新列将从数据集中已有的先前列创建。 Pandas 有几种不同的方法可以向数据帧添加新列。 准备 在此秘籍中,我们通过使用赋值在影片数据集中创建新列,然后使用drop方法删除列。...许多秘籍将与第 1 章,“Pandas 基础”中的内容类似,这些内容主要涵盖序列操作。 选择数据帧的多个列 选择单个列是通过将所需的列名作为字符串传递给数据帧的索引运算符来完成的。...关系数据库的一种非常常见的做法是将主键(如果存在)作为第一列,并在其后直接放置任何外键。 主键唯一地标识当前表中的行。 外键唯一地标识其他表中的行。...Pandas 还有 NumPy 中不提供的其他分类数据类型。 当转换为category时,Pandas 内部会创建从整数到每个唯一字符串值的映射。 因此,每个字符串仅需要在内存中保留一次。...像college3一样对索引进行排序时,pandas 利用称为二分搜索的算法来大大提高性能。 在秘籍的后半部分,我们使用唯一列作为索引。 Pandas 通过哈希表实现唯一索引,从而使选择速度更快。
然而,Data8 中引入的表格仅包含列标签。 DataFrame的标签称为DataFrame的索引,并使许多数据操作更容易。...我们可以看到baby_pop中的Sex索引成为了数据透视表的列。...pandas通过序列的.str属性,提供字符串操作函数。...我们现在可以将最后一个字母的这一列添加到我们的婴儿数据帧中。...通过在pandas文档中查看绘图,我们了解到pandas将DataFrame的一行中的列绘制为一组条形,并将每列显示为不同颜色的条形。 这意味着letter_dist表的透视版本将具有正确的格式。
这些列中的每一个可能都有一个唯一的名称,一个字符串来标识它们包含的信息。 也许可以将其视为变量。 有了这个对象,我们可以轻松,有效地存储,访问和操纵我们的数据。...探索序列和数据帧对象 我们将开始研究 Pandas 序列和数据帧对象。 在本节中,我们将通过研究 Pandas 序列和数据帧的创建方式来开始熟悉它们。 我们将从序列开始,因为它们是数据帧的构建块。...必须牢记的是,涉及数据帧的算法首先应用于数据帧的列,然后再应用于数据帧的行。 因此,数据帧中的列将与单个标量,具有与该列同名的索引的序列元素或其他涉及的数据帧中的列匹配。...如果有序列或数据帧的元素找不到匹配项,则会生成新列,对应于不匹配的元素或列,并填充 Nan。 数据帧和向量化 向量化可以应用于数据帧。...对于分层索引,我们认为数据帧中的行或序列中的元素由两个或多个索引的组合唯一标识。 这些索引具有层次结构,选择一个级别的索引将选择具有该级别索引的所有元素。
Python的Pandas库为我们提供了强大的数据选择工具。通过DataFrame的结构化数据存储方式,我们可以轻松地按照行或列进行数据的选择。...关于NumPy数组的索引和切片操作的总结,如下表: 【例】利用Python的Numpy创建一维数组,并通过索引提取单个或多个元素。...,选择第一行第二列的数据元素并输出。...True表示按连结主键(on 对应的列名)进行升序排列。 【例】创建两个不同的数据帧,并使用merge()对其执行合并操作。 关键技术:merge()函数 首先创建两个DataFrame对象。...代码如下: 2.使用join()方法合并数据集 join()是最常用的函数之一, join()方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
十九、数据整理(上) 作者:Chris Albon 译者:飞龙 协议:CC BY-NC-SA 4.0 在 Pandas 中通过分组应用函数 import pandas as pd # 创建示例数据帧...applymap()将函数应用于整个数据帧中的每个元素。...数据帧赋予新列 import pandas as pd # 创建空数据帧 df = pd.DataFrame() # 创建一列 df['name'] = ['John', 'Steve', 'Sarah...中使用正则表达式将字符串分解为列 # 导入模块 import re import pandas as pd # 创建带有一列字符串的数据帧 data = {'raw': ['Arizona 1 2014...在这个例子中,我创建了一个包含两列 365 行的数据帧。一列是日期,第二列是数值。
通过将 isna 与 sum 函数一起使用,我们可以看到每列中缺失值的数量。...我们可以用字符串来描述它们。 df2 = df.query('80000 < Balance < 100000') # 让我们通过绘制平衡列的直方图来确认结果。...例如,地理列具有 3 个唯一值和 10000 行。 我们可以通过将其数据类型更改为"类别"来节省内存。...我发现使用 Pandas 创建基本绘图更容易,而不是使用其他数据可视化库。 让我们创建平衡列的直方图。 ? 26.减少浮点数小数点 pandas 可能会为浮点数显示过多的小数点。...在计算时间序列或元素顺序数组中更改的百分比时,它很有用。
和DML操作在pandas中都可以实现 类比Excel的数据透视表功能,Excel中最为强大的数据分析工具之一是数据透视表,这在pandas中也可轻松实现 自带正则表达式的字符串向量化操作,对pandas...所以从这个角度讲,pandas数据创建的一种灵活方式就是通过字典或者嵌套字典,同时也自然衍生出了适用于series和dataframe的类似字典访问的接口,即通过loc索引访问。...如下实现对数据表中逐元素求平方 ? 广播机制,即当维度或形状不匹配时,会按一定条件广播后计算。...,要求每个df内部列名是唯一的,但两个df间可以重复,毕竟有相同列才有拼接的实际意义) merge,完全类似于SQL中的join语法,仅支持横向拼接,通过设置连接字段,实现对同一记录的不同列信息连接,支持...2 分组聚合 pandas的另一个强大的数据分析功能是分组聚合以及数据透视表,前者堪比SQL中的groupby,后者媲美Excel中的数据透视表。
因为我们的具体目标是向你展示下面这些: 1、创建一个日期范围 2、处理时间戳数据 3、将字符串数据转换为时间戳 4、数据帧中索引和切片时间序列数据 5、重新采样不同时间段的时间序列汇总/汇总统计数据 6...如果想要处理已有的实际数据,可以从使用pandas read_csv将文件读入数据帧开始,但是我们将从处理生成的数据开始。..._libs.tslib.Timestamp } 让我们用时间戳数据创建一个示例数据框架,并查看前15个元素: df = pd.DataFrame(date_rng, columns=['date'])...让我们在原始df中创建一个新列,该列计算3个窗口期间的滚动和,然后查看数据帧的顶部: df['rolling_sum'] = df.rolling(3).sum() df.head(10) } 我们可以看到...2、仔细跟踪时区-让其他人通过查看您的代码,了解您的数据所在的时区,并考虑转换为UTC或标准值,以保持数据的标准化。
SQLite表中或MS Excel文件中。...2 数据帧操作 在本节中,我将展示一些关于Pandas数据帧的常见问题的提示。 注意:有些方法不直接修改数据帧,而是返回所需的数据帧。...获取列的所有唯一属性值: 假设我们有一个整数属性user_id: listOfUniqueUserIDs = data[‘user_id’].unique() 然后你可以迭代这个列表,或者用它做任何你想做的事情...: 假设您想通过一个id属性对2000行(甚至整个数据帧)的样本进行排序。...这些数据将为您节省查找自定义数据集的麻烦。 此外,数据可以是任何首选大小,可以覆盖许多数据类型。此外,您还可以使用上述的一些技巧来更加熟悉Pandas,并了解它是多么强大的一种工具。
index:索引值必须是唯一的和散列的,与数据的长度相同。 如果没有索引被传递,默认为np.arange(n)。 dtype:数据类型,如果没有,将推断数据类型。...当指定columns时,如果columns使用字典键集合以外元素作为columns的元素,则使用NaN进行填充,并提取出columns指定的数据源字典中相应的键值对。...DataFrame 使用Series字典作为数据创建DataFrame时,得到的DataFrame的index是所有Series的index的并集,字典键的集合作为columns。...通过字典键可以进行列选择,获取DataFrame中的一列数据。...major_axis - axis 1,是每个数据帧(DataFrame)的索引(行)。 minor_axis - axis 2,是每个数据帧(DataFrame)的列。
, connection_object) # 从SQL表/数据库中读取 pd.read_json(json_string) # 从JSON格式的字符串,URL或文件中读取。...pd.read_html(url) # 解析html URL,字符串或文件,并将表提取到数据帧列表 pd.read_clipboard() # 获取剪贴板的内容并将其传递给 read_table()...) # 所有列的唯一值和计数 数据选取 使用这些命令选择数据的特定子集。...) df.pivot_table(index=col1,values=[col2,col3],aggfunc=mean) # 创建一个数据透视表组通过 col1 ,并计算平均值的 col2 和 col3...返回均值的所有列 df.corr() # 返回DataFrame中各列之间的相关性 df.count() # 返回非空值的每个数据帧列中的数字 df.max()
,我们在之前创建的 Excel 文件对象上调用parse方法,并传入我们想要读取的工作表名称。...)] 接下来,使用 pandas 的read_clipboard方法读取数据并创建一个数据帧,如下所示: df = pd.read_clipboard() df.head() 从网页复制的数据现在作为数据帧存储在内存中...首先,我们将学习如何从 Pandas 数据帧中选择数据子集并创建序列对象。 我们将从导入真实数据集开始。.../img/3cee634e-99f8-4ec7-8fce-0ebb53bcb71e.png)] 如您在前面的屏幕快照中所见,我们按State和Metro过滤了列,并使用过滤器列中的值创建了一个新的数据帧...set_index方法仅在内存中全新的数据帧中创建了更改,我们可以将其保存在新的数据帧中。
下图所示为pandas如何存储我们数据表的前十二列: 可以注意到,这些数据块没有保持对列名的引用,这是由于为了存储dataframe中的真实数据,这些数据块都经过了优化。...对于包含数值型数据(比如整型和浮点型)的数据块,pandas会合并这些列,并把它们存储为一个Numpy数组(ndarray)。Numpy数组是在C数组的基础上创建的,其值在内存中是连续存储的。...我们再创建一个原始dataframe的副本,将其数值列赋值为优化后的类型,再看看内存用量的整体优化效果。 可以看到通过我们显著缩减数值型列的内存用量,我们的dataframe的整体内存用量减少了7%。...在object列中的每一个元素实际上都是存放内存中真实数据位置的指针。 下图对比展示了数值型数据怎样以Numpy数据类型存储,和字符串怎样以Python内置类型进行存储的。...为了介绍我们何处会用到这种类型去减少内存消耗,让我们来看看我们数据中每一个object类型列中的唯一值个数。 可以看到在我们包含了近172000场比赛的数据集中,很多列只包含了少数几个唯一值。
它的列类型可以是异构的:即具有不同的类型。 它类似于 NumPy 中的结构化数组,并添加了可变性。 它具有以下属性: 从概念上讲类似于数据表或电子表格。...数据帧创建 数据帧是 Pandas 中最常用的数据结构。...使用ndarrays/列表字典 在这里,我们从列表的字典中创建一个数据帧结构。 键将成为数据帧结构中的列标签,列表中的数据将成为列值。 注意如何使用np.range(n)生成行标签索引。...,该外部连接对所有三个数据帧进行连接并执行并集,并通过为此类列插入NaN来包括所有列均不具有值的条目: In [86]: pd.concat([A,B,C],axis=1) # outer join Out...其余的非 ID 列可被视为变量,并可进行透视设置并成为名称-值两列方案的一部分。 ID 列唯一标识数据帧中的一行。
创建频率表,输出每个类中数量多少 iris_gb.size() # 2....connection_object) # 从SQL表/数据库中读取 pd.read_json(json_string) # 从JSON格式的字符串,URL或文件中读取。...pd.read_html(url) # 解析html URL,字符串或文件,并将表提取到数据帧列表 pd.read_clipboard() # 获取剪贴板的内容并将其传递给 read_table()...) df.pivot_table(index=col1,values=[col2,col3],aggfunc=mean) # 创建一个数据透视表组通过 col1 ,并计算平均值的 col2 和 col3...df.corr() # 返回DataFrame中各列之间的相关性 df.count() # 返回非空值的每个数据帧列中的数字 df.max() # 返回每列中的最高值
本文中记录Pandas操作技巧,包含: 导入数据 导出数据 查看、检查数据 数据选取 数据清洗 数据处理:Filter、Sort和GroupBy 数据合并 常识 # 导入pandas import pandas...to_excel(writer,sheet_name='单位') 和 writer.save(),将多个数据帧写入同一个工作簿的多个sheet(工作表) 查看、检查数据 df.head(n) # 查看DataFrame...) # 查看DataFrame对象中每一列的唯一值和计数 df.isnull().any() # 查看是否有缺失值 df[df[column_name].duplicated()] # 查看column_name..."s"字符串的数据 data.astype(int).isin(list1) # 数据的某条数据的某个字段在列表list1中的数据 df[-df[column_name].duplicated()] #...() # 检查DataFrame对象中的空值,并返回一个Boolean数组 pd.notnull() # 检查DataFrame对象中的非空值,并返回一个Boolean数组 df.dropna() #
列中的唯一值 特别感谢 Bob Haffner 指出了一种更好的方法。...现在,我们将创建一个“宽的”数据帧,其中行数按患者编号,列按观测编号,单元格值为得分值。...中的移动平均 # 导入模块 import pandas as pd # 创建数据 data = {'score': [1,1,1,2,2,2,3,3,3]} # 创建数据帧 df = pd.DataFrame...import pandas as pd from sklearn import preprocessing # 设置图表为内联 %matplotlib inline # 创建示例数据帧,带有未规范化的一列...(raw_data) ''' 700 800 900 1000 1100 1200 1300 1400 ''' 数据帧中的字符串整理 # 导入模块 import pandas as pd import
领取专属 10元无门槛券
手把手带您无忧上云