Pandas用了这么久,有觉得哪里不好的地方吗?

简介: 作为一名数据分析师,自己对Pandas有过系统的学习和应用实践,对其大部分功能甚至骚操作也称得上有所研究,前期也写过太多的Pandas应用技巧相关的文章。那么在赞美之余,有没有一些觉得不好的设计呢?今天本文就来吐槽3个自己觉得Pandas设计有欠妥当的地方,纯为个人见解!

640.png

槽点1:函数API过于丰富,命名不够直观易懂;有时又缺少一些有用的API


Pandas为了提供丰富的API、方便使用者的灵活调用,在设计上提供了大量繁杂的小功能和小技巧,但其实过犹不及,有时提供了过多的API在提供了丰富性的同时也给使用者带来一定的困扰,致使容易遗忘甚至混淆部分API的功能。例如:


以Pandas核心数据结构DataFrame为例,其一大特色是支持行列索引,然而在索引相关操作时,包括的API有reset_index、set_index、reindex、reindex_like、rename、rename_axis等等,至少在自己初学时对这index相关的函数懵圈了好久。相比之下,同样是以DataFrame为核心数据抽象的Spark.sql组件,其API则尤为简洁易懂。当然了,Spark里的DataFrame没Pandas的复杂是客观事实,Pandas里丰富的API也确实有其独特用武之地,所以也不能完全算是槽点。


640.png


如果说Pandas的API足够丰富是其一大优势,但在有些情况下又不尽然。Pandas在判断元素取值是否为空值时提供了互补的四个API,分别是isna、isnull、notna、notnull,这确实也是符合其API丰富的特点;但在处理元素是否属于某集合的API时,按理说也应当提供互补的操作,例如isin和notin,然而实际情况却是只有isin,当然notin是可以简单的在isin前加元素取反来实现,所以Pandas的API设计原则到底是要精练还是方便


槽点2:部分功能用法不尽统一


这里就举一个小例子,就是Pandas内置了一些可视化功能,具体来说是对于DataFrame而言可直接调用部分绘图接口实现快速简单可视化。例如对于一个DataFrame,直接调用plot函数,通过设置kind参数可实现11种常用图表的可视化输出(默认基于matplotlib):


640.png

通过df.plot接口可实现11种绘图类型


然而,熟悉Pandas可视化操作的一定知道还有一种方式是直接通过df调用相应绘图接口的简洁形式,例如df.hist等等。然而,不幸的是这种简介的调用方法只对个别图表有用,大部分是不支持的。例如scatter。但问题是两种调用方式有什么本质区别吗?为何第二种要少支持一些图表类型呢?


槽点3:函数的参数名风格混乱


程序员都知道良好的变量命名其意义有多么的重要,自己在编写一些小功能函数时对于函数名、参数名等也是绞尽脑汁,既要简洁又要直观易懂。但在Pandas的有些函数中,参数名其实是比较混乱的。例如在读取数据时最为常用的pd.read_csv函数,其提供了大量的个性化参数配置,所以在使用起来更为灵活多样。但其参数命名却实在不敢恭维:


640.png


例如,对于多个单词组成的参数名,按照python的惯例应该是用蛇形命名法吧,但为什么skipinitialspace=False, skiprows=None, skipfooter=0这些又不用?对于参数可能是列表或字典等集合类的,那么参数名应该用单词的复数形式吧,例如names、usecols这些,但为什么dtype和date_parser这些也可能是集合传参的又用的单数?终究还是感觉有失严谨!


当然,最后个人还是要声明立场,我一直都是一个Pandas爱好者,也一直享受着Pandas对数据处理带来的便利,所以这些吐槽可能还是出于希望其更好迭代改进的期盼吧!


640.png

目录
相关文章
|
2月前
|
数据采集 机器学习/深度学习 数据挖掘
数据也需SPA?Python转换大法,给你的数据做个全身放松SPA!
【10月更文挑战第4天】在数字化时代,数据犹如企业的血液,贯穿于各项业务之中。就像人需要定期SPA恢复活力,数据也需要“转换大法”来优化结构和提升质量,从而更好地支持决策分析与机器学习。本文探讨了如何使用Python进行数据SPA,包括理解需求、数据清洗、格式转换及聚合分析等步骤。通过Python强大的Pandas库,我们可以轻松完成缺失值填充、重复记录删除等任务,并实现数据格式的标准化,确保数据更加整洁、有序,助力高效分析与决策。为企业数据注入新的活力,迎接更多挑战。
31 1
|
4月前
|
机器学习/深度学习 数据挖掘 API
6个冷门但实用的pandas知识点
6个冷门但实用的pandas知识点
6个冷门但实用的pandas知识点
|
4月前
|
Python
手撕Python!模块、包、库,傻傻分不清?一分钟带你弄明白!
手撕Python!模块、包、库,傻傻分不清?一分钟带你弄明白!
51 1
|
7月前
|
数据采集 数据挖掘 Python
最全妙不可言。写出优雅的 Python 代码的七条重要技巧,2024年最新被面试官怼了还有戏吗
最全妙不可言。写出优雅的 Python 代码的七条重要技巧,2024年最新被面试官怼了还有戏吗
|
7月前
|
索引 Python
肝了3天,整理了90个Pandas案例,强烈建议收藏!
肝了3天,整理了90个Pandas案例,强烈建议收藏!
|
人工智能 算法 Java
关于“Python进高考”,我有句呵呵不知当讲不当讲
如果你是需要用编程来解决问题,那么用 Python 做便是了。用它是因为它适合,跟它火不火无关。
|
自然语言处理 算法 Python
没用Pandas快捷方法,硬核编程的我面试被拒
没用Pandas快捷方法,硬核编程的我面试被拒
|
SQL 数据挖掘 索引
肝了几天,十分钟入门pandas(上)
肝了几天,十分钟入门pandas(上)
121 0
肝了几天,十分钟入门pandas(上)
|
SQL 数据挖掘 索引
肝了几天,十分钟入门pandas(下)
肝了几天,十分钟入门pandas(下)
141 0
肝了几天,十分钟入门pandas(下)
|
数据可视化 Python
不用写一行Python代码,就可以用Matplotlib绘图,妈妈再也不担心我不会作图了!
不用写一行Python代码,就可以用Matplotlib绘图,妈妈再也不担心我不会作图了!
不用写一行Python代码,就可以用Matplotlib绘图,妈妈再也不担心我不会作图了!