iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 19
0
AI & Data

時間管理大師-時間序列分析終極密技系列 第 19

[Day19]難定紛紛甲子年-Pandas高手級,DataFrame操作寶典第3卷

  • 分享至 

  • xImage
  •  

DataFrame資料篩選

一張資料表我們一定會經常去篩選跟過濾資料,或者是針對符合條件的某些資料做運算跟修改,當然這些我們都能自己寫個副程式來篩選資料,或自己去設計篩選資料的演算法,但是今天我們都只會使用Pandas內建的方法來時做,這全都是為了效能,Pandas裡面所有的內建方法效能都非常的香,尤其是在資料量非常大的時候,更能夠看出他的威力,下面我們來示範一下

過濾資料

# 載入pandas
import pandas as pd

if __name__ == "__main__":
    # 以字典來建立DataFrame
    d = {
        "brand":["Toyota 86", "Subaru BRZ", "NISSAN GT-R", "MAZDA MX-5"],
        "auto":[False, True, True, False],
        "price":[1300000, 1320000, 6750000, 1340000],
        }
    data = pd.DataFrame(d)
    print(data)## 新增刪除操作
    """
             brand   auto    price
    0    Toyota 86  False  1300000
    1   Subaru BRZ   True  1320000
    2  NISSAN GT-R   True  6750000
    3   MAZDA MX-5  False  1340000
    """

    #利用布林遮罩來過濾資料
    mask = data["auto"]  == False
    print(mask)
    """
    0     True
    1    False
    2    False
    3     True
    Name: auto, dtype: bool
    """
    print(data[mask])
    """
            brand   auto    price
    0   Toyota 86  False  1300000
    3  MAZDA MX-5  False  1340000
    """
    print(data[mask]["brand"])
    """
    0     Toyota 86
    3    MAZDA MX-5
    Name: brand, dtype: object
    """
    print(data[mask].iloc[0])
    """
    brand    Toyota 86
    auto         False
    price      1300000
    Name: 0, dtype: object
    """
    #計算手排車的平均價格
    print(data[mask]["price"].mean()) #1320000.0

修改符合條件的資料

# 載入pandas
import pandas as pd

if __name__ == "__main__":
    # 以字典來建立DataFrame
    d = {
        "brand":["Toyota 86", "Subaru BRZ", "NISSAN GT-R", "MAZDA MX-5"],
        "auto":[False, True, True, False],
        "price":[1300000, 1320000, 6750000, 1340000],
        }
    data = pd.DataFrame(d)
    print(data)## 新增刪除操作
    """
             brand   auto    price
    0    Toyota 86  False  1300000
    1   Subaru BRZ   True  1320000
    2  NISSAN GT-R   True  6750000
    3   MAZDA MX-5  False  1340000
    """

    #利用布林遮罩來過濾資料
    mask = data["auto"] == False
    #將auto欄位為False的那些資料(手排車)的price欄位設為0
    data["price"][mask] = 0
    print(data)
    """
             brand   auto    price
    0    Toyota 86  False        0
    1   Subaru BRZ   True  1320000
    2  NISSAN GT-R   True  6750000
    3   MAZDA MX-5  False        0
    """

上一篇
[Day18]年難留,時易損-Pandas學長級,DataFrame操作寶典第2卷
下一篇
[Day20]負盡狂名十五年-Pandas大師級,DataFrame操作寶典第4卷
系列文
時間管理大師-時間序列分析終極密技30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言