Python Pandas - DataFrame



在 Python 的 pandas 庫中,DataFrame 是一個二維帶標籤的資料結構,用於資料操作和分析。它可以處理不同型別的資料,例如整數、浮點數和字串。每一列都有一個唯一的標籤,每一行都有一個唯一的索引值,這有助於訪問特定的行。

DataFrame 用於機器學習任務,允許使用者操作和分析大型資料集。它支援諸如過濾、排序、合併、分組和資料轉換等操作。

DataFrame 的特性

以下是 Pandas DataFrame 的特性:

  • 列可以是不同型別。
  • 大小是可變的。
  • 帶標籤的軸(行和列)。
  • 可以對行和列執行算術運算。

Python Pandas DataFrame 結構

您可以將 DataFrame 視為類似於 SQL 表格或電子表格資料表示。假設我們正在建立一個包含學生資料的資料框。

Structure Table

建立 pandas DataFrame

可以使用以下建構函式建立一個 pandas DataFrame:

pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=None)

建構函式的引數如下:

序號 引數和描述
1

data

data 可以採用多種形式,例如 ndarray、series、map、列表、字典、常量以及另一個 DataFrame。

2

index

用於結果框架的行標籤,是可選的。如果未傳遞索引,則預設為 np.arange(n)。

3

columns

此引數指定列標籤,可選的預設語法為 - np.arange(n)。只有在未傳遞索引時才為真。

4

dtype

每列的資料型別。

5

copy

此命令(或任何它是什麼)用於複製資料,如果預設為 False。

從不同的輸入建立 DataFrame

可以使用各種輸入(例如)建立 pandas DataFrame:

  • 列表
  • 字典
  • Series
  • NumPy ndarrays
  • 另一個 DataFrame
  • 外部輸入檔案,例如 CSV、JSON、HTML、Excel 表格等等。

在本章的後續部分,我們將瞭解如何使用這些輸入建立 DataFrame。

建立空 DataFrame

可以使用 DataFrame 建構函式在沒有任何輸入的情況下建立一個空 DataFrame。

示例

以下是建立空 DataFrame 的示例。

#import the pandas library and aliasing as pd
import pandas as pd
df = pd.DataFrame()
print(df)

輸出如下:

Empty DataFrame
Columns: []
Index: []

從列表建立 DataFrame

可以使用單個列表或列表的列表建立 DataFrame。

示例

以下示例演示如何從 Python 列表物件建立 pandas DataFrame。

import pandas as pd
data = [1,2,3,4,5]
df = pd.DataFrame(data)
print(df)

輸出如下:

     0
0    1
1    2
2    3
3    4
4    5

示例

這是另一個從 Python 列表的列表建立 Pandas DataFrame 的示例。

import pandas as pd
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'])
print(df)

輸出如下:

      Name      Age
0     Alex      10
1     Bob       12
2     Clarke    13

從 ndarray/列表的字典建立 DataFrame

所有ndarrays都必須具有相同的長度。如果傳遞索引,則索引的長度應等於陣列的長度。

如果沒有傳遞索引,則預設情況下,索引將是 range(n),其中n是陣列的長度。

示例

以下是根據 Python 字典建立 DataFrame 的示例。

import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data)
print(df)

輸出如下:

      Age      Name
0     28        Tom
1     34       Jack
2     29      Steve
3     42      Ricky

注意 - 請觀察值 0,1,2,3。它們是使用函式 range(n) 為每個值分配的預設索引。

示例

現在讓我們使用陣列建立一個帶索引的 DataFrame。

import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data, index=['rank1','rank2','rank3','rank4'])
print(df)

輸出如下:

         Age    Name
rank1    28      Tom
rank2    34     Jack
rank3    29    Steve
rank4    42    Ricky

注意 - 請注意,index引數為每一行分配一個索引。

從字典列表建立 DataFrame

字典列表可以作為輸入資料傳遞以建立 DataFrame。字典鍵預設情況下被視為列名。

示例

以下示例顯示如何透過傳遞字典列表來建立 DataFrame。

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(非數字)附加在缺失區域。

示例

以下示例顯示如何使用字典列表、行索引和列索引建立 DataFrame。

import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]

#With two column indices, values same as dictionary keys
df1 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b'])

#With two column indices with one index with other name
df2 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b1'])
print(df1)
print(df2)

輸出如下:

#df1 output
         a  b
first    1  2
second   5  10

#df2 output
         a  b1
first    1  NaN
second   5  NaN

注意 - 請注意,df2 DataFrame 是使用與字典鍵不同的列索引建立的;因此,在適當位置添加了 NaN。而 df1 是使用與字典鍵相同的列索引建立的,因此添加了 NaN。

從 Series 字典建立 DataFrame

Series 的字典可以傳遞來形成 DataFrame。結果索引是傳遞的所有 Series 索引的並集。

示例

這是一個例子:

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print(df)

輸出如下:

      one    two
a     1.0    1
b     2.0    2
c     3.0    3
d     NaN    4

注意 - 請注意,對於 series one,沒有傳遞標籤‘d’,但在結果中,對於標籤d,附加了 NaN。

示例

另一個從 Series 建立 Pandas DataFrame 的示例:

import pandas as pd

data = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])

df = pd.DataFrame(data)
print(df)

輸出如下:

       0
a      1
b      2
c      3
d      4
廣告