iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0
自我挑戰組

Pandas|資料前處理工具 系列 第 29

Day 29|Interview Query - Customer Analysis

  • 分享至 

  • xImage
  •  

■ 題目|Interview Query - Customer Analysis

You’re given a dataframe containing sales data from a grocery store chain with columns for customer ID, gender, and date of sale.

Create a new dataset with summary level information on their purchases including the columns: customer_idgendermost_recent_saleorder_count

  • most_recent_sale should display the date of the customer’s most recent purchase.
  • order_count should display the total number of purchases that the customer has made.

■ 解題思路

  1. 釐清題意:整理最近購買時間 most_recent_sale 、購買次數 order_count
  2. 觀察資料:有重複的 customer_id 購買紀錄,可利用分組計算次數、最大值的時間
  3. 操作步驟:
    (1) 分組 - 需保留 customer_id 和 gender,依其分組。
    (2) 聚合 - 計算購買次數、保留最近購買時間 【Day 18|資料的分組和聚合
  4. 實作練習:
    import pandas as pd
    def customer_analysis(df):
        # create a new dataframe / 建立符合題意的 dataframe
        new = df.groupby(['customer_id','gender']).agg( most_recent_sale=('date of sale','max'), order_count = ('date of sale','count'))
        # reset the index / 重製索引
        new.reset_index(inplace=True)
        return new
    
  5. 輸出結果:
    https://ithelp.ithome.com.tw/upload/images/20231014/20162238QHhUdT0Ij1.jpg

■ 操作補充

  使用 Pandas 分組 groupby('欄位名稱') 操作後,索引值將被指定欄位所取代,如需「重新設定索引值」,可搭配 reset_index( inplace = True 或 False ) 協助處理資料內容。

  • 參數 inplace:是否改變原始數據,預設為 False。

嗨,我是 Eva,一位正在努力跨進資料科學領域的女子!
今天是本次鐵人賽的最後一道練習題,連同前面五天,總共分享六題的 Pandas 練習題,也越能理解基礎功的重要,如果大家有興趣的話,也可以繼續轉往 LeetCode 試題,有機會我會繼續在 Medium 分享,歡迎來追蹤喔!我們明天見!


上一篇
Day 28|Interview Query - Complete Addresses
下一篇
Day 30|Pandas 完賽!
系列文
Pandas|資料前處理工具 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言