pandas python 如何统计数据帧或行的记录数
pandas python 如何统计数据帧或行的记录数
显然我对Pandas是新手。我该如何简单地计算数据框中记录的数量。
我本以为这么简单的事应该很容易,但我似乎找不到答案......可能是因为它太简单了。
cnt = df.count print cnt
上面的代码实际上只打印了整个数据框。
admin 更改状态以发布 2023年5月20日
关于你的问题......计算一个字段?我决定把它作为一个问题,但希望能帮到你......
假设我有以下的数据框:
import numpy as np import pandas as pd df = pd.DataFrame(np.random.normal(0, 1, (5, 2)), columns=["A", "B"])
你可以通过下面的方式计算单一列:
df.A.count() #or df['A'].count()
两种方法都会得出结果为5。
很酷的一点是(或者在pandas
中大量使用),如果你有缺失值NA
,count
函数也会把它考虑在内。
所以,如果我这样做:
df['A'][1::2] = np.NAN df.count()
结果将会是这样的:
A 3 B 5
要获取dataframe中行的数量,请使用:
df.shape[0]
(使用df.shape[1]
获取列的数量)。
作为替代方案,您可以使用
len(df)
或
len(df.index)
(使用len(df.columns)
获取列)
shape
比len()
更灵活和更方便,特别是对于交互式工作(只需在末尾添加即可),但len
要快一些(请参见此答案)。
避免使用:count()
,因为它返回请求轴上非NA/null观察值的数量
len(df.index)
更快
import pandas as pd import numpy as np df = pd.DataFrame(np.arange(24).reshape(8, 3),columns=['A', 'B', 'C']) df['A'][5]=np.nan df # Out: # A B C # 0 0 1 2 # 1 3 4 5 # 2 6 7 8 # 3 9 10 11 # 4 12 13 14 # 5 NaN 16 17 # 6 18 19 20 # 7 21 22 23 %timeit df.shape[0] # 100000 loops, best of 3: 4.22 µs per loop %timeit len(df) # 100000 loops, best of 3: 2.26 µs per loop %timeit len(df.index) # 1000000 loops, best of 3: 1.46 µs per loop
df.__len__
只是调用len(df.index)
import inspect print(inspect.getsource(pd.DataFrame.__len__)) # Out: # def __len__(self): # """Returns length of info axis, but here we use the index """ # return len(self.index)
为什么您不应该使用count()
df.count() # Out: # A 7 # B 8 # C 8