Pandas 入门到实践:核心数据结构与基础操作全解析(Day1 学习笔记)
目录
一、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())
五、级联操作
级联操作用于合并多个数据集,通过 pd.concat 实现。
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"