【Python】Pandas:数据分析

Pandas 是 Python 中功能强大的数据分析工具,用于处理和分析结构化数据。本文将通过分步骤的方式,详细介绍如何使用 Pandas 进行数据分组、重塑、透视表、时间序列处理、类别型数据管理以及数据可视化。这些知识点将帮助初学者快速上手并掌握 Pandas 的核心功能。

数据分组(Grouping)

数据分组是数据分析中的常见操作,Pandas 的 groupby() 方法允许我们按列对数据进行分组,然后对每个组执行聚合运算,如计算平均值、总和等。

按列分组并计算平均值

在数据分析中,经常需要根据某一列对数据进行分组,并计算每个组的统计指标。以下是按 Name 列分组并计算每组 Age 列平均值的示例:

python 复制代码
import pandas as pd

# 示例数据
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob', 'Charlie'],
    'Age': [26, 30, 35, 24, 29, 37],
    'Score': [85, 90, 88, 75, 95, 85]
}

df = pd.DataFrame(data)

# 按 Name 列分组,并计算每组的平均值
grouped = df.groupby('Name').mean()
print(grouped)

输出结果如下:

复制代码
          Age  Score
Name                  
Alice     25.0   80.0
Bob       29.5   92.5
Charlie   36.0   86.5

在这个例子中,数据按 Name 列分组,并计算每个名字的 AgeScore 的平均值。groupby() 方法允许对分组数据执行各种聚合操作,如 mean()sum()count() 等。

数据重塑(Reshaping)

数据重塑涉及将数据从一种格式转换为另一种格式。Pandas 提供了多种方法来重塑数据结构,以下是常用的堆叠(stack)操作。

堆叠(Stack)

stack() 方法将 DataFrame 的列"堆叠"为行,将宽格式数据转换为长格式。

python 复制代码
# 示例数据
df = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [26, 30, 35],
    'Score': [85, 90, 88]
})

# 使用 stack() 方法将数据堆叠
stacked = df.stack()
print(stacked)

输出结果如下:

复制代码
0  Name     Alice
   Age         26
   Score       85
1  Name       Bob
   Age         30
   Score       90
2  Name   Charlie
   Age         35
   Score       88
dtype: object

在此示例中,stack() 将原本的列转换为行,将每个数据点进行堆叠。这种格式在多维数据处理中非常有用。

数据透视表(Pivot Tables)

数据透视表是一种用于汇总和分析多维数据的工具。Pandas 的 pivot_table() 方法使得创建数据透视表变得简单。

创建透视表

我们可以使用 pivot_table() 方法,基于特定列的值进行聚合分析。

python 复制代码
# 示例数据
df = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob', 'Charlie'],
    'Age': [26, 30, 35, 24, 29, 37],
    'Score': [85, 90, 88, 75, 95, 85]
})

# 创建透视表
pivot = df.pivot_table(values='Age', index='Name', aggfunc='mean')
print(pivot)

输出结果如下:

复制代码
          Age
Name          
Alice     25.0
Bob       29.5
Charlie   36.0

在这个例子中,我们生成了一个透视表,该表根据 Name 分组,并计算每个名字的平均年龄。

时间序列(TimeSeries)

时间序列数据在数据分析中扮演着重要角色,Pandas 提供了一系列工具来处理时间序列数据。

生成日期范围

date_range() 方法用于生成一系列连续的日期,通常用于时间序列数据的初始化。

python 复制代码
# 生成日期范围
rng = pd.date_range('2024-01-01', periods=10, freq='D')
print(rng)

输出结果如下:

复制代码
DatetimeIndex(['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04',
               '2024-01-05', '2024-01-06', '2024-01-07', '2024-01-08',
               '2024-01-09', '2024-01-10'],
              dtype='datetime64[ns]', freq='D')

处理时间序列数据

使用 Pandas,我们可以轻松创建和操作时间序列数据。

python 复制代码
# 创建时间序列数据
ts = pd.Series(range(10), index=rng)
print(ts)

输出结果如下:

复制代码
2024-01-01    0
2024-01-02    1
2024-01-03    2
2024-01-04    3
2024-01-05    4
2024-01-06    5
2024-01-07    6
2024-01-08    7
2024-01-09    8
2024-01-10    9
Freq: D, dtype: int64

类别型数据(Categoricals)

Pandas 提供了对类别型数据的特殊支持,通过使用类别型数据,可以减少内存使用并加快操作速度。

转换为类别型数据

使用 astype('category') 方法可以将数据列转换为类别型数据。

python 复制代码
# 示例数据
df = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob', 'Charlie'],
    'Age': [26, 30, 35, 24, 29, 37]
})

# 将 Name 列转换为类别型数据
df['Category'] = df['Name'].astype('category')
print(df['Category'])

输出结果如下:

复制代码
0      Alice
1        Bob
2    Charlie
3      Alice
4        Bob
5    Charlie
Name: Category, dtype: category
Categories (3, object): ['Alice', 'Bob', 'Charlie']

数据可视化

Pandas 内置了简单的绘图功能,可以快速生成图表,以便更直观地分析数据。

绘制折线图

通过 plot() 方法,Pandas 可以快速绘制折线图,帮助我们观察数据的趋势。

python 复制代码
# 绘制折线图
df = pd.DataFrame({
    'Date': pd.date_range('2024-01-01', periods=5),
    'Value': [1, 3, 2, 4, 5]
})

df.plot(x='Date', y='Value')

这个示例中,plot() 方法会自动选择适当的绘图类型,并生成日期与数值的折线图。

绘制柱状图

你也可以使用 plot(kind='bar') 来绘制柱状图,以对比不同类别的数值。

python 复制代码
# 绘制柱状图
df['Value'].plot(kind='bar')

这种柱状图适合用于对比不同类别或时间段内的数值,便于快速了解各类数据之间的差异。

相关推荐
XLYcmy7 小时前
京东 算法实习一面 下+手撕
c++·python·llm·概率论·数据处理·训练·codebert
虎头金猫7 小时前
如何在群晖NAS上通过Docker部署CloudSaver?群晖部署CloudSaver教程|聚合资源搜索并实现远程访问
运维·服务器·网络·python·docker·容器·pandas
从零开始学习人工智能7 小时前
WSL2部署CUDA12+cuDNN9踩坑实录:ONNX Runtime GPU推理环境搭建全流程
python
m0_380743878 小时前
从零调用 Claude 教程
开发语言·python·node.js
min(a,b)9 小时前
学习第17天:Agent Memory 与 MCP 协议
python·学习
CodeBlog-star10 小时前
LLM安全实战:提示词注入与越狱攻击防御指南
python·agent·提示词攻击·越狱攻击
小柯南敲键盘10 小时前
电商图片翻译工具推荐,批量处理主图视频字幕,免费试用
大数据·人工智能·python·音视频
比高创意品牌策划设计11 小时前
零售卖场设计软件用CAD还是SketchUp还是酷家乐
python
迷迭香yy12 小时前
行业板块轮动因子实战从板块资金到因子建模的本地化Python全流程
数据库·人工智能·python
W_3260012 小时前
Python文件进阶:一维数据与 CSV 文件读写
开发语言·python