相較於Series是一條資料,DataFrame可以說是一張表格,我們日常生活中所見的資料大多是以表格的方式呈現,因此DataFrame是整個Pandas的主力類別,也是讓Pandas被稱為python版Excel的原因,DataFrame大概像這個樣子
索引 | 品牌"型號 | 自動排檔 | 價格 |
---|---|---|---|
0 | Toyota 86 | False | 1300000 |
1 | Subaru BRZ | True | 1320000 |
2 | NISSAN GT-R | True | 6750000 |
4 | MAZDA MX-5 | False | 1340000 |
DataFrame是以字典來建立的
# 載入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
"""
DataFrame的存取方式如下
這裡要提的是DataFrame是一張資料表,因此既然是資料表,就會有欄跟列的區別,欄就是直的,列是橫的,這點很重要,當然DataFrame不僅能操作一格資料,也能直接對一整欄或一整列做操作,一整欄或一整列就是指一條資料,
因此從DataFrame取下一整欄或一整列的資料型態(類別)就是Series,所以Series的屬性和方法等等操作方式,也同樣適用於從DataFrame取下的一整欄或一整列的資料
# 載入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
"""
#操作一格資料
# brand欄位的第0筆資料
print(data["brand"][0]) # Toyota 86
# price欄位的第2筆資料
print(data["price"][2]) # 6750000
#操作一欄資料
#type()可以查看某個物件的類別
print(type(data["auto"])) # <class 'pandas.core.series.Series'>
print(data["auto"])
"""
0 False
1 True
2 True
3 False
Name: auto, dtype: bool
"""
print(data["auto"].dtype) # bool
#操作一列(一整筆)資料,透過DataFrame的loc屬性
#type()可以查看某個物件的類別
print(type(data.loc[3])) # <class 'pandas.core.series.Series'>
print(data.loc[3])
"""
brand MAZDA MX-5
auto False
price 1340000
Name: 3, dtype: object
"""
print(data.loc[3].size) # 3
#切片
#從第1列開始取,一共要取2列
print(data.loc[1:2])
"""
brand auto price
1 Subaru BRZ True 1320000
2 NISSAN GT-R True 6750000
"""
print(data.loc[1:2]["brand"])
"""
1 Subaru BRZ
2 NISSAN GT-R
"""
# 載入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
"""
# 大小
print(data.size) # 12,一共12格資料
# 形狀
print(data.shape) #(4, 3),4列3欄
# 索引
print(data.index) #RangeIndex(start=0, stop=4, step=1)
# 欄位
print(data.columns) #Index(['brand', 'auto', 'price'], dtype='object')