Python DataFrame常用操作汇总

360影视 日韩动漫 2025-05-13 14:57 1

摘要:data = {"Name": ["Alice", "Bob", "Charlie"], "Age": [25, 30, 35], "City": ["NY", "SF", "LA"]}

以下是 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"]

# 字符串操作(转为小写)

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

来源:老客数据一点号

相关推荐