简介

pandas 是 Python 中最常用的数据处理库,核心数据结构是 Series(一维)和 DataFrame(二维表格)。常用于读写数据文件、清洗数据、做统计分析。

安装

pip install pandas
# 或者用 uv,速度更快
uv pip install pandas

核心数据结构

Series

一维带标签的数组。

import pandas as pd

s = pd.Series([1, 2, 3], index=["a", "b", "c"])
print(s["b"])  # 2

DataFrame

二维表格,每列可以是不同的数据类型。

import pandas as pd

df = pd.DataFrame({
    "name": ["Alice", "Bob", "Carol"],
    "age": [25, 30, 35],
})
print(df)

读写数据

# 读 CSV
df = pd.read_csv("data.csv")

# 写 CSV
df.to_csv("output.csv", index=False)

# 读 Excel
df = pd.read_excel("data.xlsx")

# 读 JSON
df = pd.read_json("data.json")

查看数据

df.head()      # 前 5 行
df.tail(3)     # 后 3 行
df.shape       # (行数, 列数)
df.columns     # 列名
df.dtypes      # 每列的数据类型
df.info()      # 概览
df.describe()  # 数值列的统计摘要

选择数据

df["age"]              # 选一列,返回 Series
df[["name", "age"]]     # 选多列,返回 DataFrame

df.loc[0]               # 按标签选行
df.iloc[0]              # 按位置选行

df[df["age"] > 28]      # 条件筛选

常见操作

新增列

df["age_plus_1"] = df["age"] + 1

缺失值处理

df.isna().sum()          # 每列缺失值数量
df.dropna()               # 删除含缺失值的行
df.fillna(0)               # 用 0 填充缺失值

分组聚合

df.groupby("name")["age"].mean()

排序

df.sort_values("age", ascending=False)

合并

# 按列拼接(类似 SQL join)
pd.merge(df1, df2, on="id", how="left")

# 按行堆叠
pd.concat([df1, df2])

copy() 与 SettingWithCopyWarning

对 DataFrame 做切片或筛选后再赋值,pandas 可能不确定是在原对象上改还是在副本上改,从而报 SettingWithCopyWarning。显式调用 .copy() 可以避免这个问题:

sub = df[df["age"] > 28].copy()
sub["age"] = sub["age"] + 1  # 不会触发警告

常见应用场景