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 是一個二維的數組結構,類似二維數組。

實例 - 使用列表創建

import pandas as pd

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 創建

import pandas as pd

data = {'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, 12, 13]}

df = pd.DataFrame(data)

print (df)

輸出結果如下:

從以上輸出結果可以知道, DataFrame 數據類型一個表格,包含 rows(行) 和 columns(列):

還可以使用字典(key/value),其中字典的 key 為列名:

實例 - 使用字典創建

import pandas as pd

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,以此類推:

實例

import pandas as pd

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 數據。

也可以返回多行數據,使用 [[ ... ]] 格式,... 為各行的索引,以逗號隔開:

實例

import pandas as pd

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 數據。

我們可以指定索引值,如下實例:

實例

import pandas as pd

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 屬性返回指定索引對應到某一行:

實例

import pandas as pd

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