pandas使用命令

发布于:2025-02-10 ⋅ 阅读:(48) ⋅ 点赞:(0)

Pandas 命令使用指南

1. 数据导入导出

1.1 读取数据

# 读取各种格式
pd.read_csv("file.csv")
pd.read_excel("file.xlsx")
pd.read_json("file.json")
pd.read_sql("SELECT * FROM table", connection)
pd.read_parquet("file.parquet")

# 读取参数设置
pd.read_csv("file.csv", 
    encoding='utf-8',
    header=0,
    index_col=0,
    na_values=['NA', 'missing']
)

1.2 保存数据

# 保存为不同格式
df.to_csv("output.csv")
df.to_excel("output.xlsx")
df.to_json("output.json")
df.to_sql("table_name", connection)
df.to_parquet("output.parquet")

2. 数据查看和基本信息

2.1 基本信息查看

# 数据预览
df.head()  # 前5行
df.tail()  # 后5行
df.sample(n=5)  # 随机5行

# 基本信息
df.info()  # 数据类型和非空值统计
df.describe()  # 数值列统计摘要
df.shape  # 维度信息
df.columns  # 列名
df.index  # 索引

2.2 数据类型操作

# 类型转换
df["col"].astype("int64")
df["col"].astype("category")
df["date_col"].astype("datetime64")

# 类型检查
df.dtypes  # 所有列的数据类型
df["col"].dtype  # 单列数据类型

3. 数据选择和过滤

3.1 索引操作

# 位置索引
df.iloc[0]  # 第一行
df.iloc[0:5]  # 前5行
df.iloc[0:5, 0:2]  # 前5行,前2列

# 标签索引
df.loc["index_label"]
df.loc["start":"end"]
df.loc[:, ["col1", "col2"]]

3.2 高级过滤

# 复杂条件过滤
df.query("col1 > 5 and col2 < 10")
df.filter(items=["col1", "col2"])  # 选择特定列
df.filter(like="name")  # 列名包含"name"的列
df.filter(regex="^date")  # 列名匹配正则表达式的列

4. 数据清洗和处理

4.1 缺失值处理

# 检测缺失值
df.isnull()
df.isnull().sum()  # 每列缺失值计数

# 处理缺失值
df.fillna(0)  # 填充为指定值
df.fillna(method="ffill")  # 向前填充
df.fillna(method="bfill")  # 向后填充
df.dropna()  # 删除含有缺失值的行
df.dropna(axis=1)  # 删除含有缺失值的列

4.2 重复值处理

# 检测重复值
df.duplicated()
df.duplicated(subset=["col1", "col2"])

# 处理重复值
df.drop_duplicates()
df.drop_duplicates(subset=["col1"], keep="last")

5. 数据转换和计算

5.1 列操作

# 新增/修改列
df["new_col"] = df["col1"] + df["col2"]
df.assign(new_col=lambda x: x["col1"] * 2)

# 重命名列
df.rename(columns={"old_name": "new_name"})
df.columns = ["col1", "col2", "col3"]

5.2 数学运算

# 基本统计
df.sum()
df.mean()
df.median()
df.std()
df.var()
df.min()
df.max()

# 滚动计算
df.rolling(window=3).mean()
df.expanding().sum()
df.cumsum()  # 累计和

6. 数据分组和聚合

6.1 分组操作

# 基本分组
grouped = df.groupby("category")
grouped = df.groupby(["cat1", "cat2"])

# 分组聚合
grouped.agg("mean")
grouped.agg(["mean", "sum", "count"])
grouped.agg({
    "col1": "sum",
    "col2": ["min", "max"],
    "col3": lambda x: x.max() - x.min()
})

6.2 透视表

# 创建透视表
pd.pivot_table(df, 
    values="value",
    index="category",
    columns="date",
    aggfunc="mean"
)

# 交叉表
pd.crosstab(df.col1, df.col2)

7. 时间序列处理

7.1 时间操作

# 时间解析
pd.to_datetime(df["date"])
pd.date_range(start="2023-01-01", periods=10)

# 时间特征提取
df["date"].dt.year
df["date"].dt.month
df["date"].dt.day
df["date"].dt.dayofweek

7.2 时间重采样

# 降采样
df.resample("D").mean()  # 按天
df.resample("M").sum()   # 按月

# 升采样
df.resample("H").ffill()  # 按小时填充

8. 高级功能

8.1 合并操作

# 合并DataFrame
pd.merge(df1, df2, on="key")
pd.merge(df1, df2, left_on="key1", right_on="key2")

# 连接操作
df1.join(df2)
pd.concat([df1, df2], axis=0)  # 垂直连接
pd.concat([df1, df2], axis=1)  # 水平连接

8.2 数据转换

# 数据重塑
df.melt(id_vars=["A"], value_vars=["B"])
df.pivot(index="date", columns="category", values="value")

# 类型转换
df.astype({"col1": "int32", "col2": "float64"})
pd.get_dummies(df["category"])  # One-hot编码

9. 性能优化

9.1 内存优化

# 减少内存使用
df.memory_usage()
df.select_dtypes(include=["int64"]).astype("int32")

9.2 计算优化

# 并行处理
df.parallel_apply(func)  # 需要安装pandarallel
df.eval("col3 = col1 + col2")  # 高效数值计算

网站公告

今日签到

点亮在社区的每一天
去签到