Pandas常用计数函数实战教程

#本文介绍Pandas中对数据框行或列进行计数、查找唯一值的相关函数,并通过示例进行说明。

重复记录计数

包括对数据框的某列、行以及每列查找重复记录数。

import pandas as pd

df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   'position': ['G', 'G', 'G', 'F', 'G', 'G', 'F', 'F'],
                   'points': [5, 5, 8, 10, 5, 7, 10, 10]})
df

#   team position points
# 0	A	G	5
# 1	A	G	5
# 2	A	G	8
# 3	A	F	10
# 4	B	G	5
# 5	B	G	7
# 6	B	F	10
# 7	B	F	10

# 计算points列重复的值
print(len(df['points']) - len(df['points'].drop_duplicates())) 
# 输出4


# 计算重复记录
print(len(df)-len(df.drop_duplicates()))
# 输出2

# 显示重复记录
df[df.duplicated()]

#  team position points
# 1	A	G	5
# 7	B	F	10

# 计算每个行的重复数
df.groupby(df.columns.tolist(), as_index=False).size()

#  team  position  points
#  A     F         10        1
#        G         5         2
#                  8         1
#  B     F         10        2
#        G         5         1
#                  7         1

分组获取数据框的前N行

有时我们需要获取每组中前几行信息,如体育赛事中前三名进入下一轮比赛。

import pandas as pd

# 示例数据
df = pd.DataFrame({'team': ['A', 'A', 'A', 'B', 'B', 'C'],
                   'conference': ['East', 'East', 'East', 'West', 'West', 'East'],
                   'points': [11, 8, 10, 6, 6, 5]})

# 按team分组,并取每组前两行记录
df.groupby('team').head(2).reset_index(drop=True)

# 	team	conference	points
# 0	A	East	11
# 1	A	East	8
# 2	B	West	6
# 3	B	West	6
# 4	C	East	5

# 按多列分组,并取前两行
df.groupby(['team', 'conference']).head(2).reset_index(drop=True)
# 	team	conference	points
# 0	A	East	11
# 1	A	East	8
# 2	B	West	6
# 3	B	West	6
# 4	C	East	5

计算唯一值示例

本节介绍如何对数据框中列计算其唯一值的数量。

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'B', 'B', 'C'],
                   'conference': ['East', 'East', 'East', 'West', 'West', 'East'],
                   'points': [11, 8, 10, 6, 6, 5]})

# 某列的唯一值
df.team.unique()
# array(['A', 'B', 'C'], dtype=object)

# 每列的唯一值
for col in df:
  print(df[col].unique())

# ['A' 'B' 'C']
# ['East' 'West']
# [11  8 10  6  5]

# 获取唯一值并排序
points = df.points.unique()
# 排序结果
points.sort()
# 显示结果
points

# array([ 5,  6,  8, 10, 11])

# 计算某列中值的数量
df.team.value_counts()

# A    3
# B    2
# C    1
# Name: team, dtype: int64

在这里插入图片描述

查找多列的唯一值

查找多列唯一值主要使用unique()和ravel()函数:

  • unique(): 按照外观顺序返回唯一值
  • ravel(): 返回扁平的数据序列
import pandas as pd

# 示例数据
df = pd.DataFrame({'col1': ['a', 'b', 'c', 'd', 'e'],
                   'col2': ['a', 'c', 'e', 'f', 'g'],
                   'col3': [11, 8, 10, 6, 6]})
# 返回多列组合的唯一值
pd.unique(df[['col1', 'col2']].values.ravel())

# array(['a', 'b', 'c', 'e', 'd', 'f', 'g'], dtype=object)
# 表示两列组合一起共有7个基元素(唯一值)

# 返回组合列唯一值的数量
uniques = pd.unique(df[['col1', 'col2']].values.ravel())

len(uniques)
# 7

# 唯一值按数据框形式返回
uniques = pd.unique(df[['col1', 'col2']].values.ravel())

pd.DataFrame(uniques)

# 	0
# 0	a
# 1	b
# 2	c
# 3	e
# 4	d
# 5	f
# 6	g

列中值出现次数

import pandas as pd

# 示例数据
df = pd.DataFrame({'team': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'],
                   'points': [25, 12, 15, 14, 19, 23, 25, 29],
                   'assists': [5, 7, 7, 9, 12, 9, 9, 4],
                   'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})

# 计数team列中B出现次数
df['team'].value_counts()['B']

# 4

# team列中每个值的出现次数
df['team'].value_counts()

# B    4
# A    2
# C    2

# assists列中数值出现次数
df['assists'].value_counts()[9]

# 3

# 每个值出现次数
df['assists'].value_counts()

# 9     3
# 7     2
# 5     1
# 12    1
# 4     1
# Name: assists, dtype: int64
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值