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
Categories: python

0 Comments

发表评论

Avatar placeholder

邮箱地址不会被公开。 必填项已用*标注