【Python茴香豆系列】之 PANDAS 获取 DataFrame 的行数
用 Python 编程,使用不同的方法来完成同一个目标,有时候是一件很有意思的事情。这让我想起鲁迅笔下的孔乙己。孔乙己对于茴香豆的茴字的四种写法颇有研究。我不敢自比孔乙己,这里搜集一些 Python 的茴香豆,以飨各位码农。
一共有多少条数据?这大概是数据分析工作最基本的内容吧。
这里,我们来聊一聊如何获取 Pandas 中 DataFrame 的行数。
首先准备一个用于测试的 DataFrame 。这个 DataFrame 有 3 列,名称分别为 a 、 b 和 c :
1 | import numpy as np |
茴香豆一: count
SQL 语句有一个 SELECT count (*) FROM some_table
,
DataFrame 同样有一个 count
函数可以用来计数,示例如下:
1 | 'a'].count() df[ |
等等,怎么会是 2 ?结果应该是三才对啊!原来, count
会把 NaN
剔除, a 列中有 NaN
,所以结果不对,我们看看 b 列就对了:
1 | 'b'].count() df[ |
可是,我们不能保证每一次碰到的 b 列都没有空值啊,于是我们自己造一列出来:
1 | 'aa'] = 1 df[ |
好吧,至此,任务勉强完成了,但是……有一点丑陋。
茴香豆二: shape
经过艰苦卓绝的学习,我发现 DataFrame 有一个 shape 函数。这是一个奇妙的函数,示例如下:
1 | df.shape |
于是,这样就可以得到结果了:
1 | 0] df.shape[ |
厉害吧,神奇吧。
但是 shape 得到的是两个数字,我们只要一个数字,在这里,是不是有点浪费呢?
茴香豆三: len
Python 有一个内置的 len ,一般来说,内置的东西总是高级一点。我们来试试:
1 | len(df) |
那么这个 len 背后又是什么呢?在 IPython 中检查一下:
1 | In [1]: df.__len__?? |
上面的 shape 又是什么呢?
1 | In [2]: df.shape?? |
茴香豆四: index
从以上两个源代码可以看出,我们应当这样使用 len :
1 | len(df.index) |
茴香豆五: 再来三个
山外青山楼外楼, Python 永远还有茴香豆。再来三个:
1 | df.index.size |