Python 数据分析领域,Pandas 是绕不开的核心工具。掌握其基础操作,能极大提升数据处理效率。本文将结合实际案例,梳理从数据创建、探索到清洗分析的常用技巧。
首先,导入必要的库:
import pandas as pd
import numpy as np
一、创建 DataFrame 数据
1. 通过字典构建
利用 Python 字典可以直接初始化 DataFrame,适合小规模数据测试:
df = pd.DataFrame({
"name": ["小明", "小红", "小孙", "王小", "关宇", "刘蓓", "张菲"],
"age": [20, 18, 27, 20, 28, 18, 25],
"sex": ["男", "女", "男", "男", "男", "女", "女"],
"score": [669, 570, 642, 590, 601, 619, 701],
"address": ["北京", "深圳", "广州", "武汉", "深圳", "广州", "长沙"]
})
print(df)
2. 读取本地文件
处理真实业务时,通常从 Excel 或 CSV 加载数据:
# 读取 Excel 文件
df = pd.read_excel("学生信息.xlsx")
二、数据探索
在分析前,先了解数据的整体结构至关重要。
查看基本信息
shape:返回 (行数,列数)。columns:获取列名列表。dtypes:显示各列的数据类型。
print(df.shape) # (7, 5)
print(df.columns) # Index(['name', 'age', ...], dtype='object')
print(df.dtypes) # 查看数据类型
缺失值检查
使用 isnull() 标记缺失项,配合 sum() 统计数量:
print(df.isnull().sum())
描述性统计
数值型列的统计摘要(均值、标准差、分位数等):
print(df.describe())
三、查看头尾数据
快速预览数据首尾部分,无需加载全部:
# 默认查看前 5 行
df.head()
# 指定行数,如前 3 行
df.head(3)
# 尾部数据
df.tail(3)
四、灵活取数
1. 选择特定列
单列返回 Series,多列返回 DataFrame:
# 单列
name_col = df["name"]
# 多列
subset = df[["name", "age"]]
2. 按数据类型筛选
根据列的类型(如 int64, object)过滤:
# 仅保留整数类型列
df.select_dtypes(include="int64")
# 排除整数类型
df.select_dtypes(exclude="int64")
3. 条件筛选
布尔索引是 Pandas 最强大的功能之一。注意多个条件需用 & 连接,且每个条件需加括号:
# 年龄等于 20
df[df["age"] == 20]
# 年龄大于等于 20 且小于 27
df[(df["age"] >= 20) & (df["age"] < 27)]
4. 字符串匹配
利用 .str 访问器进行文本处理:
# 包含'小'字的名字
df[df["name"].str.contains("小")]
# 以'小'开头
df[df["name"].str.startswith("小")]
# 不包含'小'
df[~df["name"].str.contains("小")]
五、切片操作
支持 Python 标准的切片语法 [start:stop:step]:
# 从索引 4 取到末尾
df[4:]
# 步长为 2,每隔一行取一次
df[::2]
# 倒序输出
df[::-1]
六、常用函数应用
1. 统计频次
value_counts() 用于统计唯一值的出现次数:
city_counts = df["address"].value_counts()
2. 重置索引
筛选后索引可能不连续,使用 reset_index(drop=True) 恢复:
male_df = df[df["sex"] == "男"].reset_index(drop=True)
3. 重命名列
使用 rename 修改列名:
df.rename(columns={"index": "city", "address": "location"}, inplace=True)
4. 分组聚合
groupby 结合聚合函数实现分组统计:
# 按性别统计总分
sex_score = df.groupby("sex")["score"].sum()
# 按性别和班级统计平均分
result = df.groupby(["sex", "class"])["score"].mean().reset_index()
5. apply 函数
对列元素应用自定义逻辑,常用于数据转换:
# 将性别转换为数字
# 方式一:lambda 表达式
df["sex_code"] = df["sex"].apply(lambda x: 1 if x == "男" else 0)
# 方式二:自定义函数
def map_sex(x):
return 1 if x == "男" else 0
df["sex_code"] = df["sex"].apply(map_sex)
总结
Pandas 提供了丰富的数据结构和方法来处理表格数据。从基础的创建与查看,到复杂的条件筛选与分组聚合,熟练掌握这些技巧能让数据处理工作事半功倍。建议在实际项目中多动手实践,逐步积累经验。


