目錄
一、Pandas 概述
1. 什么是 Pandas
二、核心數據結構
1. Series
索引
顯示索引
隱式索引
創建方式
屬性與方法
數據訪問
索引訪問
切片訪問
布爾索引
2. DataFrame
創建方式
屬性與數據訪問
數據修改
三、索引操作
1. 索引類型
2. 核心索引方法
3. 切片規則
四、缺失數據處理
1. 檢測缺失數據
2. 處理缺失數據
刪除缺失數據
填充缺失數據
五、級聯操作
1. 基本用法
2. 后處理操作
一、Pandas 概述
1. 什么是 Pandas
Pandas 是基于 NumPy 構建的強大數據分析工具集,提供高級數據結構和數據操作工具,是 Python 成為高效數據分析環境的重要因素。其核心特點包括:
-
專為處理大型結構化數據集設計
-
基于 NumPy 提供高性能矩陣運算支持
-
包含大量便捷的數據處理函數和方法
-
廣泛應用于數據挖掘、數據分析和數據清洗
-
支持存儲和處理非數值型數據
二、核心數據結構
1. Series
Series 是類似一維數組的對象,由數據和索引組成(索引在左,數據在右)。
索引
顯示索引
隱式索引
創建方式
| 創建方式 | 示例代碼 |
| 列表創建 | df = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e']) print(df, type(df)) |
| NumPy 數組創建 | arr = np.array(i for i in range(1, 6)) df = pd.Series(arr, index=['a', 'b', 'c', 'd', 'e']) |
| 字典創建 | # 也可以通過字典構建series數據類型 dic = { 'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5 } df = pd.Series(dic) print(df, type(df)) |
屬性與方法
# 基本屬性
print(ser_obj.size) # 元素個數
print(ser_obj.shape) # 形狀(返回元組)
print(ser_obj.dtype) # 數據類型
print(ser_obj.ndim) # 維度(Series 為 1)
print(ser_obj.index) # 獲取索引
print(ser_obj.values) # 獲取數據(返回 NumPy 數組)# 查看數據
# 如果數據量很大,可以使用head()和tail()方法來查看前幾行或后幾行數據
print(ser_obj.head(2)) # 查看前 2 行
print(ser_obj.tail(2)) # 查看后 2 行
數據訪問
索引訪問
# 單個元素訪問
print(ser_obj['a']) # 按顯式索引
print(ser_obj[0]) # 按隱式索引
切片訪問
# 切片訪問(顯式索引前閉后閉,隱式索引前閉后開)
print(ser_obj[1:3]) # 隱式切片(取索引 1、2)
print(ser_obj['b':'d']) # 顯式切片(取 'b'、'c'、'd')
布爾索引
#布爾索引
# 創建一個Series對象,包含整數數據,并指定顯示索引
df = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
print(df, type(df))
# df > 3 # 布爾索引
print(df > 3) # 布爾索引 如果大于3則顯示True,否則顯示False
# 通過布爾索引篩選數據 顯示大于3的值
print(df[df > 3]) # 布爾索引
2. DataFrame
????????DataFrame 是 Pandas中最常用的數據結構之一,它是一個二維的表格數據結構,類似于電子表格或 SQL 表格。DataFrame 由行和列組成,每一列可以是不同的數據類型(整數、浮點數、字符串等)。它提供了豐富的功能來處理和分析數據。
創建方式
| 創建方式 | 示例代碼 |
| NumPy 二維數組,ndarray | |
| 字典創建 | |
屬性與數據訪問
# 基本屬性
print(df.shape) # 形狀 (行數, 列數)
print(df.columns) # 列索引
print(df.index) # 行索引# 列訪問
print(df['A']) # 返回 Series 類型
print(df[['A', 'B']]) # 返回 DataFrame 類型(多列)# 行&列訪問(高級索引)
print(df.loc['a', 'A']) # 按顯示索引(行標簽, 列標簽)
print(df.iloc[0, 1]) # 按隱式索引(行位置, 列位置)
數據修改
# 添加列
df['G'] = df['D'] + 4 # 新增列 G,值為 D 列加 4# 刪除列
del df['G'] # 刪除列 G#修改2列中索引為1(第二行)的值
df.iloc[1,2] = 10
print(df)
三、索引操作
1. 索引類型
Pandas 支持多種索引類型,包括:
-
默認索引:整數序列(0,1,2,...)
-
自定義索引:創建時通過?index?參數指定
-
多級索引:MultiIndex(層級索引)
-
時間索引:DatetimeIndex(時間戳類型)
2. 核心索引方法
| 方法 | 說明 | 示例 |
| loc | 基于顯示的索引 | df.loc['a':'c', 'A':'B'](取行 'a'-'c',列 'A'-'B') |
| iloc | 基于隱式的索引 | df.iloc[0:2, 0:1](取前 2 行,第 1 列) |
| ix | 混合索引(已棄用) | 建議使用loc或iloc 替代 |
3. 切片規則
-
隱式索引切片:前閉后開(如?df[1:3]?取索引 1、2)
-
顯式索引切片:前閉后閉(如?df['a':'c']?取 'a'、'b'、'c')
四、缺失數據處理
1. 檢測缺失數據
import pandas as pd
import numpy as np# 生成含缺失值的 DataFrame
df_data = pd.DataFrame([np.random.randn(3), [1., 2., np.nan], [np.nan, 4., np.nan], [1., 2., 3.]])# 檢測缺失值(True 表示缺失)
print(df_data.isnull())
# 檢測非缺失值(True 表示非缺失)
print(df_data.notna())
2. 處理缺失數據
刪除缺失數據
# 刪除含缺失值的行(默認 axis=0)
df_dropped_rows = df_data.dropna()
# 刪除含缺失值的列(axis=1)
df_dropped_cols = df_data.dropna(axis=1)
填充缺失數據
# 用 0 填充所有缺失值
df_filled_zeros = df_data.fillna(0)
# 按列填充(例如用列均值填充)
df_filled_mean = df_data.fillna(df_data.mean())
五、級聯操作
1. 基本用法
import pandas as pd# 讀取 Excel 多個工作表
sheets_li = pd.read_excel("./data.xlsx", sheet_name=[1, 2, 3])# 列級聯(axis=1),外連接(保留所有數據)
res = pd.concat([sheets_li[1], sheets_li[2]], axis=1, join="outer")
2. 后處理操作
# 刪除指定列
res.drop(labels="Unnamed: 0", inplace=True, axis=1) # 刪除重復列
res = res.loc[:, ~res.columns.duplicated()] # 修改數據
res.loc[3, "手機型號"] = "小米13"