解锁数据分析新境界:Pandas与Plotly的完美搭档

1. 简介

pandas作为数据处理领域的重量级库,已经发展多年,拥有丰富的功能覆盖了大部分数据清洗、分析场景。然而,仍有一些应用场景在pandas中尚未完全满足或操作方式不够简洁方便。

今天,我要向大家介绍的Python库pyjanitor,就是针对这些空白或不足而生。它内置了许多功能方法,可以在与pandas中数据框等数据结构兼容的同时,为pandas提供更多功能补充。pyjanitor是对R中著名的数据清洗包janitor的移植,正如其名字所示,它帮助我们完成数据处理中的清洁工作。

图片[1]-解锁数据分析新境界:Pandas与Plotly的完美搭档-山海云端论坛

2. pyjanitor中的常用功能

对于使用conda的朋友,推荐使用下列命令完成pyjanitor的安装:

<code>conda install pyjanitor -c https://mirrors.sjtug.sjtu.edu.cn/anaconda/cloud/conda-forge -y</code>

安装完成后,导入janitor即可开始使用。下面介绍一些pyjanitor中颇具特色的功能:

2.1 利用also()方法穿插执行任意函数

pandas链式写法对于处理数据和理清步骤非常高效。pyjanitor中的also()方法允许我们在链式过程中随意插入执行任意函数,不影响下一步处理逻辑的数据输入。下面是一个简单的例子:

<code>df = ( # 构造示例数据框 pd.DataFrame({"a": [1, 2, 3], "b": list("abc")}) .query("a > 1") # 利用also()插入lambda函数接受上一步的输入对象 .also(lambda df: print(f"a字段<=1的记录有{df.query('a <= 1').shape[0]}行")) .rename(columns={'a': 'new_a'}) # 利用also()实现中间计算结果的导出 .also(lambda df: df.to_csv("temp.csv", index=False)) # 利用also()打印到这一步时数据框计算结果的字段名 .also( lambda df: print(f"字段名:{df.columns.tolist()}") ) .drop(columns='b') ) df</code>
图片[2]-解锁数据分析新境界:Pandas与Plotly的完美搭档-山海云端论坛

2.2 利用case_when()方法实现多条件分支

pyjanitor中的case_when()方法可以实现类似SQL中的多条件分支运算。它允许我们针对数据框实现多条件判断,并给出相应的结果。下面是一个例子:

<code>df.case_when( ((df.a == 0) & (df.b == 0)), '类别1', ((df.a == 0) & (df.b != 0)), '类别2', # 其他情况 '类别3', column_name="类别", )</code>
图片[3]-解锁数据分析新境界:Pandas与Plotly的完美搭档-山海云端论坛

2.3 利用conditional_join()实现条件连接

pyjanitor中的conditional_join()方法弥补了pandas中未完善的条件连接功能。它允许我们根据自定义的条件判断进行表的连接操作。下面是一个示例:

<code>( df_left .conditional_join( df_right, # 满足left_range_start <= right_range_start ('left_range_start', 'right_range_start', '<='), # 且满足left_range_end >= right_range_end ('left_range_end', 'right_range_end', '>=') ) )</code>

2.4 利用move()方法快捷完成字段位置调整

pyjanitor中的move()方法用于快捷调整数据行或列的位置。它可以灵活地指定源数据行或列以及目标位置,并支持前后移动。示例代码如下:

<code>df.move(source='b', target='a', position='after', axis=1)</code>

除了上述功能外,pyjanitor还内置了许多特别的功能,适用于生信、化学、金融、机器学习、数学等领域。感兴趣的朋友可以前往官网了解更多内容。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容