Pandas 进阶 —— 数据转换、聚合与可视化

引言

在数据分析的旅程中,Pandas 库提供了从数据转换到聚合再到可视化的全面解决方案。上篇我们掌握了数据的导入和清洗,本篇我们将探索如何通过 Pandas 对数据进行更高级的处理,包括数据转换、聚合分析以及可视化展示。

数据转换

数据转换是数据分析中的重要环节,它涉及到数据结构的调整和变换,以适应不同的分析需求。

  • 数据重塑 :通过 melt(), pivot(), pivot_table() 函数,我们可以将数据从宽格式转换为长格式,或者重新排列数据的行列,以便于分析。
  • 数据类型转换 :使用 astype() 函数可以转换数据的类型,例如将字符串转换为数值类型,以便进行数值计算。
  • 数据排序sort_values() 函数可以用来根据某个或某些列的值进行排序,这对于数据的直观理解和后续分析至关重要。

代码示例:

python 复制代码
# 将宽格式数据转换为长格式
df_long = df.melt(id_vars=['Name', 'Age'], 
                   value_vars=['Gender', 'Salary'], 
                   var_name='Attribute', 
                   value_name='Value')
print(df_long)

# 转换数据类型
df['Age'] = df['Age'].astype(int)

# 根据薪资进行排序
df_sorted = df.sort_values(by='Salary', ascending=False)
数据聚合

数据聚合是通过某种方式将数据汇总起来,以得出有意义的统计信息。

  • 分组和聚合groupby() 函数结合 agg() 可以对数据进行分组,并应用多种聚合函数,如求和、平均、最大值等。
  • 窗口函数rolling()expanding() 函数用于执行移动窗口计算,这在时间序列分析中尤其有用。

代码示例:

python 复制代码
# 按性别分组并计算平均薪资
gender_salary_avg = df.groupby('Gender')['Salary'].mean()
print(gender_salary_avg)

# 使用窗口函数计算薪资的移动平均值
salary_rolling_mean = df['Salary'].rolling(window=3).mean()
时间序列分析

时间序列分析是数据分析中的一个重要领域,特别是在处理具有时间戳的数据时。

  • 解析日期时间to_datetime() 函数用于将字符串转换为日期时间格式,这是进行时间序列分析的第一步。
  • 时间索引 :使用 set_index() 可以将日期时间设置为 DataFrame 的索引,从而方便进行时间序列的切片和重采样。
  • 重采样resample() 函数用于更改时间序列的频率,进行上采样或下采样。

代码示例:

python 复制代码
# 解析日期时间并设置为索引
df['Date'] = pd.to_datetime(df['Date'])
df.set_index('Date', inplace=True)

# 按月重采样并计算平均薪资
monthly_avg_salary = df.resample('M').mean()['Salary']
数据可视化

数据可视化是数据分析的直观展示,Pandas 与 Matplotlib 等绘图库的结合使用,可以创建各种图表。

  • 基本绘图 :使用 plot() 函数可以快速绘制折线图、柱状图、饼图等。
  • 高级图表:包括直方图、箱线图、散点图等,这些图表可以帮助我们发现数据的分布、异常值和相关性。

代码示例:

python 复制代码
import matplotlib.pyplot as plt

# 绘制薪资的直方图
df['Salary'].plot(kind='hist')
plt.title('Salary Distribution')
plt.xlabel('Salary')
plt.ylabel('Frequency')
plt.show()

# 绘制薪资和年龄的散点图
df.plot(kind='scatter', x='Age', y='Salary')
plt.title('Salary vs Age')
plt.xlabel('Age')
plt.ylabel('Salary')
plt.show()
结语

通过本文的学习,我们不仅掌握了 Pandas 的数据转换、聚合和可视化技巧,而且通过具体的代码示例,能够将这些理论知识应用到实际的数据分析工作中。数据的探索和分析是一个不断深入的过程,Pandas 提供了强大的工具来帮助我们从不同角度理解和解释数据。希望你能将这些技能运用到自己的项目中,不断探索和发现数据的潜在价值。

相关推荐
牛马也想出海2 分钟前
使用Playwright被检测为机器人的原因及反检测方案
开发语言·网络·人工智能·机器人·php
GrowthDiary0079 分钟前
Python 常用函数总结
开发语言·python
热心网友俣先生22 分钟前
2026年华数杯C 题 超详细解题思路
c语言·开发语言·人工智能
啄缘之间35 分钟前
5.1 uvm‑component 的层级结构管理? new (name,parent) 参数
开发语言·笔记·学习·ic·uvm·sv
2601_9578838436 分钟前
2026年8月:外星人笔记本维修服务揭秘
python·电脑
eric-sjq41 分钟前
仅0.6B参数如何锁住超长记忆?Xiaothink-T17-RWKV5-MLA 架构深度解析:RWKV-v5 × MLA 的“降维打击“
python·架构
旖旎夜光1 小时前
C++(类与对象)(下)
开发语言·c++·学习
张小凡vip1 小时前
Python爬虫实战:高效稳定的文件下载模块设计与实现
开发语言·爬虫·python
江屿风1 小时前
【科普】【差集&交集概念落地云相册】流食般投喂
开发语言·c++·笔记·算法·云相册
代龙涛1 小时前
WordPress header.php 与 footer.php 模板结构详解
开发语言·php·wordpress