sum函数语法
DataFrame.sum(axis=None, skipna=None, level=None, numeric_only=None, min_count=0, **kwargs)
axis 轴,0和1
skipna 排除所有空值
创建DataFrame表
import pandas as pd
df = pd.DataFrame({'A':[0,1,2], 'B':[3,4,5]})
print(df)
#输出
A B
0 0 3
1 1 4
2 2 5
默认情况下,sum函数是在列上求和
print(df.sum())
#输出
A 3
B 12
dtype: int64
在行上求和,设置axis=1参数
print(df.sum(axis=1))
#输出
0 3
1 5
2 7
如果在整个DataFrame上调用
print(df.values.sum())
#输出
15
pandas groupby函数
创建DataFrame表
company=["A","B","C"]
data=pd.DataFrame({
"company":[company[x] for x in np.random.randint(0,len(company),10)],
"salary":np.random.randint(5,50,10),
"age":np.random.randint(15,50,10)
}
)
#输出
company salary age
0 C 41 40
1 B 28 15
2 B 28 18
3 C 8 48
4 C 16 18
5 B 30 24
6 C 49 39
7 B 38 17
8 C 28 35
9 B 48 42
把company字段通过groupby划分
data1 = data.groupby('company')
print(list(data1))
#输出
[('A', company salary age
0 A 21 25
2 A 39 15
3 A 12 46
4 A 22 41
5 A 40 37), ('B', company salary age
1 B 36 45), ('C', company salary age
6 C 27 33
7 C 29 17
8 C 25 39
9 C 26 46)]
agg聚合操作
聚合操作是groupby后常见的操作,聚合操作可以用来求最大值,最小值,中位数,平均数等
求不同公司的平均年龄和薪水
data1 = data.groupby('company').agg('mean')
print(data1)
求不同公司的平均年龄及薪水中位数
data1 = data.groupby('company').agg({'age': 'mean', 'salary': 'median'})
print(data1)
#输出
age salary
company
A 32.00 33.0
B 23.50 14.5
C 22.25 33.0
transform增加一列
data['avg_salary'] = data.groupby('company')['salary'].transform('mean')
print(data)
#输出
company salary age avg_salary
0 A 42 22 31.500000
1 B 6 32 28.666667
2 C 48 49 37.666667
3 C 20 35 37.666667
4 A 38 23 31.500000
5 B 32 15 28.666667
6 B 48 46 28.666667
7 A 25 32 31.500000
8 C 45 25 37.666667
9 A 21 32 31.500000
0 Comments