Python 基础入门 Day20

49次阅读
没有评论

共计 2327 个字符,预计需要花费 6 分钟才能阅读完成。

欢迎来到 Python 基础入门 Day20!在 Day19 中,我们初步学习了 Pandas 库的基本概念和操作方法,今天我们将深入学习 Pandas 的数据清洗、分组聚合 数据可视化的结合应用。这些技能对于数据分析师来说是至关重要的,因为大多数数据工作涉及到对数据的清洗和聚合操作。


目录

  1. 数据清洗:处理缺失数据
  2. 数据清洗:数据类型转换
  3. 分组与聚合操作
  4. 使用 Pandas 和 Seaborn 结合进行数据可视化
  5. 小结与练习

一、数据清洗:处理缺失数据

在数据分析中,经常会遇到缺失值。Pandas 提供了多种方法来处理缺失数据。

1.1 检查缺失值

使用 isnull() 方法来检测缺失值,返回布尔类型的数据框。

# 检查是否存在缺失值
df.isnull()

1.2 删除缺失值

可以使用 dropna() 删除含有缺失值的行或列。

# 删除包含缺失值的行
df.dropna(axis=0, inplace=True)

# 删除包含缺失值的列
df.dropna(axis=1, inplace=True)

1.3 填充缺失值

如果不想删除缺失值,可以选择使用 fillna() 填充缺失值。常用的填充值包括均值、中位数或自定义值。

# 填充缺失值为均值
df["column_name"].fillna(df["column_name"].mean(), inplace=True)

# 填充缺失值为固定值
df["column_name"].fillna(0, inplace=True)

二、数据清洗:数据类型转换

有时候数据的类型不符合预期(例如,数字被当作字符串),这时需要进行数据类型转换。

2.1 转换数据类型

使用 astype() 方法将数据转换为指定类型。

# 将年龄列转换为整数类型
df["Age"] = df["Age"].astype(int)

# 将日期列转换为日期类型
df["Date"] = pd.to_datetime(df["Date"])

2.2 转换字符串为类别类型

对于分类变量,可以将字符串转换为 category 类型,从而节省内存并提高效率。

# 将性别列转换为类别类型
df["Gender"] = df["Gender"].astype("category")

三、分组与聚合操作

Pandas 提供了强大的分组与聚合功能,常用于对数据进行汇总、平均值计算、计数等操作。

3.1 按条件分组

使用 groupby() 方法按列进行分组,并对每个组进行操作。

# 按照 "Gender" 列分组并计算每组的平均值
grouped = df.groupby("Gender").mean()

# 按照多个列进行分组
grouped_multi = df.groupby(["Gender", "Age"]).agg({"Salary": "mean", "Bonus": "sum"})

3.2 聚合操作

agg() 方法允许对每个组执行不同的聚合操作,比如计算均值、最大值、最小值等。

# 对每个组计算多个聚合操作
grouped = df.groupby("Gender").agg({"Salary": ["mean", "sum", "max"],
    "Age": "mean"
})

四、使用 Pandas 和 Seaborn 结合进行数据可视化

今天我们将结合 PandasSeaborn,将聚合后的数据可视化,让我们更直观地分析数据。

4.1 绘制分组聚合后的柱状图

假设我们按性别对薪资进行了聚合,现在我们希望绘制每个性别的平均薪资柱状图。

import seaborn as sns
import matplotlib.pyplot as plt

# 按性别分组并计算薪资的平均值
grouped = df.groupby("Gender")["Salary"].mean().reset_index()

# 使用 Seaborn 绘制柱状图
sns.barplot(data=grouped, x="Gender", y="Salary")
plt.title("Average Salary by Gender")
plt.show()

4.2 绘制小费与总账单的关系图

我们可以使用 Seaborn 绘制总账单与小费之间的关系图。

# 使用 Seaborn 绘制散点图
sns.scatterplot(data=df, x="total_bill", y="tip", hue="time")
plt.title("Tip vs Total Bill")
plt.show()

4.3 使用聚合数据绘制折线图

我们还可以对分组后的数据绘制折线图,比如每个年龄段的平均薪资变化。

# 按年龄分组计算平均薪资
age_salary = df.groupby("Age")["Salary"].mean().reset_index()

# 绘制折线图
sns.lineplot(data=age_salary, x="Age", y="Salary")
plt.title("Average Salary by Age")
plt.show()

五、小结与练习

今天,我们学习了如何进行数据清洗和处理,并深入了解了如何使用 Pandas 进行数据分组和聚合操作。我们还结合了 Seaborn 库,通过可视化展示了聚合后的数据。

今日练习题:

  1. 创建一个包含 Product(商品名称)、Price(商品价格)、Quantity(销售数量)三列的数据框。
  2. 按照 Product 对数据进行分组,并计算每个商品的总销售额(Price * Quantity)。
  3. 使用 Seaborn 绘制一个柱状图,显示每个商品的总销售额。
  4. 假设数据框中有一个缺失值列,请尝试填充该列的缺失值为该列的均值,并进行数据类型转换。

下一节预告:在 Day21 中,我们将开始学习 Pandas 的高级功能,如数据透视表、合并与连接操作等,帮助你进一步提升数据分析技能。敬请期待!


希望你今天的学习顺利!如果有任何问题,欢迎随时讨论 😊。

正文完
 0
评论(没有评论)