今天结束了pandas库的使用,接下去是和实际案例相结合
import pandas as pd
data1 = {'ID': ['000001', '000002', '000003', '000004', '000005', '000006', '000007'],
'name': ['qqq', 'aaa', 'zzz', 'www', 'sss', 'xxx', 'eee'],
'gender': [True, False, True, False, True, False, True],
'age': [16, 20, 18, 18, 17, 18, 16],
'height': [1.88, 1.78, 1.81, 1.86, 1.74, 1.75, 1.76]
}
students = pd.DataFrame(data1)
data2 = {'SID':['000001','000001','000002','000003',
'000003','000003','000004','000004',
'000005','000006','000006'],
'CID':['A01','A02','A01','A01','A02',#这里卡了半天,报错:ValueError: arrays must all be same length,原因是这边少了个“,”
'B01','A01','A03','B01','A02','B01'],
'score':[56,78,90,74,86,89,67,80,77,76,90]
}
scores = pd.DataFrame(data2)
#接下来,连接data1和data2,按列链接
#第一个参数数据和第二个参数数据按照左边的ID 和右边的SID根据相同的规则排序,叫外连接
#如果将scores里面的SID改成SID,那就仅仅需要(students,scores)即可完成链接
#print(pd.merge(students,scores,left_on='ID',right_on='SID'))
#左外连接和右外连接是不一样的,how后面接的就是左、右连接方式,当数据是空值的时候,现实的是NaN,表示当前是空值
#print(pd.merge(students,scores,left_on='ID',right_on='SID',how='left'))
#查询数据,isna是检测缺失的值NaN,ture就是空值,空值不是没有值,而是他的值显示不出来
#frame = pd.merge(students,scores,left_on='ID',right_on='SID',how='left')
#print (frame[pd.isna(frame['score']) == True][['name','gender']])#后面的那个[]就是显示要输出的值
#按照索引号链接
#首先更改索引号
#scores.index = [0,0,1,2,2,2,3,3,4,5,5]
#print(students.join(scores))#当调换students和scores的位置的时候,表格的顺序也会变化,在前面的是主表格,要是在前面没有数据,在后面就也没有数据显示了
#结合统计和分组的例子
frame = pd.merge(students,scores,left_on = 'ID',right_on = 'SID')
print(frame[['score']].groupby(frame['name']).mean())#或者print(frame.groupby(frame['name'])[['score']].mean())#效果一样
还有,为什么两次[]的原因还是没找到,一个[]代表的是列表数据,那两个呢?列表里面的列表的数据?