【Python茴香豆系列】之 PANDAS 获取 DataFrame 的行数#

用 Python 编程,使用不同的方法来完成同一个目标,有时候是一件很有意思的事情。这让我想起鲁迅笔下的孔乙己。孔乙己对于茴香豆的茴字的四种写法颇有研究。我不敢自比孔乙己,这里搜集一些 Python 的茴香豆,以飨各位码农。

首先准备一个函数,用来生成用于测试的 DataFrame 。这个 DataFrame 有 3 列,名称分别为 a 、 b 和 c 。

[1]:
import numpy as np
import pandas as pd

df = pd.DataFrame({'a':[None,2,3], 'b':[4,5,6], 'c':[7,8,9]})
df
[1]:
a b c
0 NaN 4 7
1 2.0 5 8
2 3.0 6 9
[2]:
len(df)
[2]:
3
[3]:
df.shape
# 获取行数和列数
[3]:
(3, 3)
[4]:
len(df.index)
[4]:
3
[5]:
df.index.size
[5]:
3
[6]:
len(df)
[6]:
3
[7]:
df.size
[7]:
9
[8]:
len(df.axes[0])
[8]:
3
[9]:
df.count()
[9]:
a    2
b    3
c    3
dtype: int64
[10]:
df.a.count()
[10]:
2
[11]:
df['aa'] = 1
sum(df['aa'])
[11]:
3
[12]:
df.pipe(len)
[12]:
3
[13]:
timeit len(df)
349 ns ± 10.7 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
[14]:
timeit df.index.size
293 ns ± 10.2 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
[15]:
timeit len(df.index)
227 ns ± 1.65 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
[16]:
timeit df.a.count()
13.8 µs ± 143 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
[17]:
timeit df.shape[0]
618 ns ± 5.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
[18]:
timeit df.count()[0]
893 µs ± 21 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)