本文共 1992 字,大约阅读时间需要 6 分钟。
在数据处理领域,Python的Pandas库提供了强大的工具来高效地管理和分析数据。groupby()和.apply()是两种常用的方法,能够帮助我们将数据按照特定条件分组,并对每个组进行操作。以下将通过具体案例详细阐述如何利用这两种方法从分组数据中提取所需信息。
首先,我们需要创建一个包含用户、物品和价格的DataFrame。以下是一个简单的代码示例:
import pandas as pd# 创建示例数据data = { 'user': ['Alice', 'Bob', 'Alice', 'Bob', 'Alice', 'Bob'], 'item': ['apple', 'banana', 'orange', 'pear', 'grape', 'peach'], 'price': [1.5, 2.0, 0.9, 3.0, 1.2, 1.8]}# 创建DataFramedf = pd.DataFrame(data) 接下来,我们使用groupby()方法对用户进行分组,并对每个用户的价格数据进行汇总。以下是具体实现:
# 使用groupby()对用户分组,并计算每个用户的总消费金额user_sum = df.groupby('user')['price'].apply(lambda x: x.sum()).reset_index(name='total_spent')# 计算每个用户的平均消费金额average_expense = user_sum['total_spent'] / len(df['user'].unique()) 为了验证上述方法的正确性,我们可以设计以下测试用例:
# 创建测试数据data = { 'user': ['Alice', 'Bob', 'Alice', 'Bob', 'Alice', 'Bob'], 'item': ['apple', 'banana', 'orange', 'pear', 'grape', 'peach'], 'price': [1.5, 2.0, 0.9, 3.0, 1.2, 1.8]}# 创建DataFramedf = pd.DataFrame(data)# 计算每个用户的总消费金额user_sum = df.groupby('user')['price'].apply(lambda x: x.sum()).reset_index(name='total_spent')# 计算每个用户的平均消费金额average_expense = user_sum['total_spent'] / len(df['user'].unique())# 验证结果assert average_expense[0] == 2.4 # Alice的总消费金额为1.5+3.0=4.5,平均消费金额为4.5/3=1.833assert average_expense[1] == 5.8 # Bob的总消费金额为2.0+3.0+1.8=7.8,平均消费金额为7.8/3=2.58 除了上述简单的数据处理场景,我们还可以将groupby()和.apply()方法应用于更复杂的场景。例如,在自然语言处理或推荐系统中,以下是一个典型的应用:
# 创建电影评分数据data = { 'movie': ['Inception', 'Interstellar', 'The Dark Knight', 'The Lord of the Rings: The Return of the King'], 'rating': [9.8, 8.6, 9.0, 8.7]}# 创建DataFramedf = pd.DataFrame(data)# 对每部电影的评分求总和movie_sum = df.groupby('movie')['rating'].apply(lambda x: x.sum()).reset_index(name='total_rating')# 计算每部电影的平均评分average_rating = movie_sum['total_rating'] / len(df['movie'].unique())# 打印结果print(average_rating) 通过上述案例,我们可以清晰地看到groupby()和.apply()方法的强大之处。无论是简单的数据汇总,还是复杂的数据分析,这两种方法都能够高效地提供所需的信息。只要熟练掌握它们的使用方法,就能在数据处理中大大提升效率。
转载地址:http://bmafk.baihongyu.com/