摘要: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
来源:老客数据一点号