本文介绍的是pandas库中如何实现数据的分组统计:
本文案例的数据使用的是numpy
库随机生成数据:
name_list = ["小明","小红","张三","李四","王五","小孙","小周"] # 姓名
subject_list = ["语文","数学","英文","生物","物理","地理",'化学'] # 科目
time_list = ['上','下'] # 上下学期
grade_list = [1,2,3,4,5,6] # 几年级
# np.random.choice(list(range(50,101)),30) 同下效果
score_list = np.random.randint(50,100,30).tolist() # 0-100之间选择30个数
data = pd.DataFrame({
"name": np.random.choice(name_list, 30, replace=True), # 默认也是放回抽样
"subject": np.random.choice(subject_list, 30),
"scoer": score_list,
"time": np.random.choice(time_list, 30),
"grade": np.random.choice(grade_list, 30)
})
data
因为数据是随机生成的,我们需要检查是否有出现这种情况:name、subject、time、grade4个字段相同,但是score出现了两次,防止数据不规范。写了一个循环来进行判断:
# 写个循环判断是否有重复行的数据
for i in range(len(data)):
for j in range(len(data)): # 当name、subject、time、grade相同的时候,分数却不同,这样的数据可能存在
if data.iloc[i,0] == data.iloc[j,0] and data.iloc[i,1] == data.iloc[j,1] and data.iloc[i,3] == data.iloc[j,3] and data.iloc[i,4] == data.iloc[j,4] and i != j:
print(data.iloc[i,]) # 如果存在,打印出来这样的数据
print(j) # 重复数据的时候j值
print(i) # 相同数据时候i值
print("没有重复数据")
果然有上述不满足要求的数据:
我们把小红的这物理学科在3年级下学期的成绩找出来:当使用and
连接多个条件的时候会出现如下的报错!!!
将每个条件用()
单独包裹起来,同时and
需要改成&
即可解决:
成功解决!这个报错是很常见的
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
需要进行去重统计:
data.groupby("subject")["name"].nunique() # 去重统计
import pandas as pd
df = pd.DataFrame({
'group': [1, 1, 2, 3, 3, 3, 4],
'param': ['a', 'a', 'b', np.nan, 'a', 'a', np.nan]
})
直接使用groupby
函数和nunique
方法:
整体方法说明:
分步骤解释:
1、找出数据不是null的值
2、统计para参数中的唯一值
type(df1) # df1的类型是Series型数据
3、使用from_records
方法来生成数据
4、通过stack方法进行翻转
下面记录pandas中from_records
方法的使用:
DataFrame.from_records(data, index=None, exclude=None, columns=None, coerce_float=False, nrows=None)[source]
Convert structured or record ndarray to DataFrame. Creates a DataFrame object from a structured ndarray, sequence of tuples or dicts, or DataFrame.
使用的案例来自官网:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有