請在終端機底下輸入這個,謝謝pip install pandas
老樣子,像這樣
import pandas as pd
如同numpy的簡稱,pd是世俗公認的pandas簡稱
Series是Pandas最基礎的類別,簡單來說Series就是一條資料,他說一維的資料型態,長的像這樣
|索引|1|2|3|4|5|6|7|
|---|---|---|---|---|---|---|
|資料|33|23|66|11|35|42|88|
我們使用列表來建立Series
# 載入pandas
import pandas as pd
if __name__ == "__main__":
# 以列表來建立Series
l = [33, 23, 66, 11, 35, 42, 88]
s = pd.Series(l)
print(s)
"""
印出
0 33
1 23
2 66
3 11
4 35
5 42
6 88
dtype: int64
"""
# 存取
print(s[4])
# 印出 35
# 載入pandas
import pandas as pd
if __name__ == "__main__":
# 以列表來建立Series
l = [33, 23, 66, 11, 35, 42, 88]
s = pd.Series(l)
# 查看大小
print(s.size)
# 印出 7
# 查看資料型態
print(s.dtype)
# 印出 int64
# 查看資料形狀
print(s.shape)
# 印出 (7,)
# 查看索引
print(s.index)
# 印出 RangeIndex(start=0, stop=7, step=1),傳回的物件RangeIndex可以視為下方的列表
# [0, 1, 2, 3, 4, 5, 6],從0開始,到7停止,每個元素相差為1的列表,所以這的Series的索引就是0~6
# 載入pandas
import pandas as pd
if __name__ == "__main__":
# 以列表來建立Series
l = [33, 23, 66, 11, 35, 42, 88]
s = pd.Series(l)
# 加總
print(s.sum()) # 298
# 最大值
print(s.max()) # 88
# 最小值
print(s.min()) # 11
# 連乘運算
print(s.prod()) # 71281758240
# 平均
print(s.mean()) # 42.57142857142857
# 中位數
print(s.median()) # 35
# 標準差
print(s.std()) # 26.273288988737484
# 找前n筆資料
print(s.head(3))
"""
0 33
1 23
2 66
dtype: int64
"""
# 找最大的n筆資料
print(s.nlargest(3))
"""
6 88
2 66
5 42
dtype: int64
"""
# 找最小的n筆資料
print(s.nsmallest(3))
"""
3 11
1 23
0 33
dtype: int64
"""
# 載入pandas
import pandas as pd
if __name__ == "__main__":
# 以列表來建立Series,索引為i
l = [33, 23, 66, 11, 35, 42, 88]
i = ["貓", "狗", "羊", "豬", "雞", "牛", "馬"]
s = pd.Series(l, index = i)
print(s)
"""
貓 33
狗 23
羊 66
豬 11
雞 35
牛 42
馬 88
dtype: int64
"""
print(s.index)
# Index(['貓', '狗', '羊', '豬', '雞', '牛', '馬'], dtype='object')
print(s["羊"])
# 66
相較於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')