为什么选择Pandas?
- 数据处理核心工具:Pandas是Python中数据分析的标配库,支持高效处理表格数据(如Excel、CSV、数据库)。
- 功能强大:数据清洗、转换、聚合、可视化一站式解决,兼容NumPy、Matplotlib、Seaborn等库。
- 广泛适用:金融分析、科学计算、日志处理、业务报表等场景均依赖Pandas。
- 语法简洁:通过DataFrame对象,轻松完成复杂操作(如分组、透视表、时间序列分析)。
快速上手:安装与基础操作
pip install pandas matplotlib seaborn # 安装依赖
import pandas as pd
# 创建DataFrame
data = {
"Name": ["Alice", "Bob", "Charlie"],
"Age": [25, 30, 35],
"City": ["New York", "London", "Tokyo"]
}
df = pd.DataFrame(data)
print(df)
输出:
Name Age City
0 Alice 25 New York
1 Bob 30 London
2 Charlie 35 Tokyo
核心操作:数据读取与清洗
- 读取多种数据源:
# CSV文件
df = pd.read_csv("data.csv")
# Excel文件
df = pd.read_excel("data.xlsx", sheet_name="Sheet1")
# SQL数据库
from sqlalchemy import create_engine
engine = create_engine("sqlite:///database.db")
df = pd.read_sql("SELECT * FROM users", engine)
- 数据清洗:
# 处理缺失值
df.dropna(subset=["Age"]) # 删除Age为空的行
df["City"].fillna("Unknown") # 填充缺失值
# 去重
df.drop_duplicates()
# 类型转换
df["Age"] = df["Age"].astype(int)
数据转换与分析
- 筛选与排序:
# 筛选年龄>28的人
df[df["Age"] > 28]
# 按年龄排序
df.sort_values(by="Age", ascending=False)
- 分组与聚合:
# 按城市分组,计算平均年龄
df.groupby("City")["Age"].mean()
# 透视表(交叉表)
df.pivot_table(index="City", columns="Age", aggfunc="size", fill_value=0)
- 时间序列处理:
# 转换日期列为datetime类型
df["Date"] = pd.to_datetime(df["Date"])
# 按月分组统计
df.groupby(df["Date"].dt.month)["Sales"].sum()
数据可视化
- 基础绘图:
df["Age"].plot(kind="hist") # 直方图
df.plot(x="Age", y="Salary", kind="scatter") # 散点图
- 结合Seaborn:
import seaborn as sns
sns.barplot(x="City", y="Age", data=df) # 条形图
sns.heatmap(df.corr(), annot=True) # 热力图
- 保存图表:
plt.savefig("output.png", dpi=300) # 高分辨率保存
实战案例:分析电商销售数据
- 读取数据:
df = pd.read_csv("sales_data.csv", parse_dates=["Order Date"])
- 数据清洗:
df.dropna(subset=["Quantity", "Price"]) # 删除关键字段缺失的行
df["Total"] = df["Quantity"] * df["Price"] # 新增总价列
- 分析与可视化:
# 按月份统计销售额
monthly_sales = df.groupby(df["Order Date"].dt.month)["Total"].sum()
monthly_sales.plot(kind="line")
# 按产品分类统计销量
sns.countplot(x="Product", data=df)
进阶技巧:性能优化与扩展
- 处理大文件:
# 分块读取(避免内存溢出)
for chunk in pd.read_csv("large_file.csv", chunksize=10000):
process(chunk) # 自定义处理函数
- 内存优化:
df = df.astype({"Age": "int32", "Price": "float32"}) # 减少内存占用
- 与其他工具结合:
- 数据库:直接读取SQL查询结果(
pd.read_sql
)。 - Excel公式:导出DataFrame并保留公式(
df.to_excel(engine="openpyxl")
)。 - Dask:并行处理超大规模数据(
import dask.dataframe as dd
)。
总结与学习路径
- 核心能力:掌握DataFrame操作、数据清洗、分组聚合、可视化。
- 扩展方向:
- 时间序列分析(
pd.date_range
,resample
)。 - 机器学习(Pandas + Scikit-learn)。
- 部署(将分析结果导出为报告或API)。
- 资源推荐:
- 官方文档:https://pandas.pydata.org/docs/
- 实战书籍:《Python为数据科学》 by Wes McKinney(Pandas创始人)。