引言
使用Python進行數據分析是一個日益流行的技能,但是很難想象數據分析能夠沒有Pandas。Pandas是一個基於NumPy的開源數據分析工具,提供了高級數據結構和高效的數據操作工具。在Pandas中,DataFrame是一個非常常見的數據結構,它類似於電子表格或SQL表格,但具有更高的靈活性和功能。在本教程中,我們將以Pandas創建DataFrame為中心,重點介紹如何用Pandas處理和操作數據。
正文
一、創建DataFrame
Pandas的DataFrame是二維數據結構,可以看作是多個Series的集合,其中每個Series代表一個列,所有的列都有相同的行索引。我們可以使用Pandas的函數來創建DataFrame,例如可以用Python列表或NumPy數組作為輸入,然後使用columns參數指定列名。
import pandas as pd import numpy as np data = {'name': ['Alice', 'Bob', 'Charlie', 'David'], 'age': [25, 32, 18, 47], 'gender': ['F', 'M', 'M', 'M']} df = pd.DataFrame(data, columns=['name', 'age', 'gender'])
上面這段代碼首先定義了一個字典data,其中鍵是列名,值是該列的數據。然後用Pandas的DataFrame函數將字典轉換為DataFrame,指定列名為’ name’、’age’、’gender’。可以通過print(df)輸出DataFrame的內容:
name age gender 0 Alice 25 F 1 Bob 32 M 2 Charlie 18 M 3 David 47 M
我們可以看到,Pandas會默認為DataFrame分配行索引(0到n-1,其中n是行數)。
二、選擇和過濾數據
在Pandas中,可以使用loc屬性和iloc屬性來選擇和過濾數據。iloc按行索引選擇數據,loc按標籤選擇數據。
例如,我們希望選擇第1行和第3行以及’age’和’gender’列:
df.iloc[[0, 2]][['age', 'gender']]
注意,行索引從0開始,因此我們通過[0, 2]選擇第1行和第3行。輸出結果如下:
age gender 0 25 F 2 18 M
另外,我們也可以選擇年齡大於20歲的行:
df[df['age'] > 20]
輸出結果如下:
name age gender 1 Bob 32 M 3 David 47 M
三、數據聚合和分組
數據聚合是指將多行數據合併為一行數據的過程。在Pandas中,可以使用groupby函數來實現對數據的分組和聚合。
例如,假設我們有一組數據,存儲不同電影類型的票房數據,我們可以使用groupby函數對電影類型進行分組,並計算每個類型的票房總額:
data = {'genre': ['Action', 'Action', 'Comedy', 'Comedy'], 'sales': [10000000, 8000000, 6000000, 9000000]} df = pd.DataFrame(data, columns=['genre', 'sales']) grouped_df = df.groupby(['genre']).sum()
上面這段代碼首先定義了一個字典data,其中包含電影類型和電影票房的數據。然後用Pandas的groupby函數根據電影類型對數據進行分組,並對每個分組的值進行求和。可以通過print(grouped_df)輸出聚合後的結果:
sales genre Action 18000000 Comedy 15000000
四、數據合併與連接
在數據處理中,常常需要將多個數據源合併或連接在一起。在Pandas中,可以使用merge和concat函數實現數據合併和連接。
例如,我們有兩個DataFrame,分別存儲不同用戶的收入和支出數據。我們可以使用merge函數根據用戶ID合併兩個DataFrame:
income_data = {'user_id': [1, 2, 3, 4], 'income': [5000, 8000, 7000, 9000]} income_df = pd.DataFrame(income_data) expense_data = {'user_id': [1, 2, 3, 4], 'expense': [3000, 2000, 4000, 6000]} expense_df = pd.DataFrame(expense_data) merged_df = pd.merge(income_df, expense_df, on='user_id')
上面這段代碼定義了兩個字典income_data和expense_data,其中包含用戶ID和收入、支出的數據。然後用Pandas的merge函數將兩個DataFrame合併成一個DataFrame,通過user_id列進行連接。可以通過print(merged_df)輸出合併後的DataFrame:
user_id income expense 0 1 5000 3000 1 2 8000 2000 2 3 7000 4000 3 4 9000 6000
結論
本教程重點介紹了如何用Pandas創建DataFrame,選擇和過濾數據,進行數據聚合和分組,以及數據合併和連接。這些都是Pandas中非常常見的操作。對於幾乎所有的數據處理任務,Pandas都提供了簡單而強大的工具。這使得Pandas成為數據科學從業者的必備技能。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/249752.html