一張資料表我們一定會經常去篩選跟過濾資料,或者是針對符合條件的某些資料做運算跟修改,當然這些我們都能自己寫個副程式來篩選資料,或自己去設計篩選資料的演算法,但是今天我們都只會使用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
"""