Pandas从安装到核心操作全掌握

Pandas 是 Python 数据分析领域的核心库,凭借高效的数据处理能力、灵活的结构设计,成为数据清洗、分析、转换的必备工具。本文从新手视角出发,拆解 Pandas 核心用法,所有示例均可直接运行,帮你快速上手数据分析。

一、Pandas 安装与环境准备

1. 安装方式

确保已安装 Python(推荐 3.8 及以上版本),通过 pip 命令安装 Pandas:

pip install pandas
# 国内源加速安装(推荐)
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple

若需处理 Excel 文件,需额外安装依赖:

pip install openpyxl xlrd

2. 导入 Pandas

使用 Pandas 前需先导入,行业通用简写为 pd

import pandas as pd
# 验证安装成功
print(pd.__version__)  # 输出当前 Pandas 版本号

二、Pandas 核心数据结构

Pandas 有两个核心数据结构:Series(一维数据)和 DataFrame(二维表格数据),理解这两个结构是用好 Pandas 的基础。

1. Series:一维标签数组

Series 由「值(values)」和「索引(index)」组成,可理解为带标签的一维数组。

# 创建 Series(默认索引为 0,1,2...)
s1 = pd.Series([10, 20, 30, 40])
print("基础 Series:")
print(s1)

# 自定义索引
s2 = pd.Series([10, 20, 30, 40], index=["北京", "上海", "广州", "深圳"])
print("\n自定义索引的 Series:")
print(s2)

# 取值(两种方式)
print("\n取上海的值:", s2["上海"])  # 按索引名取
print("取第2个值:", s2.iloc[1])    # 按位置取

输出结果

基础 Series:
0    10
1    20
2    30
3    40
dtype: int64

自定义索引的 Series:
北京    10
上海    20
广州    30
深圳    40
dtype: int64

取上海的值: 20
取第2个值: 20

2. DataFrame:二维表格数据

DataFrame 是类似 Excel 表格的二维结构,由行索引、列索引和数据组成,是 Pandas 最常用的结构。

# 从字典创建 DataFrame
data = {
    "城市": ["北京", "上海", "广州", "深圳"],
    "人口(万)": [2188, 2487, 1881, 1768],
    "GDP(万亿)": [4.16, 4.32, 2.88, 3.24]
}
df = pd.DataFrame(data)
print("基础 DataFrame:")
print(df)

# 查看基本信息
print("\n数据基本信息:")
df.info()  # 查看列类型、非空值数量
print("\n数据统计摘要:")
print(df.describe())  # 数值列的均值、标准差等统计量

三、数据读取与保存

Pandas 支持读取多种格式的数据(CSV、Excel、JSON 等),是数据分析的第一步。

1. 读取数据

# 读取 CSV 文件(最常用)
df_csv = pd.read_csv("data.csv")  # 需确保文件在当前目录

# 读取 Excel 文件
df_excel = pd.read_excel("data.xlsx", sheet_name="Sheet1")  # 指定工作表

# 读取 JSON 文件
df_json = pd.read_json("data.json")

# 读取时指定参数(解决常见问题)
df_csv = pd.read_csv(
    "data.csv",
    encoding="utf-8",  # 编码格式,中文常用 utf-8/gbk
    sep=",",           # 分隔符
    header=0,          # 第0行作为列名
    na_values=["-", "无"]  # 把指定值识别为缺失值
)

2. 保存数据

# 保存为 CSV
df.to_csv("result.csv", index=False)  # index=False 不保存行索引

# 保存为 Excel
df.to_excel("result.xlsx", sheet_name="结果", index=False)

# 保存为 JSON
df.to_json("result.json", orient="records", force_ascii=False)  # 中文不转义

四、数据清洗(核心操作)

实际数据常存在缺失值、重复值、异常值,清洗是数据分析的关键步骤。

1. 处理缺失值

# 查看缺失值
print("缺失值数量:")
print(df.isnull().sum())  # 统计每列缺失值数量

# 处理缺失值
df_clean = df.copy()  # 避免修改原数据
# 方式1:删除缺失值(缺失少的时候用)
df_clean = df_clean.dropna(subset=["人口(万)"])  # 只删除“人口(万)”列有缺失的行

# 方式2:填充缺失值(推荐)
df_clean["GDP(万亿)"] = df_clean["GDP(万亿)"].fillna(df_clean["GDP(万亿)"].mean())  # 均值填充
df_clean["城市"] = df_clean["城市"].fillna("未知")  # 固定值填充

2. 处理重复值

# 查找重复行
print("重复行数量:", df.duplicated().sum())

# 删除重复行
df_clean = df_clean.drop_duplicates(subset=["城市"])  # 按“城市”列去重

3. 数据类型转换

# 查看列类型
print("列类型:", df.dtypes)

# 转换类型
df["人口(万)"] = df["人口(万)"].astype(float)  # 转为浮点型
df["日期"] = pd.to_datetime(df["日期"])  # 转为日期类型(关键!)

五、数据筛选与切片

按需提取数据是数据分析的核心,掌握以下方法可解决80%的筛选需求。

1. 按列筛选

# 选择单列
city_col = df["城市"]

# 选择多列
sub_df = df[["城市", "GDP(万亿)"]]

2. 按行筛选(条件过滤)

# 单条件筛选:GDP 大于 3 万亿的城市
df_gdp = df[df["GDP(万亿)"] > 3]

# 多条件筛选(& 且,| 或,需加括号)
df_filter = df[(df["GDP(万亿)"] > 3) & (df["人口(万)"] < 2000)]

# 按值是否在列表中筛选
df_city = df[df["城市"].isin(["北京", "上海"])]

3. 按位置/索引筛选

# iloc:按位置筛选(行/列的数字索引)
df_loc1 = df.iloc[0:2]  # 前2行
df_loc2 = df.iloc[:, 0:2]  # 所有行,前2列

# loc:按索引名/列名筛选
df.loc[df["城市"] == "北京", "GDP(万亿)"]  # 北京的GDP

六、数据分组与聚合

分组聚合是分析数据规律的核心,类似 Excel 的“数据透视表”。

# 按列分组(示例:新增“区域”列)
df["区域"] = ["华北", "华东", "华南", "华南"]

# 分组后计算均值
group_df = df.groupby("区域")["GDP(万亿)"].mean()
print("各区域GDP均值:")
print(group_df)

# 多聚合函数
group_df = df.groupby("区域").agg({
    "人口(万)": ["sum", "mean"],  # 人口求和、均值
    "GDP(万亿)": "max"            # GDP最大值
})
print("\n多聚合结果:")
print(group_df)

七、数据合并与拼接

当数据分散在多个文件/表格时,需合并后分析。

# 示例数据
df1 = pd.DataFrame({"城市": ["北京", "上海"], "人均收入": [7.8, 8.2]})
df2 = pd.DataFrame({"城市": ["北京", "上海"], "房价": [6.5, 7.0]})

# 按列合并(类似 SQL 联表)
df_merge = pd.merge(df1, df2, on="城市", how="inner")  # inner 内连接(默认)
print("合并后数据:")
print(df_merge)

# 按行拼接
df3 = pd.DataFrame({"城市": ["广州"], "人均收入": [6.5], "房价": [4.0]})
df_concat = pd.concat([df_merge, df3], ignore_index=True)  # 重置索引
print("\n拼接后数据:")
print(df_concat)

八、实用技巧

1. 快速查看数据

df.head(3)  # 前3行
df.tail(2)  # 后2行
df.sample(2)  # 随机2行

2. 列名修改

df.rename(columns={"人口(万)": "人口数量"}, inplace=True)  # 批量修改列名

3. 排序

df.sort_values(by="GDP(万亿)", ascending=False)  # 按GDP降序排列
posted @ 2026-01-14 22:50  三木彤  阅读(4)  评论(0)    收藏  举报