Pandas 數據結構 - DataFrame
DataFrame 是一個表格型的數據結構,它含有一組有序的列,每列可以是不同的值類型(數值、字符串、布爾型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 組成的字典(共同用一個索引)。
DataFrame 構造方法如下:
pandas.DataFrame( data, index, columns, dtype, copy)
參數說明:
-
data:一組數據(ndarray、series, map, lists, dict 等類型)。
-
index:索引值,或者可以稱為行標簽。
-
columns:列標簽,默認為 RangeIndex (0, 1, 2, …, n) 。
-
dtype:數據類型。
-
copy:拷貝數據,默認為 False。
Pandas DataFrame 是一個二維的數組結構,類似二維數組。
實例 - 使用列表創建
data = [['Google',10],['Runoob',12],['Wiki',13]]
df = pd.DataFrame(data,columns=['Site','Age'],dtype=float)
print(df)
輸出結果如下:
以下實例使用 ndarrays 創建,ndarray 的長度必須相同, 如果傳遞了 index,則索引的長度應等於數組的長度。如果沒有傳遞索引,則默認情況下,索引將是range(n),其中n是數組長度。
ndarrays 可以參考:NumPy Ndarray 對象
實例 - 使用 ndarrays 創建
data = {'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, 12, 13]}
df = pd.DataFrame(data)
print (df)
輸出結果如下:
從以上輸出結果可以知道, DataFrame 數據類型一個表格,包含 rows(行) 和 columns(列):
還可以使用字典(key/value),其中字典的 key 為列名:
實例 - 使用字典創建
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
print (df)
輸出結果為:
a b c 0 1 2 NaN 1 5 10 20.0
沒有對應的部分數據為 NaN。
Pandas 可以使用 loc 屬性返回指定行的數據,如果沒有設置索引,第一行索引為 0,第二行索引為 1,以此類推:
實例
data = {
"calories": [420, 380, 390],
"duration": [50, 40, 45]
}
# 數據載入到 DataFrame 對象
df = pd.DataFrame(data)
# 返回第一行
print(df.loc[0])
# 返回第二行
print(df.loc[1])
輸出結果如下:
calories 420 duration 50 Name: 0, dtype: int64 calories 380 duration 40 Name: 1, dtype: int64
注意:返回結果其實就是一個 Pandas Series 數據。
也可以返回多行數據,使用 [[ ... ]] 格式,... 為各行的索引,以逗號隔開:
實例
data = {
"calories": [420, 380, 390],
"duration": [50, 40, 45]
}
# 數據載入到 DataFrame 對象
df = pd.DataFrame(data)
# 返回第一行和第二行
print(df.loc[[0, 1]])
輸出結果為:
calories duration 0 420 50 1 380 40
注意:返回結果其實就是一個 Pandas DataFrame 數據。
我們可以指定索引值,如下實例:
實例
data = {
"calories": [420, 380, 390],
"duration": [50, 40, 45]
}
df = pd.DataFrame(data, index = ["day1", "day2", "day3"])
print(df)
輸出結果為:
calories duration day1 420 50 day2 380 40 day3 390 45
Pandas 可以使用 loc 屬性返回指定索引對應到某一行:
實例
data = {
"calories": [420, 380, 390],
"duration": [50, 40, 45]
}
df = pd.DataFrame(data, index = ["day1", "day2", "day3"])
# 指定索引
print(df.loc["day2"])
輸出結果為:
calories 380 duration 40 Name: day2, dtype: int64
Hins
ray***u0220@gmail.com
這裏教程沒有寫如何獲取 dataframe 中其中幾列,我來補充一下。
當處理數據時候 series 較多而我們其中隻關注其中一些特定的列時候可以使用。
假設:
假設我們隻關注 apple 和 banana 的數據時,可以使用以下方法:
Hins
ray***u0220@gmail.com
杍荷錦逍昶若一
175***8964@qq.com
運行結果:
當運用 numpy 或者字典創建時,是按關鍵詞順序('A'<'B'<'C')輸出的,而不是按照書寫的先後順序。
杍荷錦逍昶若一
175***8964@qq.com
雪梨
xue***@upc.edu.cn
補充一下,如何先添加新列。添加一新列,名字為sum,每行的總和。
或者:
都是添加一列數據。
雪梨
xue***@upc.edu.cn