Python Pandas教程:DataFrames入門

Pandas是一個開源Python庫,它在Python編程中提供數據分析和操作

它是數據表示,過濾和統計編程中非常有前途的庫。Pandas中最重要的部分是DataFrame,您可以在其中存儲和播放數據。

在本教程中,您將瞭解DataFrame是什麼,如何從不同的源創建它,如何將其導出到不同的輸出,以及如何操作其數據。

安裝熊貓

您可以使用pip在Python中安裝Pandas 在cmd中運行以下命令:

pip install pandas

1-install-pandas.png

此外,您可以使用conda安裝Pandas,如下所示:

conda install pandas 

閱讀Excel文件

您可以使用read_excel() Pandas中方法從Excel文件中讀取  爲此,您需要再導入一個名爲xlrd的模塊。

使用pip安裝xlrd:

pip install xlrd 

2-install-xlrd.png

下面的示例演示瞭如何從Excel工作表中讀取:

  1. 我們創建了一個包含以下內容的Excel工作表:3-Excel-sheet.png

  2. 導入Pandas模塊: import pandas 

上面的代碼片段將生成以下輸出:

4-Read-Excel-file.png

如果使用type關鍵字檢查輸出的類型,它將爲您提供以下結果:

< 類 'pandas.core.frame.DataFrame' >

這稱爲DataFrame這是我們將在本教程中處理的Pandas的基本單元。

DataFrame是一個帶標籤的二維結構,我們可以存儲不同類型的數據。DataFrame類似於SQL表或Excel電子表格。

導入CSV文件

要從CSV文件中讀取,您可以使用read_csv() Pandas 的  方法。

導入pandas模塊: import pandas 

現在調用  read_csv() 方法如下:

Book1.csv具有以下內容:

5-CSV-file.png

該代碼將生成以下DataFrame:

6-Import-CSV-file.png

閱讀文本文件

我們也可以使用read_csv Pandas 的  方法從文本文件中讀取; 考慮以下示例:

進口 大熊貓
 
大熊貓。read_csv('myFile.txt')

myFile.txt如下所示:

7-Text-file.png

上面代碼的輸出將是:

圖片標題

此文本文件被視爲CSV文件,因爲我們使用逗號分隔的元素。該文件還可以使用其他分隔符,例如分號,製表符等。

假設我們有一個製表符分隔符,文件如下所示:

10-Tab-delimited-file.png

當分隔符是製表符時,我們將得到以下輸出:

9-Read-text-file-with-tab-delimiter.png

由於Pandas不知道分隔符,因此它將選項卡轉換爲\t

要將製表符定義爲分隔符,請傳遞分隔符參數,如下所示:

大熊貓。read_csv('myFile.txt',delimiter = '\ t')

現在輸出將是:

11-Specify-tab-delimiter.png

現在看起來正確。

閱讀SQL

您可以使用read_sql() Pandas 的  方法從SQL數據庫中讀取。這在以下示例中進行了演示:

import  sqlite3
 
進口 大熊貓
 
con = sqlite3。connect('mydatabase.db')
 
大熊貓。read_sql('select * from Employee',con)

在此示例中,我們連接到一個SQLite3數據庫,該數據庫具有名爲“Employee”的表。使用read_sql()  Pandas 的  方法,然後我們將查詢和連接對象傳遞給該  read_sql()  方法。查詢將獲取表中的所有數據。

我們的Employee表如下所示:

12-SQLite3-table.png

運行上面的代碼時,輸出將如下所示:

13-Read-SQL-using-pandas.png

選擇列

假設我們在Employee表中有三列,如下所示:

14-SQLite3-table-columns.png

要從表中選擇列,我們將傳遞以下查詢:

從員工中選擇姓名,工作

Pandas代碼聲明如下:

大熊貓。read_sql('select Name,Job from Employee',con)

15-use-SQL-to-select-data.png

我們還可以通過訪問DataFrame從表中選擇一列。請考慮以下示例:

x = 熊貓。read_sql('select * from Employee',con)
 
x [ '姓名' ]

結果如下:

16-Get-columns.png

按值選擇行

首先,我們將創建一個DataFrame,我們將從中選擇行。

要創建DataFrame,請考慮以下代碼:

進口 大熊貓
 
frame_data = { '名':'詹姆斯','賈森','羅傑斯' ],'年齡':18,20,22 ],'工作':'助理','經理','職員' ] }
 
df = 熊貓。DataFrame(frame_data)

在這段代碼中,我們使用DataFrame() Pandas 方法創建了一個包含三列和三行的DataFrame  結果如下:

17-Make-a-dataframe.png

要基於值選擇行,請運行以下語句:

df。loc [ df [ 'name' ] == 'Jason' ]

df.loc[]  或者  DataFrame.loc[] 是一個布爾數組,可用於按值或標籤訪問行或列。在上面的代碼中,將獲取行,其中名稱等於Jason。

輸出將是:

18-Get-rows-by-value-from-a-dataframe.png

選擇按索引排序

要通過索引選擇行,我們可以使用slicing(:)運算符或  df.loc[] 數組。

請考慮以下代碼:

>> >  frame_data = { '名':'詹姆斯','賈森','羅傑斯' ],'年齡':18,20,22 ],'工作':'助理','經理','職員' ]}
 
>> >  DF = 大熊貓。DataFrame(frame_data)

我們創建了一個DataFrame。現在讓我們使用df.loc[]以下方法訪問一行

>>> df.loc[1] 

19-Get-dataframe-row.png

如您所見,獲取了一行。我們可以使用切片運算符執行相同的操作,如下所示:

>>> df[1:2] 

20-dataframe-slicing-operator.png

更改列類型

可以使用astype()  DataFrame 屬性更改列的數據類型  要檢查列的數據類型,我們使用dtypes DataFrame 的  屬性。

>>> df.dtypes

輸出將是:

21-Change-column-type.png

現在將數據類型從一個轉換爲另一個:

>> >  DF。name = df。名字。astype(str)

我們從DataFrame中獲取了列'name',並將其數據類型從object更改爲string。

將函數應用於列/行

要在列或行上應用函數,可以使用apply() DataFrame 的  方法。

請考慮以下示例:

>> >  frame_data = { 'A':[ 1,2,3 ],'B':[ 18,20,22 ],'C':[ 54,12,13 ]}
 
>> >  DF = 大熊貓。DataFrame(frame_data)

我們創建了一個DataFrame,並在行中添加了整數類型的值。要在值上應用函數(例如平方根),我們將導入NumPy模塊以使用sqrt 它中的  函數,如下所示:

>> >  進口 numpy的 爲 NP
 
>> >  DF。申請(NP。開方)

輸出如下:

22-Apply-a-function-to-columns.png

要應用該  sum 功能,代碼將是:

>>> df.apply(np.sum)

23-Apply-sum-function.png

要將函數應用於特定列,可以像這樣指定列:

>>>df['A'].apply(np.sqrt) 

排序值/按列排序

要對DataFrame中的值進行排序,請使用DataFrame的  sort_values() 方法。

使用整數值創建DataFrame:

>> >  frame_data = { 'A':[ 23,12,30 ],'B':[ 18,20,22 ],'C':[ 54,112,13 ]}
 
>> >  DF = 大熊貓。DataFrame(frame_data)

現在要對值進行排序:

>> >  DF。sort_values(by = [ 'A' ])

輸出將是:

24-Sort-values.png

該  sort_values() 方法具有必要的屬性“by”。在上面的代碼中,值按列A排序。要按多列排序,代碼將是:

>> >  DF。sort_values(by = [ 'A','B' ])

如果要按降序排序,請將升序屬性設置  set_values 爲False,如下所示:

>> >  DF。sort_values(by = [ 'A' ],ascending = False)

輸出將是:

25-Sort-in-descending-order.png

刪除/刪除重複項

要從DataFrame中刪除重複行,請使用DataFrame的  drop_duplicates() 方法。

請考慮以下示例:

>> >  frame_data = { '名':'詹姆斯','賈森','羅傑斯','傑森' ],'年齡':18,20,22,20 ],'工作':'助理','經理','職員','經理' ]}
 
>> >  DF = 大熊貓。DataFrame(frame_data)

27-Duplicated-dataframe.png

在這裏,我們創建了一個具有重複行的DataFrame。要檢查DataFrame中是否存在任何重複行,請使用DataFrame的  duplicated() 方法。

結果將是:

26-Duplicate-result.png

可以看出最後一行是重複的。要刪除或刪除此行,請運行以下代碼行:

>> >  DF。drop_duplicates()

現在的結果將是:

28-Remove-duplicates.png按列刪除重複項

有時,我們有數據列的值相同,我們希望刪除它們。我們可以通過傳遞我們需要刪除的列的名稱來逐行刪除。

例如,我們有以下DataFrame:

>> >  frame_data = { '名':'詹姆斯','賈森','羅傑斯','傑森' ],'年齡':18,20,22,21 ],'工作':'助理','經理','職員','員工' ]}
 
>> >  DF = 大熊貓。DataFrame(frame_data)

29-Pandas-dataframe-with-duplicate-data.png

在這裏你可以看到Jason是兩次。如果要按列刪除重複項,只需傳遞列名稱,如下所示:

>> >  DF。drop_duplicates([ 'name' ])

結果如下:

30-Drop-duplicates-by-column.png

刪除列

要刪除整個列或行,我們可以drop() 通過指定列或行的名稱來使用DataFrame 的  方法。

請考慮以下示例:

>> >  DF。drop([ 'job' ],axis = 1)

在這行代碼中,我們將刪除名爲“job”的列。這裏需要axis參數。如果軸值爲1,則表示我們要刪除列,如果軸值爲0,則表示將刪除該行。在軸值中,0表示索引,1表示列。

結果將是:

31-Drop-a-dataframe-column.png

刪除行

我們可以使用該  drop() 方法通過傳遞行的索引來刪除或刪除行。

假設我們有以下DataFrame:

>> >  frame_data = { '名':'詹姆斯','賈森','羅傑斯' ],'年齡':18,20,22 ],'工作':'助理','經理','職員' ]}
 
>> >  DF = 大熊貓。DataFrame(frame_data)

要刪除索引爲0的行,其中名稱爲James,age爲18且作業爲Assistant,請使用以下代碼:

>>> df.drop([0]) 

32-Drop-a-row-by-index.png

讓我們創建一個DataFrame,索引是名稱:

>> >  frame_data = { '名':'詹姆斯','賈森','羅傑斯' ],'年齡':18,20,22 ],'工作':'助理','經理','職員' ]}
 
>> >  DF = 大熊貓。DataFrame(frame_data,index = [ 'James','Jason','Rogers' ])

33-non-labled-dataframe.png

現在我們可以刪除具有特定值的行。例如,如果我們要刪除名稱爲Rogers的行,則代碼將爲:

>>> df.drop(['Rogers']) 

輸出將是:

34-Drop-a-row-by-value.png

您還可以刪除一系列行:

>>> df.drop(df.index[[0, 1]]) 

這將刪除從索引0到1的行以及僅剩下一行,因爲我們的DataFrame由3行組成:

35-Drop-a-range.png

如果要從DataFrame中刪除最後一行並且不知道總行數是多少,那麼可以使用負索引,如下所示:

-1刪除最後一行。同樣-2將刪除最後2行,依此類推。

36-Drop-the-last-row.png

總結一列

您可以使用sum() DataFrame 的  方法對列項進行求和。

假設我們有以下DataFrame:

>> >  frame_data = { 'A':[ 23,12,12 ],'B':[ 18,18,22 ],'C':[ 13,112,13 ]}
 
>> >  DF = 大熊貓。DataFrame(frame_data)

現在總結A列的項目,使用以下代碼行:

>>> df['A'].sum() 

37-Sum-a-column.png

您還可以使用apply() DataFrame 的  方法並傳入NumPy的sum方法來對值進行求和。

計算唯一值

要計算列中的唯一值,可以使用nunique() DataFrame 的  方法。

假設我們有如下的DataFrame:

>> >  frame_data = { 'A':[ 23,12,12 ],'B':[ 18,18,22 ],'C':[ 13,112,13 ]}
 
>> >  DF = 大熊貓。DataFrame(frame_data)

要計算A列中的唯一值:

>>> df['A'].nunique()

圖片標題

如您所見,A列只有2個唯一值23和12,另外12個是重複,這就是爲什麼我們在輸出中有2個。

如果要計算列中的所有值,可以使用以下  count() 方法:

>>> df['A'].count() 

39-Count-column-values.png

子集行

要選擇DataFrame的子集,可以使用方括號。

例如,我們有一個包含一些整數的DataFrame。我們可以像這樣選擇或分配一行:

df.[start:count] 

起點將包含在子集中,但不包括停止點。例如,要從第一行開始選擇3行,您將編寫:

>>> df[0:3] 

輸出將是:

40-Get-subset-of-rows.png

該代碼表示從第一行開始,該行爲0並選擇3行。

同樣,要選擇前兩行,您將編寫:

>>> df[0:2] 

41-Get-2-rows-from-a-dataframe.png

要選擇或子集最後一行,請使用否定索引:

>>> df[-1:] 

42-Get-last-row.png

寫入Excel

要將DataFrame寫入Excel工作表,我們可以使用該  to_excel() 方法。

要寫入Excel工作表,您必須打開工作表並打開Excel工作表,我們必須導入openpyxl模塊。

使用pip安裝openpyxl:

pip install openpyxl 

43-Install-openpyxl.png

請考慮以下示例:

>> >  進口 openpyxl
 
>> >  frame_data = { '名':'詹姆斯','賈森','羅傑斯' ],'年齡':18,20,22 ],'工作':'助理','經理','職員' ]}
 
>> >  DF = 大熊貓。DataFrame(frame_data)
 
>> >  DF。to_excel(“pandasExcel.xlsx”,“Sheet1”)

Excel文件如下所示:

44-Write-to-Excel.png

寫入CSV

同樣,要將DataFrame寫入CSV,您可以使用to_csv() 以下代碼行中的  方法:

>>> df.to_csv("pandasCSV.csv")

輸出文件如下所示:

45-Write-to-CSV.png

寫入SQL

要將數據寫入SQL,我們可以使用該  to_sql() 方法。

請考慮以下示例:

import  sqlite3
 
進口 大熊貓
 
con = sqlite3。connect('mydatabase.db')
 
frame_data = { '名':'詹姆斯','賈森','羅傑斯' ],'年齡':18,20,22 ],'工作':'助理','經理','職員' ] }
 
df = 熊貓。DataFrame(frame_data)
 
df。to_sql('users',con)

在此代碼中,我們創建了與SQLite3數據庫的連接。然後我們創建了一個包含三行三列的DataFrame。

最後,我們使用to_sql 了DataFrame(df的  方法,並傳遞了數據將與連接對象一起存儲的表的名稱。

SQL數據庫將如下所示:

46-Write-to-SQL.png

寫信給JSON

您可以使用to_json() DataFrame 的  方法寫入JSON文件。

這在以下示例中進行了演示:

>>> df.to_json("myJson.json")

在這行代碼中,JSON文件的名稱作爲參數傳遞。DataFrame將存儲在JSON文件中。該文件將包含以下內容:

47-Write-to-JSON.png

寫入HTML文件

您可以使用to_html() DataFrame 的  方法創建包含DataFrame內容的HTML文件。

請考慮以下示例:

>>> df.to_html("myhtml.html") 

結果文件將包含以下內容:

48-Write-to-html.png

在瀏覽器中打開HTML文件時,它將如下所示:

49-Html-file-output.png

使用大熊貓非常容易。這就像使用Excel工作表一樣!Pandas DataFrame也是一個非常靈活的庫。

我希望你發現這個教程很有用。繼續回來。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章