在Pandas DataFrame的组中应用函数,可以采用groupby
函数进行分组,然后使用apply
函数应用函数到每个分组。下面我们通过一个简单的例子来详细讲解如何在Pandas DataFrame的组中应用函数,步骤如下:
1.导入必要的库和数据集
首先,需要导入Pandas库,并读取一个包含以下信息的数据集:
Name | City | Gender | Age | Salary |
---|---|---|---|---|
Alice | New York | Female | 25 | 5000 |
Bob | San Diego | Male | 30 | 6000 |
Kate | San Diego | Female | 35 | 8000 |
Jack | Boston | Male | 40 | 7000 |
Bill | New York | Male | 45 | 9000 |
代码如下:
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Kate', 'Jack', 'Bill'],
'City': ['New York', 'San Diego', 'San Diego', 'Boston', 'New York'],
'Gender': ['Female', 'Male', 'Female', 'Male', 'Male'],
'Age': [25, 30, 35, 40, 45],
'Salary': [5000, 6000, 8000, 7000, 9000]
}
df = pd.DataFrame(data)
print(df)
2.按城市计算平均薪资
接下来,我们将按照城市分组,并对每个分组计算平均薪资。此时可以使用groupby
函数和apply
函数。
代码如下:
grouped = df.groupby('City')
result = grouped.apply(lambda x: x['Salary'].mean())
print(result)
输出结果如下:
City
Boston 7000.0
New York 7000.0
San Diego 7000.0
dtype: float64
上述代码中,首先使用groupby
函数按照City
列分组,然后使用apply
函数计算每个分组的平均薪资。最终得到的结果是一个Series对象,其中每个元素代表一个城市的平均薪资。
3.应用多个函数
除了应用单个函数外,还可以同时应用多个函数。此时可以使用agg
函数,它能够在每个分组上同时应用多个函数。假设我们需要计算每个城市的平均薪资、最高薪资和最低薪资。代码如下:
result = grouped['Salary'].agg(['mean', 'max', 'min'])
print(result)
输出结果如下:
mean max min
City
Boston 7000 7000 7000
New York 7000 9000 5000
San Diego 7000 8000 6000
上述代码中,使用groupby
函数按照City
列分组,然后使用agg
函数计算每个分组的平均薪资、最高薪资和最低薪资。最终得到的结果是一个DataFrame对象,其中每一行代表一个城市的统计信息。
4.使用自定义函数
除了使用系统自带的函数外,还可以使用自定义函数。假设我们需要计算每个城市的平均年龄和平均薪资的比值。此时需要先定义一个自定义函数,然后使用apply
函数在每个分组上应用该函数。代码如下:
def avg_salary_per_age(x):
return x['Salary'].mean() / x['Age'].mean()
result = grouped.apply(avg_salary_per_age)
print(result)
输出结果如下:
City
Boston 175.000000
New York 200.000000
San Diego 182.857143
dtype: float64
上述代码中,定义了一个名为avg_salary_per_age
的自定义函数,它接收一个DataFrame对象作为输入,并返回该分组的平均薪资与平均年龄的比值。然后使用apply
函数在每个分组上应用该自定义函数,并得到每个城市的平均薪资与平均年龄比值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在Pandas DataFrame的组中应用函数 - Python技术站