DataFrame的运算种类:
DataFrme 看成事Series的字典对象 , 列标签就是字典的键, 每一列数据就是字典的值
1.DataFrame 和 numpy 广播机制
具有广播机制
添加的时候索引对不上可以使用函数add()
df1.add(df, fill_value=0) 给空值补0
2.DataFrame 和 DataFrame
同Series一样:
在运算中自动对齐相同索引的数据
如果索引不对应,则补NaN
3.DataFrame 和 Series
Series 默认与DataFrame 的列索引对齐进行运算
重要:
使用python操作符:以行为单位操作(参数必须是行),对所有行都有效。
使用pandas操作函数:
axis = 0 以列为单位操作(参数必须是列),对所有列都有效
axis = 1 以行为单位操作(参数必须是行),对所有行都有效
【注意】fill_value在df和series之间运算时,不能使用
练习6:
假设ddd是期中考试成绩,ddd2是期末考试成绩,请自由创建ddd2,并将其与ddd相加,求期中期末平均值。
假设张三期中考试数学被发现作弊,要记为0分,如何实现?
李四因为举报张三作弊立功,期中考试所有科目加100分,如何实现?
后来老师发现有一道题出错了,为了安抚学生情绪,给每位学生每个科目都加10分,如何实现?
df1 = DataFrame(data=np.random.randint(0,100,size=(5,3)), index=list("ABCDE"), columns=["python","java","php"])
df2 = DataFrame(data=np.random.randint(0,100,size=(5,3)), index=list("ABCDE"), columns=["python","java","php"])
display(df1, df2)
1.(df1 + df2)/2
2.df1.loc["B","java"] = 0
3.df1.loc["C"] += 100
4.df1 += 10