panda 求行数_如何获取Pandas数据帧的行数?

本文介绍了在Pandas中获取DataFrame行数的各种方法,包括len(df),df.shape[0],len(df.index),以及针对非空行数的count方法,并讨论了不同情况下的适用性和性能。此外,还涉及到了GroupBy操作时的size和count方法。
部署运行你感兴趣的模型镜像

cs95..

52

如何获取大熊猫DataFrame的行数?

下表总结了您希望在DataFrame(或Series,为了完整起见)中进行计数的不同情况,以及推荐的方法。

脚注

DataFrame.countSeries由于非空计数随列而异,因此返回每一列的计数。

DataFrameGroupBy.size返回Series,因为同一组中的所有列共享相同的行数。

DataFrameGroupBy.count返回一个DataFrame,因为非空计数在同一组的各列之间可能有所不同。要获取特定列的逐组非空计数,请使用df.groupby(...)['x'].count()“ x”为要计数的列。

最少的代码示例

下面,我显示上表中描述的每种方法的示例。首先,设置-

df = pd.DataFrame({

'A': list('aabbc'), 'B': ['x', 'x', np.nan, 'x', np.nan]})

s = df['B'].copy()

df

A B

0 a x

1 a x

2 b NaN

3 b x

4 c NaN

s

0 x

1 x

2 NaN

3 x

4 NaN

Name: B, dtype: object

一个数据帧的行数:len(df),df.shape[0]或len(df.index)

len(df)

# 5

df.shape[0]

# 5

len(df.index)

# 5

比较固定时间操作的性能似乎很愚蠢,尤其是当差异处于“严重不担心”级别时。但这似乎是带有其他答案的趋势,因此为了完整性,我也进行了同样的操作。

在上述3种方法中,len(df.index)(如其他答案所述)最快。

注意

上面的所有方法都是固定时间操作,因为它们是简单的属性查找。

df.shape(类似于ndarray.shape)是一个返回的元组的属性(# Rows, # Cols)。例如,此处df.shape返回(8,

2)示例。

列数一个数据帧的:df.shape[1],len(df.columns)

df.shape[1]

# 2

len(df.columns)

# 2

类似于len(df.index),len(df.columns)是这两种方法中比较快的一种(但键入的字符更多)。

行计数一个系列:len(s),s.size,len(s.index)

len(s)

# 5

s.size

# 5

len(s.index)

# 5

s.size而len(s.index)即将在速度方面是相同的。但我建议len(df)。

注意

size是一个属性,它返回元素数(=任何系列的行数)。DataFrames还定义了一个size属性,该属性返回与相同的结果df.shape[0] * df.shape[1]。

非空行数:DataFrame.count和Series.count

此处描述的方法仅计算非空值(表示忽略NaN)。

调用DataFrame.count将返回每列的非NaN计数:

df.count()

A 5

B 3

dtype: int64

对于系列,请使用Series.count类似的效果:

s.count()

# 3

分组行数: GroupBy.size

对于DataFrames,用于DataFrameGroupBy.size计算每个组的行数。

df.groupby('A').size()

A

a 2

b 2

c 1

dtype: int64

s.groupby(df.A).size()

A

a 2

b 2

c 1

Name: B, dtype: int64

在两种情况下,Series都将返回a。这也很有意义,DataFrames因为所有组都共享相同的行数。

按组的非空行计数: GroupBy.count

与上述类似,但使用GroupBy.count而不是GroupBy.size。请注意,size始终返回a Series,而在特定列上count返回Seriesif,否则返回a DataFrame。

以下方法返回相同的内容:

df.groupby('A')['B'].size()

df.groupby('A').size()

A

a 2

b 2

c 1

Name: B, dtype: int64

同时,count我们有

df.groupby('A').count()

B

A

a 2

b 1

c 0

...在整个GroupBy对象v / s上调用

df.groupby('A')['B'].count()

A

a 2

b 1

c 0

Name: B, dtype: int64

在特定列上调用。

您可能感兴趣的与本文相关的镜像

Facefusion

Facefusion

AI应用

FaceFusion是全新一代AI换脸工具,无需安装,一键运行,可以完成去遮挡,高清化,卡通脸一键替换,并且Nvidia/AMD等显卡全平台支持

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值