python pandas行、列求和及累加求和

data[‘合计’]=data.apply(lambda x: x.sum(),axis=1) #按列相加各行数

data.loc[‘小计’]=data.apply(lambda x: x.sum(),axis=0) #按行相加各列,增加小计,

要注意的是小计中变成字符,序列变object

要时刻关注data.中type的变化,可以用
data.dtypes
显示各列的type,可以用
data.astype(float) 转化,注意转化时,有时会出错

chengji=[[100,95,100,99],[90,98,99,100],[88,95,98,88],[99,98,97,87],[96.5,90,96,85],[94,94,93,91]]
data=pd.DataFrame(chengji,columns=['语文','类别','数学','政治'])
data['合计']=data.apply(lambda x: x.sum(),axis=1)  #按列相加各行数
print('合计',data)
data.loc['小计']=data.apply(lambda x: x.sum(),axis=0) #按行相加各列,增加小计,是字符,序列变object
print('小计',data)
data['累加值']=0
data.drop('小计',inplace=True)
print('删除小计',data)
data.sort_index(inplace=True)
print('重排序列',data)
data.astype(float)
data['累加值']=data['合计'].cumsum()
print('累计data',data)
data.sort_values(by=['合计','语文'] , ascending=[False,False],inplace=True)  #按多列值排序,ascending=False降序
#data.sort_values(by='语文',axis=1,ascending=True, inplace=True, na_position='last') 
#重建索引会把原索引值变成object
data['排名']=data['合计'].rank(ascending=0,method='min')
print (data)
data.sort_index(inplace=True)
print(data)
data =  data.reset_index(drop=True)
data.loc[1:3,'语文']=""
data.loc[4,'语文']=None  #空值为none 或np.nan
print(data)

print(data.dtypes)
data.fillna(value=0,inplace=True)  
# "所有值全为缺失值才删除 df.dropna(how='all')
# axis:维度,axis=0表示index行,axis=1表示columns列,默认为0
#how:"all"表示这一行或列中的元素全部缺失(为nan)才删除这一行或列,"any"表示这一行或列中只要有元素缺失,就删除这一行或列
#thresh:一行或一列中至少出现了thresh个才删除。
#subset:在某些列的子集中选择出现了缺失值的列删除,不在子集中的含有缺失值得列或行不会删除(有axis决定是行还是列)
#inplace:刷选过缺失值得新数据是存为副本还是直接在原数据上进行修改。
print('填充缺失值',data)
data.replace("",0,inplace=True) 
print('填充空值',data) 
print(data.loc[data.index==1,'累加值'])
print('类别数量',data['类别'])
print('类别=95',data.loc[data['类别']==95,'累加值'])
print(data.loc[:,'合计']-data.loc[:,'语文'])

先排序后,可以进行累加值,累加的列一定要存在,可以用data[‘累加值’]=0 建一个值为0的列。
用data[‘累加值’]=data[‘合计’].cumsum() 把合计的值累加,一定要注意,是按照排列的顺序相加。

合计 语文 类别 数学 政治 合计
0 100.0 95 100 99 394.0
1 90.0 98 99 100 387.0
2 88.0 95 98 88 369.0
3 99.0 98 97 87 381.0
4 96.5 90 96 85 367.5
5 94.0 94 93 91 372.0
小计 语文 类别 数学 政治 合计
0 100.0 95.0 100.0 99.0 394.0
1 90.0 98.0 99.0 100.0 387.0
2 88.0 95.0 98.0 88.0 369.0
3 99.0 98.0 97.0 87.0 381.0
4 96.5 90.0 96.0 85.0 367.5
5 94.0 94.0 93.0 91.0 372.0
小计 567.5 570.0 583.0 550.0 2270.5
删除小计 语文 类别 数学 政治 合计 累加值
0 100.0 95.0 100.0 99.0 394.0 0
1 90.0 98.0 99.0 100.0 387.0 0
2 88.0 95.0 98.0 88.0 369.0 0
3 99.0 98.0 97.0 87.0 381.0 0
4 96.5 90.0 96.0 85.0 367.5 0
5 94.0 94.0 93.0 91.0 372.0 0
重排序列 语文 类别 数学 政治 合计 累加值
0 100.0 95.0 100.0 99.0 394.0 0
1 90.0 98.0 99.0 100.0 387.0 0
2 88.0 95.0 98.0 88.0 369.0 0
3 99.0 98.0 97.0 87.0 381.0 0
4 96.5 90.0 96.0 85.0 367.5 0
5 94.0 94.0 93.0 91.0 372.0 0
累计data 语文 类别 数学 政治 合计 累加值
0 100.0 95.0 100.0 99.0 394.0 394.0
1 90.0 98.0 99.0 100.0 387.0 781.0
2 88.0 95.0 98.0 88.0 369.0 1150.0
3 99.0 98.0 97.0 87.0 381.0 1531.0
4 96.5 90.0 96.0 85.0 367.5 1898.5
5 94.0 94.0 93.0 91.0 372.0 2270.5
语文 类别 数学 政治 合计 累加值 排名
0 100.0 95.0 100.0 99.0 394.0 394.0 1.0
1 90.0 98.0 99.0 100.0 387.0 781.0 2.0
3 99.0 98.0 97.0 87.0 381.0 1531.0 3.0
5 94.0 94.0 93.0 91.0 372.0 2270.5 4.0
2 88.0 95.0 98.0 88.0 369.0 1150.0 5.0
4 96.5 90.0 96.0 85.0 367.5 1898.5 6.0
语文 类别 数学 政治 合计 累加值 排名
0 100.0 95.0 100.0 99.0 394.0 394.0 1.0
1 90.0 98.0 99.0 100.0 387.0 781.0 2.0
2 88.0 95.0 98.0 88.0 369.0 1150.0 5.0
3 99.0 98.0 97.0 87.0 381.0 1531.0 3.0
4 96.5 90.0 96.0 85.0 367.5 1898.5 6.0
5 94.0 94.0 93.0 91.0 372.0 2270.5 4.0
语文 类别 数学 政治 合计 累加值 排名
0 100 95.0 100.0 99.0 394.0 394.0 1.0
1 98.0 99.0 100.0 387.0 781.0 2.0
2 95.0 98.0 88.0 369.0 1150.0 5.0
3 98.0 97.0 87.0 381.0 1531.0 3.0
4 None 90.0 96.0 85.0 367.5 1898.5 6.0
5 94 94.0 93.0 91.0 372.0 2270.5 4.0
语文 object
类别 float64
数学 float64
政治 float64
合计 float64
累加值 float64
排名 float64
dtype: object
填充缺失值 语文 类别 数学 政治 合计 累加值 排名
0 100 95.0 100.0 99.0 394.0 394.0 1.0
1 98.0 99.0 100.0 387.0 781.0 2.0
2 95.0 98.0 88.0 369.0 1150.0 5.0
3 98.0 97.0 87.0 381.0 1531.0 3.0
4 0 90.0 96.0 85.0 367.5 1898.5 6.0
5 94 94.0 93.0 91.0 372.0 2270.5 4.0
填充空值 语文 类别 数学 政治 合计 累加值 排名
0 100.0 95.0 100.0 99.0 394.0 394.0 1.0
1 0.0 98.0 99.0 100.0 387.0 781.0 2.0
2 0.0 95.0 98.0 88.0 369.0 1150.0 5.0
3 0.0 98.0 97.0 87.0 381.0 1531.0 3.0
4 0.0 90.0 96.0 85.0 367.5 1898.5 6.0
5 94.0 94.0 93.0 91.0 372.0 2270.5 4.0
1 781.0
Name: 累加值, dtype: float64
类别数量 0 95.0
1 98.0
2 95.0
3 98.0
4 90.0
5 94.0
Name: 类别, dtype: float64
类别=95 0 394.0
2 1150.0
Name: 累加值, dtype: float64
0 294.0
1 387.0
2 369.0
3 381.0
4 367.5
5 278.0
dtype: float64