Pandas 入门
Pandas 主要解决“带标签的表格数据处理”问题。NumPy 更像数组工具箱,Pandas 更像表格和时间序列工具箱。
两个核心对象
Series
import pandas as pd
s = pd.Series([10, 20, 30], index=["a", "b", "c"])
print(s)
DataFrame
df = pd.DataFrame(
{
"name": ["alice", "bob", "charlie"],
"score": [95, 88, 91],
"city": ["Chengdu", "Beijing", "Shanghai"],
}
)
大多数日常处理都围绕 DataFrame 展开。
读取与保存
df = pd.read_csv("users.csv")
df.to_csv("out.csv", index=False)
如果环境里装了相关依赖,还可以读写 Excel、Parquet 等格式。
先看懂表结构
print(df.head())
print(df.info())
print(df.shape)
print(df.columns)
这是我接手一份新数据时几乎必做的第一步。
选列、选行、条件过滤
print(df["name"])
print(df[["name", "score"]])
print(df.loc[0, "name"])
print(df.iloc[0, 1])
print(df[df["score"] >= 90])
loc:按标签选iloc:按位置选
缺失值处理
print(df.isna().sum())
cleaned = df.fillna({"score": 0, "city": "unknown"})
常见操作:
isna()/notna()dropna()fillna()
新列与变换
df["passed"] = df["score"] >= 60
df["score_level"] = df["score"].map(lambda x: "A" if x >= 90 else "B")
map()、apply()、replace() 经常一起出现,但我更推荐这样理解:
- 简单映射:优先
map()或replace() - 按列或按行处理:
apply() - 对整张表逐元素处理:
applymap(),但能不用就尽量不用
分组聚合
result = df.groupby("city")["score"].mean()
print(result)
这是 Pandas 最常见的价值之一:把“按某列分组后统计”的动作做得很顺手。
排序与去重
print(df.sort_values("score", ascending=False))
print(df.drop_duplicates(subset=["name"]))
我自己的使用顺序
处理一张表时,我通常按这个顺序:
head()/info()/shape()看结构- 处理缺失值和类型
- 做筛选、映射和新列
- 再做分组、聚合和导出