网站首页 > 技术文章 正文
以下是 Python 中 pandas 库的 DataFrame 常用操作汇总,涵盖数据查看、筛选、处理和分析等场景:
1. 创建 DataFrame
python
import pandas as pd
# 从字典创建
data = {"Name": ["Alice", "Bob", "Charlie"], "Age": [25, 30, 35], "City": ["NY", "SF", "LA"]}
df = pd.DataFrame(data)
# 从列表创建(需指定列名)
data = [["Alice", 25], ["Bob", 30], ["Charlie", 35]]
df = pd.DataFrame(data, columns=["Name", "Age"])
# 从 CSV 文件读取
df = pd.read_csv("data.csv")
2. 数据查看
python
# 查看前 n 行(默认 5 行)
df.head()
# 查看后 n 行
df.tail()
# 查看基本信息(列名、非空值、数据类型)
df.info()
# 查看统计摘要(数值型列)
df.describe()
# 查看列名
df.columns
# 查看形状(行数和列数)
df.shape
3. 数据选择
python
# 选择单列(返回 Series)
df["Name"]
# 选择多列
df[["Name", "Age"]]
# 选择行(按位置)
df.iloc[0] # 第一行
df.iloc[0:3] # 前 3 行
# 选择行(按标签)
df.loc[0] # 标签为 0 的行
# 条件筛选
df[df["Age"] > 25] # Age 大于 25 的行
df[(df["Age"] > 25) & (df["City"] == "NY")] # 多条件筛选
4. 数据处理
python
# 添加新列
df["Salary"] = [50000, 60000, 70000]
# 删除列
df.drop("City", axis=1, inplace=True) # axis=1 表示列,inplace=True 直接修改原 DataFrame
# 重命名列
df.rename(columns={"Age": "UserAge"}, inplace=True)
# 处理缺失值
df.dropna() # 删除包含缺失值的行
df.fillna(0) # 用 0 填充缺失值
df.fillna(df.mean()) # 用列均值填充
# 类型转换
df["Age"] = df["Age"].astype(float) # 转换为浮点数
df["Date"] = pd.to_datetime(df["Date"]) # 转换为日期类型
# 删除重复值
df.drop_duplicates()
5. 数据排序
python
# 按某列升序排序
df.sort_values("Age", ascending=True)
# 按多列排序
df.sort_values(["Age", "Salary"], ascending=[True, False])
6. 数据分组与聚合
python
# 分组统计(按 City 分组,计算平均 Age)
df.groupby("City")["Age"].mean()
# 多聚合操作
df.groupby("City").agg({"Age": ["mean", "max"], "Salary": "sum"})
# 交叉表(频数统计)
pd.crosstab(df["City"], df["Gender"])
7. 合并 DataFrame
python
# 纵向合并(堆叠)
pd.concat([df1, df2], axis=0)
# 横向合并(拼接列)
pd.concat([df1, df2], axis=1)
# SQL 风格的合并(按 key 列连接)
pd.merge(df1, df2, on="key", how="inner") # how 可选 inner/left/right/outer
8. 数据清洗
python
# 替换值
df["City"].replace({"NY": "New York", "SF": "San Francisco"}, inplace=True)
# 处理异常值(例如:删除 Age > 100 的行)
df = df[df["Age"] <= 100]
# 字符串操作(转为小写)
df["Name"] = df["Name"].str.lower()
9. 应用函数
python
# 对某列应用函数
df["Age"].apply(lambda x: x * 2)
# 对多列应用函数
def calculate_bonus(row):
return row["Salary"] * 0.1
df["Bonus"] = df.apply(calculate_bonus, axis=1)
10. 保存数据
python
# 保存为 CSV
df.to_csv("output.csv", index=False)
# 保存为 Excel
df.to_excel("output.xlsx", sheet_name="Sheet1")
补充:常用快捷操作
python
# 重置索引
df.reset_index(drop=True, inplace=True)
# 设置索引列
df.set_index("Name", inplace=True)
# 计算相关系数矩阵
df.corr()
# 遍历行(尽量避免,优先使用向量化操作)
for index, row in df.iterrows():
print(row["Name"], row["Age"])
掌握这些操作后,可以覆盖大部分 DataFrame 数据处理需求。如需深入学习,可参考 pandas 官方文档:pandas.pydata.org
猜你喜欢
- 2025-06-24 Python坐标计算(Python坐标计算三角形周长)
- 2025-06-24 Python 小白必看!Pandas 带你秒变数据分析大神
- 2025-06-24 Python 轻松搞定 Excel 常用的 20 个操作
- 06-24Python调用Docker API的使用方式(pycharm docker 调试)
- 06-24青少年Python编程系列28:Python中函数的递归调用
- 06-24python调用sqlite数据库案例(python 调用数据库)
- 06-24【Python机器学习系列】基于Flask来构建API调用机器学习模型服务
- 06-24通过pybind11来实现python调用C++接口(一)
- 06-24Python编程调用Deepseek API创建智能体
- 06-24python多装饰器针对函数、类、方法的调用顺序说明
- 06-24Python Qt GUI设计:Python调用UI文件的两种方法(基础篇—3)
- 270℃Python短文,Python中的嵌套条件语句(六)
- 268℃python笔记:for循环嵌套。end=""的作用,图形打印
- 266℃PythonNet:实现Python与.Net代码相互调用!
- 262℃Python实现字符串小写转大写并写入文件
- 261℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 121℃原来2025是完美的平方年,一起探索六种平方的算吧
- 101℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 96℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
-
- Python调用Docker API的使用方式(pycharm docker 调试)
- 青少年Python编程系列28:Python中函数的递归调用
- python调用sqlite数据库案例(python 调用数据库)
- 【Python机器学习系列】基于Flask来构建API调用机器学习模型服务
- 通过pybind11来实现python调用C++接口(一)
- Python编程调用Deepseek API创建智能体
- python多装饰器针对函数、类、方法的调用顺序说明
- Python Qt GUI设计:Python调用UI文件的两种方法(基础篇—3)
- Python | Django 外部脚本调用 models 数据库
- 自学Python第九天——操作列表(python操作步骤)
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)