如何創建 Pandas DataFrame [含示例]

已發表: 2022-12-08

學習使用 pandas DataFrames 的基礎知識:pandas 中的基本數據結構,一個強大的數據操作庫。

如果您想開始使用 Python 進行數據分析,pandas 是您應該首先學習使用的庫之一。 從從 CSV 文件和數據庫等多個來源導入數據,到處理丟失的數據並對其進行分析以獲得洞察力——pandas 可以讓您完成上述所有操作。

要開始使用 pandas 分析數據,您應該了解 pandas 中的基本數據結構:數據框

在本教程中,您將學習 pandas 數據框的基礎知識和創建數據框的常用方法。 然後,您將學習如何從數據框中選擇行和列以檢索數據子集。

對於所有這些以及更多內容,讓我們開始吧。

安裝和導入 Pandas

pandas是第三方數據分析庫,需要先安裝。 建議在項目的虛擬環境中安裝外部包。

如果你使用 Python 的 Anaconda 發行版,你可以使用conda進行包管理。

 conda install pandas

您還可以使用 pip 安裝 pandas:

 pip install pandas

pandas 庫需要 NumPy 作為依賴項。 因此,如果尚未安裝 NumPy,它也會在安裝過程中安裝。

安裝 pandas 後,您可以將其導入到您的工作環境中。 通常,pandas 是在別名pd下導入的:

 import pandas as pd

Pandas 中的 DataFrame 是什麼?

什麼是 Pandas 中的 DataFrame

pandas 的基本數據結構是數據框。 數據框是帶有標籤索引和命名列的二維數據數組。 數據框中的每一列稱為 pandas series ,共享一個公共索引。

這是我們將在接下來的幾分鐘內從頭開始創建的示例數據框。 此數據框包含有關六個學生在四個星期內花費多少的數據。

pd-dataframe-ex

學生的名字是行標籤。 這些列被命名為“Week1”到“Week4”。 請注意,所有列共享同一組行標籤,也稱為索引

如何創建 Pandas 數據框

有幾種方法可以創建 pandas 數據框。 在本教程中,我們將討論以下方法:

  • 從 NumPy 數組創建數據框
  • 從 Python 字典創建數據框
  • 通過讀取 CSV 文件創建數據框

來自 NumPy 數組

讓我們從 NumPy 數組創建一個數據框。

讓我們創建形狀為 (6,4) 的數據數組,假設在任何給定的一周內,每個學生的花費都在 0 美元到 100 美元之間。 NumPy 的random模塊中的randint()函數返回給定區間[low,high)中的隨機整數數組。

 import numpy as np np.random.seed(42) data = np.random.randint(0,101,(6,4)) print(data)
 array([[51, 92, 14, 71], [60, 20, 82, 86], [74, 74, 87, 99], [23, 2, 21, 52], [ 1, 87, 29, 37], [ 1, 63, 59, 20]])

要創建 pandas 數據框,您可以使用DataFrame構造函數並將 NumPy 數組作為data參數傳入,如下所示:

 students_df = pd.DataFrame(data=data)

現在我們可以調用內置的type()函數來檢查students_df的類型。 我們看到它是一個DataFrame對象。

 type(students_df) # pandas.core.frame.DataFrame
 print(students_df)
熊貓-dataframe-01

我們看到默認情況下,我們有從 0 到numRows – 1 的範圍索引,列標籤為 0、1、2、...、 numCols -1。 但是,這會降低可讀性。 它將有助於向數據框添加描述性列名和行標籤。

讓我們創建兩個列表:一個用於存儲學生姓名,另一個用於存儲列標籤。

 students = ['Amy','Bob','Chris','Dave','Evelyn','Fanny'] cols = ['Week1','Week2','Week3','Week4']

在調用DataFrame的構造函數時,可以將indexcolumns分別設置為行標籤和列標籤的列表來使用。

 students_df = pd.DataFrame(data = data,index = students,columns = cols)

我們現在有了帶有描述性行和列標籤的students_df數據框。

 print(students_df)
熊貓-dataframe-02

要獲取有關數據框的一些基本信息,例如缺失值和數據類型,您可以在數據框對像上調用info()方法。

 students_df.info()
圖片-114

來自 Python 字典

您還可以從 Python 字典創建 pandas 數據框。

這裡, data_dict是包含學生數據的字典:

  • 學生的名字是關鍵。
  • 每個值都是每個學生從第一周到第四周花費的列表。
 data_dict = {} students = ['Amy','Bob','Chris','Dave','Evelyn','Fanny'] for student,student_data in zip(students,data): data_dict[student] = student_data

要從 Python 字典創建數據框,請使用from_dict ,如下所示。 第一個參數對應於包含數據的字典 ( data_dict )。 默認情況下,鍵用作數據框的列名。 因為我們想將鍵設置為行標籤,所以設置orient= 'index'

 students_df = pd.DataFrame.from_dict(data_dict,orient='index') print(students_df)
pandas-dataframe-from-dict

要將列名更改為周數,我們將列設置為cols列表:

 students_df = pd.DataFrame.from_dict(data_dict,orient='index',columns=cols) print(students_df)
熊貓-dataframe-03

將 CSV 文件讀入 Pandas DataFrame

假設學生數據是可用的 CSV 文件。 您可以使用read_csv()函數將文件中的數據讀入到 pandas 數據框中。 pd.read_csv('file-path')是通用語法,其中file-path是 CSV 文件的路徑。 我們可以將names參數設置為要使用的列名列表。

 students_df = pd.read_csv('/content/students.csv',names=cols)

現在我們知道如何創建數據框,讓我們學習如何選擇行和列。

從 Pandas DataFrame 中選擇列

您可以使用多種內置方法從數據框中選擇行和列。 本教程將介紹從數據框中選擇列、行以及行和列的最常用方法。

選擇單列

要選擇單個列,您可以使用df_name[col_name] ,其中col_name是表示列名稱的字符串。

在這裡,我們只選擇“Week1”列。

 week1_df = students_df['Week1'] print(week1_df)
單列

選擇多列

要從數據框中選擇多列,請傳入要選擇的所有列名稱的列表。

 odd_weeks = students_df[['Week1','Week3']] print(odd_weeks)
多列

除了這個方法,你還可以使用iloc()loc()方法來選擇列。 稍後我們將編寫一個示例。

從 Pandas DataFrame 中選擇行

4-2

使用 .iloc() 方法

要使用iloc()方法選擇行,請將與所有行對應的索引作為列表傳入。

在此示例中,我們選擇奇數索引處的行。

 odd_index_rows = students_df.iloc[[1,3,5]] print(odd_index_rows)
奇數行

接下來,我們選擇包含索引 0 到 2 處的行的數據框子集,默認情況下排除端點 3。

 slice1 = students_df.iloc[0:3] print(slice1)
選擇行

使用 .loc() 方法

要使用loc()方法選擇數據框的行,您應該指定與您要選擇的行相對應的標籤。

 some_rows = students_df.loc[['Bob','Dave','Fanny']] print(some_rows)
一些行

如果使用默認範圍 0、1、2 到numRows -1 對數據框的行進行索引,則使用iloc()loc()都是等效的。

從 Pandas DataFrame 中選擇行和列

到目前為止,您已經學習瞭如何從 pandas 數據框中選擇行或列。 但是,您有時可能需要同時選擇行和列的子集。 你是怎麼做到的? 您可以使用我們討論過的iloc()loc()方法。

例如,在下面的代碼片段中,我們選擇索引 2 和 3 處的所有行和列。

 subset_df1 = students_df.iloc[:,[2,3]] print(subset_df1)
數據幀子集

使用start:stop創建一個從start到但不包括stop的切片。 因此,當您同時忽略startstop值時,當您忽略起始值和終止值時,切片會從開頭開始——並延伸到數據框的結尾——選擇所有行。

使用loc()方法時,您必須傳入要選擇的行和列的標籤,如下所示:

 subset_df2 = students_df.loc[['Amy','Evelyn'],['Week1','Week3']] print(subset_df2)
df-子集

在這裡,數據subset_df2包含 Amy 和 Evelyn 在第 1 周和第 3 週的記錄。

結論

以下是您在本教程中所學內容的快速回顧:

  • 安裝 pandas 後,您可以在別名pd下導入它。 要創建 pandas 數據框對象,可以使用pd.DataFrame(data)構造函數,其中data指的是 N 維數組或包含數據的可迭代對象。 您可以分別通過設置可選的索引和列參數來指定行和索引以及列標籤。
  • 使用pd.read_csv(path-to-the-file)將文件的內容讀取到數據框中。
  • 您可以調用數據框對象的info()方法來獲取有關列、缺失值數量、數據類型和數據框大小的信息。
  • 要選擇單個列,請使用df_name[col_name] ,並選擇多個列,特定列, df_name[[col1,col2,...,coln]]
  • 您還可以使用loc()iloc()方法選擇列和行。
  • iloc()方法接受要選擇的行和列的索引(或索引切片),而loc()方法接受行和列標籤。

您可以在此 Colab 筆記本中找到本教程中使用的示例。

接下來,查看協作數據科學筆記本列表。