装 Pandas
pip install pandas
DataFrame:Excel 表格
import pandas as pd
df = pd.DataFrame({
"name": ["Alice", "Bob", "Carol"],
"age": [30, 25, 35],
"city": ["北京", "上海", "深圳"],
})
print(df)
# name age city
# 0 Alice 30 北京
# 1 Bob 25 上海
# 2 Carol 35 深圳
Series:单列
DataFrame 的每一列就是一个 Series:
df["age"] # 取列
df.age # 同上(属性写法)
type(df["age"]) # <class 'pandas.Series'>
读 / 写文件
# CSV
df = pd.read_csv("data.csv")
df.to_csv("out.csv", index=False)
# Excel(需要 pip install openpyxl)
df = pd.read_excel("data.xlsx", sheet_name="Sheet1")
df.to_excel("out.xlsx", index=False)
# JSON
df = pd.read_json("data.json")
# Parquet(大数据高效格式)
df = pd.read_parquet("data.parquet")
基本探索
df.head() # 前 5 行
df.tail(3) # 后 3 行
df.shape # (行数, 列数)
df.dtypes # 各列类型
df.info() # 总览
df.describe() # 数值列的统计摘要
df.columns # 列名
选择数据
# 单列
df["age"]
# 多列
df[["name", "age"]]
# 按条件过滤
df[df["age"] > 28]
df[(df["age"] > 28) & (df["city"] == "深圳")] # & 不是 and
# 按标签 / 位置
df.loc[0] # 第 0 行(按标签)
df.iloc[0] # 第 0 行(按位置)
df.loc[0:2, "name"] # 前 3 行的 name 列
⚠️ 多条件用 & |,不是 and or,并且每个条件必须加括号。
增 / 改 / 删列
df["score"] = [90, 85, 92] # 新加列
df["age_next"] = df["age"] + 1 # 计算列
df.drop(columns=["score"], inplace=True) # 删列
df.rename(columns={"age": "Age"}, inplace=True)
排序
df.sort_values("age") # 按 age 升序
df.sort_values("age", ascending=False) # 降序
df.sort_values(["city", "age"]) # 多字段
简单聚合
df["age"].mean() # 30.0
df["age"].max() # 35
df["city"].value_counts() # 各城市人数
实战:从 CSV 到统计
df = pd.read_csv("sales.csv")
print(df.head())
# 总销售额
print(df["amount"].sum())
# 按地区分组求和
print(df.groupby("region")["amount"].sum().sort_values(ascending=False))
# 按月份
df["month"] = pd.to_datetime(df["date"]).dt.month
monthly = df.groupby("month")["amount"].sum()
print(monthly)
下一篇讲数据清洗的更多招数。