三分钟学会apply, merge, groupby, agg的用法

       在数据分析和编程中,applymergegroupbyagg 是处理数据集时常用的操作。下面举一个简单的例子来说明这些操作是如何使用的:

       假设我们有两个数据集,一个是关于书籍的销售数据,另一个是关于书籍的详细信息。

 

        首先创建我们需要的数据集:

import numpy as np
import pandas as pd

df1 = pd.DataFrame({
    'BookID': ['B001', 'B002', 'B003', 'B001'],
    'SaleDate': ['2021-01-10', '2021-01-15', '2021-01-20', '2021-01-25'],
    'Price': [20.00, 15.00, 25.00, 20.00]
})
df2 = pd.DataFrame({
    'BookID': ['B001', 'B002', 'B003'],
    'Title': ['The Great Book', 'The Adventure', 'The Mystery'],
    'Author': ['John Doe', 'Jane Smith', 'Bob Johnson'],
    'Genre': ['Fiction', 'Adventure', 'Mystery']
})

Apply

   apply 函数可以对数据集中的每个元素应用一个函数。例如,如果我们想要将价格转换为美

元,可以使用 apply,这里我使用了匿名函数: 

df1['PriceUSD'] = df1['Price'].apply(lambda x: '$' + str(x))
print(df1)

         运行结果如下: 

  BookID    SaleDate  Price PriceUSD
0   B001  2021-01-10   20.0    $20.0
1   B002  2021-01-15   15.0    $15.0
2   B003  2021-01-20   25.0    $25.0
3   B001  2021-01-25   20.0    $20.0

Merge

   merge 用于合并两个数据集,通常是基于一个或多个键。例如,我们可以将销售数据和书籍信息合并,这个例子中的键就是BookID:

merged_data = df1.merge(df2, on='BookID')
#on='BookID'指的是pandas 按照 BookID 列的值将两个 DataFrame 对应的行连接起来。
#也就是说,BookID 列在两个 DataFrame 中都存在,
# 并且它的值将用来确定如何将行配对。
print(merged_data)

       运行结果如下,可以看到两个表格被合并了起来:

  BookID    SaleDate  Price PriceUSD           Title       Author      Genre
0   B001  2021-01-10   20.0    $20.0  The Great Book     John Doe    Fiction
1   B002  2021-01-15   15.0    $15.0   The Adventure   Jane Smith  Adventure
2   B003  2021-01-20   25.0    $25.0     The Mystery  Bob Johnson    Mystery
3   B001  2021-01-25   20.0    $20.0  The Great Book     John Doe    Fiction

Groupby

   groupby 用于根据某个或某些对数据集进行分组。例如,我们可以按书籍的 Genre 分组,然后计算每种类型书籍的平均价格:

genre_avg_price = merged_data.groupby('Genre')['Price'].mean()
# mean()取相同题材的书籍的平均price

print(genre_avg_price)

       结果如下:

Genre
Adventure    15.0
Fiction      20.0
Mystery      25.0
Name: Price, dtype: float64

Agg

   aggaggregate 的缩写,用于对分组后的数据集应用聚合函数。例如,我们可以计算每个 Genre 的总销售额:

genre_total_sales = merged_data.groupby('Genre')['Price'].agg('sum')
print(genre_total_sales)

         结果如下:

Genre
Adventure    15.0
Fiction      40.0
Mystery      25.0
Name: Price, dtype: float64

        可以看出,这和下面这行代码的效果是一样的。

genre_total_sales = merged_data.groupby('Genre')['Price'].sum()
print(genre_total_sales)

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值