iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
自我挑戰組

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

Day 25|Interview Query - Over 100 Dollars

  • 分享至 

  • xImage
  •  

■ 題目|Interview Query - Over 100 Dollars

You’re given two dataframes: transactions and products.
The transactions dataframe contains transaction ids, product ids, and the total amount of each product sold.
The products dataframe contains product ids and prices.
Write a function to return a dataframe containing every transaction with a total value of over $100. Include the total value of the transaction as a new column in the dataframe.

■ 解題思路

  1. 釐清題意:保留總價值超過100元的資料,並以新欄位呈現
  2. 操作技巧:
    (1) 關聯合併 - transactions 和 products 依相同欄位進行合併 【Day 17|資料合併的三種常用語法
    (2) 資料運算 - 透過乘法計算總價值 【Day 8|資料運算的加減乘除
    (3) 資料篩選 - 篩選總價值超過100的資料 【Day 10|資料的篩選與過濾
    (4) 檢查結果 - 需刪除 price 欄位
  3. 實作練習:
    import pandas as pd
    def transactions_over_100(df_transactions: pd.DataFrame, df_products: pd.DataFrame):
        # 關聯合併 merge()
        new = pd.merge(df_transactions,df_products,on='product_id')
        # total value over 100
        new['total_value'] = new['amount'] * new['price']
        # 資料篩選
        con = new['total_value'] > 100
        # 刪除price欄位
        new.drop(columns='price',inplace=True)
        return new.loc[con]
    
  4. 輸出結果:
    https://ithelp.ithome.com.tw/upload/images/20231010/20162238RTFfpaSXdg.jpg

■ 操作補充

  Pandas 中的 drop**( index = '索引值名稱',** columns = '欄位名稱', inplace = True 或 False) 操作目的在於「刪除行或列的資料」,與 dropna( ) 刪除缺失值使用時機不同。

  • 參數 index:依據索引值,刪除 row 的資料。
  • 參數 columns:依據欄位名稱,刪除 column 的資料。
  • 參數 inplace:預設為 False,不改變原本數據。

嗨,我是 Eva,一位正在努力跨進資料科學領域的女子!
如果有任何不理解、錯誤或其他方法想分享的話,歡迎留言!
喜歡的話,也歡迎按讚訂閱唷!我們明天見!


上一篇
Day 24|Interview Query - Good Grades and Favorite Color
下一篇
Day 26|Interview Query - Rain on Rainy Days
系列文
Pandas|資料前處理工具 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言