【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')

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

相关推荐
XIE39234 分钟前
Browser-use使用教程
python
酷爱码1 小时前
如何通过python连接hive,并对里面的表进行增删改查操作
开发语言·hive·python
蹦蹦跳跳真可爱5892 小时前
Python----深度学习(基于深度学习Pytroch簇分类,圆环分类,月牙分类)
人工智能·pytorch·python·深度学习·分类
MinggeQingchun5 小时前
Python - 爬虫-网页解析数据-库lxml(支持XPath)
爬虫·python·xpath·lxml
Python自动化办公社区6 小时前
Python 3.14:探索新版本的魅力与革新
开发语言·python
郭不耐6 小时前
DeepSeek智能时空数据分析(三):专业级地理数据可视化赏析-《杭州市国土空间总体规划(2021-2035年)》
人工智能·信息可视化·数据分析·毕业设计·数据可视化·城市规划
weixin_贾7 小时前
最新AI-Python机器学习与深度学习技术在植被参数反演中的核心技术应用
python·机器学习·植被参数·遥感反演
张槊哲7 小时前
函数的定义与使用(python)
开发语言·python
船长@Quant7 小时前
文档构建:Sphinx全面使用指南 — 实战篇
python·markdown·sphinx·文档构建
偶尔微微一笑8 小时前
AI网络渗透kali应用(gptshell)
linux·人工智能·python·自然语言处理·编辑器