这 20 个Pandas 函数, 你可能没试过
Pandas 是 pytho 里主流的数据分析库。Pandas 之所以如此普遍,是因为集功能性、灵活性于一体。为了简化数据分析过程, Pandas 其实内置了许多功能和方法.
本文举例说明 20 个 Pandas 好用的功能和方法。希望这些方法对精进中的你有帮助.
df.query(expr,inplace = False,** kwargs) # 使用布尔表达式查询帧的列
参数:
expr :str要评估的查询字符串, 不同条件之间用布尔运算符连接, 整体外包引号
inplace=False :是否修改数据或返回副本
kwargs :dict关键字参数
返回:DataFrame
根据条件筛选数据是数据分析过程中的常见操作, Pandas 也提供了很多过滤方法, 比如 条件[ ], 比如loc/iloc. 相比之下, query() 做为查询函数, 语句更贴近自然语言, 多条件筛选更加易读
DataFrame.insert( loc , column , value , allow_duplicates=False ) [官方文档]
参数:
loc : 插入列位置, 索引从 0 开始
column : 插入的列的列名
value : 插入的列的 values
allow_duplicates=False : 是否允许存在重复列, 默认不允许
当我们想要在 DataFrame 中添加一个新列时,默认情况下它会被添加到数据帧的末尾。其实Pandas 提供了可以在任何位置插入新列的函数 inser()
如上面参数描述, 前三个参数是必需的: 插入列的位置, 插入列的列名, 插入列的值, value 应该是个 Series 或者类似 array 的对象
DataFrame 包含 A, B, C 3 个不同组。我们可能只对年值感兴趣,但在某些情况下,我们还需要一个累积值。Pandas 提供了一个易于使用的函数来计算累计和,即 cumsum()
sample 方法用于从 Series 或 DataFrame 中随机抽样。当我们想要从分布中选择一个随机样本时,这个函数非常有用
“Where”用于根据条件替换行或列中的值。默认替换值为NaN,但我们也可以指定作为替换的值。
“where”的工作方式是选择符合条件的值,并用指定值替换其余值。其中(df['new_col']<0,0)选择“new_col”中小于0的所有值,其余值替换为0。因此,where也可以被视为'遮罩运算'。
where 在 numpy 中语法略有不同, numpy 中还需要指定符合条件时替换的值, 如下两个语句有几乎一样的结果:
区别是 a 是一个 Series, b 是一个一维数组, pandas 的 where 可以通过指定 inplace=True 来改写原 DataFrame
在处理 DataFrame 时,isin 是我们经常使用的筛选方法。但 Isin 还有一种高级用法: 根据给定列表筛选值。
注意给定的列表里的数据类型要和过滤列里的数据类型一致
loc 和 iloc 用来选择行列.
loc用于按标签选择数据。列的标签是列名。行参数的提供方式有两种:
注意 loc 的行参数包含上边界, 而 iloc 里的这种写法不包含上边界
此函数用于计算系列值的百分比变化。考虑我们有一个包含 [2,3,6] 的 Series。如果我们将pct_change 应用于此 Series,则返回的系列将为 [NaN,0.5,1.0]。从第一个元素到第二个元素增加了 50%,从第二个元素到第三个元素增加了 100%。pct_change函数用于比较元素时间序列中的变化百分比。
rank 函数为值排序。假设我们有一个包含[1,7,5,3]的序列。分配给这些值的排序值为[1,4,3,2]
Melt 用于将 二维表 变为 一维表 , 即逆透视. 样例表如下:
可以用透视表还原
explode '爆裂'函数(hivesql 里也有)), 等同于拆分+按列展开. 样例表如下:
Nunique统计列或行上的唯一条目数。它在分类特征中非常有用,尤其是在我们事先不知道类别数量的情况下。
我们可以直接将 nunique 函数作用于整个表以查看每列中唯一值的数量:
可用于根据其他行、列对上的值查找表中的值。这个函数最好通过一个例子来解释。假设我们有以下表:
这种方法可以用于用于从另一个表中目标表中匹配列, 类似于:
Pandas 支持多种数据类型,其中一种是 object。对象包含文本或混合(数字和非数字)值。但是,如果有其他选项可用,则不建议使用对象数据类型。使用更具体的数据类型可以更快地执行某些操作。例如,对于数值,我们更喜欢使用整数或浮点数据类型。
infer_objects 尝试为对象列推断更好的数据类型。
尝试对象数据类型列的软转换,使非对象列和不可转换列保持不变。推理规则与正常序列/数据帧构造期间的推理规则相同。。示例表:
可以看到所有列都是 object, 我们尝试一下 infer_objects:
memory_usage 返回每列使用的内存量(字节)。在处理大型数据表时, 有时会需要查看内存用量。考虑下面的100万行数据文件
(1000000, 2)
11.4442138671875
describe 函数计算数字列的基本统计信息,包括计数、平均值、标准偏差、最小值和最大值、中位数、第一个和第三个四分位数。因此,它提供了整个表的统计摘要
Merge()根据两表中的公共列组合成新表。例表如下:
Select_dtypes 函数根据数据类型设置的条件返回数据表列的子集。它有两个参数:include和exlude, 前者意为包含的数据类型, 后者为排除的数据类型
替换数据表中的值
Applymap函数用于将函数应用于数据帧元素。
请注意,如果操作的矢量化版本可用,则应优先于applymap。例如,如果我们想将每个元素乘以一个数字,我们不需要也不应该使用applymap函数。在这种情况下,简单的矢量化操作(例如df*4)要快得多。
但是,在某些情况下,我们可能无法选择矢量化操作。例如,我们可以使用dataframes的style属性更改dataframe的样式。以下函数将负值的颜色更改为红色。