Skip to content

Python 数据处理

使用 Pandas、NumPy 等库进行数据处理的实用技巧。

Pandas 快速入门

创建 DataFrame

python
import pandas as pd

# 从字典创建
df = pd.DataFrame({
    "名称": ["锂电池A", "锂电池B", "锂电池C"],
    "容量(mAh)": [3000, 3500, 4000],
    "循环寿命": [800, 1200, 500],
    "价格(元)": [15.5, 22.0, 28.0],
})

读取文件

python
# CSV
df = pd.read_csv("data.csv", encoding="utf-8")

# Excel
df = pd.read_excel("data.xlsx", sheet_name="Sheet1")

# JSON
df = pd.read_json("data.json")

数据探索

python
df.head()           # 前5行
df.info()           # 列类型和非空统计
df.describe()       # 数值列的统计摘要
df.shape            # (行数, 列数)
df.columns          # 列名列表
df.dtypes           # 各列数据类型

数据清洗

缺失值处理

python
# 检查缺失
df.isnull().sum()

# 删除缺失行
df.dropna(subset=["重要列"])

# 填充缺失
df["价格"].fillna(df["价格"].mean(), inplace=True)

去重

python
df.drop_duplicates(subset=["名称"], keep="first")

类型转换

python
df["日期"] = pd.to_datetime(df["日期"])
df["价格"] = df["价格"].astype(float)

数据筛选与计算

python
# 条件筛选
high_cap = df[df["容量(mAh)"] > 3000]

# 多条件
result = df[(df["容量(mAh)"] > 3000) & (df["价格(元)"] < 25)]

# 新增计算列
df["性价比"] = df["容量(mAh)"] / df["价格(元)"]

# 分组聚合
df.groupby("类别")["价格(元)"].agg(["mean", "max", "count"])

NumPy 基础

python
import numpy as np

# 创建数组
arr = np.array([1, 2, 3, 4, 5])
zeros = np.zeros((3, 4))          # 3x4 零矩阵
linspace = np.linspace(0, 1, 50)  # 0到1之间50个等距点

# 向量化运算(比 for 循环快 100x)
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b)       # [5, 7, 9]
print(a * b)       # [4, 10, 18]
print(np.dot(a, b))  # 32(点积)

# 统计
data = np.random.randn(1000)
print(f"均值: {data.mean():.4f}")
print(f"标准差: {data.std():.4f}")

数据导出

python
# 导出 CSV
df.to_csv("output.csv", index=False, encoding="utf-8-sig")

# 导出 Excel
df.to_excel("output.xlsx", index=False, sheet_name="结果")

# 导出 JSON
df.to_json("output.json", orient="records", force_ascii=False)

实践建议

  • 处理大文件时用 chunksize 参数分批读取
  • 尽量用向量化操作替代 for 循环
  • 中文 CSV 导出时使用 utf-8-sig 编码避免 Excel 乱码

用知识连接未来