0
点赞
收藏
分享

微信扫一扫

使用Pandas进行高效数据处理与分析

林塬 05-30 06:00 阅读 9

为什么选择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

核心操作:数据读取与清洗
  1. 读取多种数据源

# 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)

  1. 数据清洗

# 处理缺失值
df.dropna(subset=["Age"])  # 删除Age为空的行
df["City"].fillna("Unknown")  # 填充缺失值
# 去重
df.drop_duplicates()
# 类型转换
df["Age"] = df["Age"].astype(int)

数据转换与分析
  1. 筛选与排序

# 筛选年龄>28的人
df[df["Age"] > 28]
# 按年龄排序
df.sort_values(by="Age", ascending=False)

  1. 分组与聚合

# 按城市分组,计算平均年龄
df.groupby("City")["Age"].mean()
# 透视表(交叉表)
df.pivot_table(index="City", columns="Age", aggfunc="size", fill_value=0)

  1. 时间序列处理

# 转换日期列为datetime类型
df["Date"] = pd.to_datetime(df["Date"])
# 按月分组统计
df.groupby(df["Date"].dt.month)["Sales"].sum()

数据可视化
  1. 基础绘图

df["Age"].plot(kind="hist")  # 直方图
df.plot(x="Age", y="Salary", kind="scatter")  # 散点图

  1. 结合Seaborn

import seaborn as sns
sns.barplot(x="City", y="Age", data=df)  # 条形图
sns.heatmap(df.corr(), annot=True)  # 热力图

  1. 保存图表

plt.savefig("output.png", dpi=300)  # 高分辨率保存

实战案例:分析电商销售数据
  1. 读取数据

df = pd.read_csv("sales_data.csv", parse_dates=["Order Date"])

  1. 数据清洗

df.dropna(subset=["Quantity", "Price"])  # 删除关键字段缺失的行
df["Total"] = df["Quantity"] * df["Price"]  # 新增总价列

  1. 分析与可视化

# 按月份统计销售额
monthly_sales = df.groupby(df["Order Date"].dt.month)["Total"].sum()
monthly_sales.plot(kind="line")
# 按产品分类统计销量
sns.countplot(x="Product", data=df)

进阶技巧:性能优化与扩展
  1. 处理大文件

# 分块读取(避免内存溢出)
for chunk in pd.read_csv("large_file.csv", chunksize=10000):
    process(chunk)  # 自定义处理函数

  1. 内存优化

df = df.astype({"Age": "int32", "Price": "float32"})  # 减少内存占用

  1. 与其他工具结合
  • 数据库:直接读取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创始人)。
举报

相关推荐

0 条评论