Python Pandas 是一個強大的數據處理和分析工具,它提供了一種靈活、高效、可擴展的數據結構,可以幫助我們輕鬆地處理和分析各種數據。在本文中,我們將介紹 Pandas 的基本概念和使用方法,包括常用方法和參數、小技巧以及可能會遇到的坑。
Pandas 的基本概念#
Pandas 的核心數據結構是 Series 和 DataFrame。Series 是一維數組,可以存儲任何類型的數據,包括整數、浮點數、字符串等。DataFrame 是二維表格,可以看作是由多個 Series 組成的。每個 Series 代表一列數據,而每行則代表一個觀測值。
Pandas 還提供了一些其他的數據結構,比如 Panel 和 Panel4D,但在實際應用中,我們主要使用 Series 和 DataFrame。
Pandas 的使用方法#
數據讀取#
首先,我們需要從文件或數據庫中讀取數據。Pandas 支持多種數據格式,包括 CSV、Excel、SQL 等。以下是讀取 CSV 文件的示例代碼:
import pandas as pd
df = pd.read_csv('data.csv')
數據清洗#
在讀取數據後,我們需要對數據進行清洗。數據清洗包括去除重複值、填充缺失值等操作。以下是去除重複值和填充缺失值的示例代碼:
# 去除重複值
df.drop_duplicates(inplace=True)
# 填充缺失值
df.fillna(0, inplace=True)
數據篩選#
在清洗完數據後,我們需要對數據進行篩選。Pandas 提供了多種篩選方法,包括按行、按列、按條件等。以下是按條件篩選的示例代碼:
# 按條件篩選
df = df[df['age'] > 18]
數據分組#
在篩選完數據後,我們可能需要對數據進行分組。Pandas 提供了 groupby 方法來實現數據分組。以下是按照性別進行分組的示例代碼:
# 按照性別進行分組
grouped = df.groupby('gender')
數據統計#
在分組後,我們可以對數據進行統計。Pandas 提供了多種統計方法,包括計數、求和、均值等。以下是計算每個分組中年齡的平均值的示例代碼:
# 計算每個分組中年齡的平均值
grouped['age'].mean()
Pandas 的常用方法和參數#
DataFrame 常用方法#
- head (n):返回前 n 行數據。
- tail (n):返回後 n 行數據。
- info ():返回 DataFrame 的基本信息。
- describe ():返回 DataFrame 的統計信息。
- dropna ():刪除缺失值。
- fillna (value):填充缺失值。
- drop_duplicates ():去除重複值。
- groupby ():按照某一列進行分組。
DataFrame 常用參數#
- index_col:指定某一列為索引列。
- header:指定某一行為列名。
- sep:指定分隔符。
- na_values:指定缺失值。
- dtype:指定每一列的數據類型。
Series 常用方法#
- value_counts ():返回每個值出現的次數。
- unique ():返回不重複的值。
- nunique ():返回不重複值的數量。
- isnull ():判斷是否為缺失值。
- notnull ():判斷是否不為缺失值。
Series 常用參數#
- name:指定 Series 的名稱。
Pandas 的小技巧#
自動識別格式問題#
在讀取 CSV 文件時,有時會出現自動識別格式錯誤的問題。例如,有些 CSV 文件中的數字可能帶有逗號分隔符(例如 1,000),而 Pandas 默認情況下會將逗號視為千位分隔符,導致讀取出來的數字不正確。
解決這個問題的方法是在讀取 CSV 文件時指定 decimal 參數為逗號,如下所示:
df = pd.read_csv('data.csv', decimal=',')
或者不讓它自動識別,直接指定 dtype 參數為 str,如下所示:
df = pd.read_csv('data.csv', dtype=str)
快速查看數據#
在處理數據時,我們經常需要查看數據的前幾行或後幾行。可以使用 head 和 tail 方法來實現。另外,Pandas 還提供了一個快速查看數據的方法 ——sample。該方法可以隨機抽取指定數量的行,並返回一個新的 DataFrame。
以下是使用 sample 方法隨機抽取 5 行數據的示例代碼:
df.sample(5)
快速統計數據#
在統計數據時,我們經常需要計算某一列或某幾列的總和、平均值等。可以使用 sum、mean 等方法來實現。另外,Pandas 還提供了一個快速統計數據的方法 ——agg。該方法可以對指定列進行多種統計操作,並返回一個新的 DataFrame。
以下是使用 agg 方法對 age 列進行統計操作的示例代碼:
df.agg({'age': ['sum', 'mean', 'max', 'min']})
Pandas 可能會遇到的坑#
編碼問題#
在讀取 CSV 文件時,有時會出現編碼問題。例如,CSV 文件採用了 UTF-8 編碼,而 Pandas 默認情況下採用了 ASCII 編碼,導致讀取出來的中文字符亂碼。
解決這個問題的方法是在讀取 CSV 文件時指定 encoding 參數為 UTF-8,如下所示:
df = pd.read_csv('data.csv', encoding='utf-8')
索引問題#
在處理 DataFrame 時,有時會出現索引問題。例如,在對 DataFrame 進行某些操作時,可能會改變原來的索引列,導致後續操作出現錯誤。
解決這個問題的方法是在對 DataFrame 進行操作時使用 copy 方法複製一份新的 DataFrame,並對新的 DataFrame 進行操作,如下所示:
new_df = df.copy()
new_df.drop_duplicates(inplace=True)
總結#
本文介紹了 Python Pandas 的基本概念和使用方法,包括常用方法和參數、小技巧以及可能會遇到的坑。通過學習本文,相信大家已經掌握了 Pandas 的基本用法,並能夠靈活地應用到實際項目中。