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

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

相关推荐
2301_809204704 小时前
JavaScript中严格模式use-strict对引擎解析的辅助.txt
jvm·数据库·python
zjy277775 小时前
mysql如何选择合适的索引类型_mysql索引设计实战
jvm·数据库·python
Aaswk5 小时前
Java Lambda 表达式与流处理
java·开发语言·python
万邦科技Lafite5 小时前
京东item_get接口实战案例:实时商品价格监控全流程解析
java·开发语言·数据库·python·开放api·淘宝开放平台
Cyber4K6 小时前
【Python专项】进阶语法-系统资源监控与数据采集(1)
开发语言·python·php
苍煜7 小时前
Java开发IO零基础吃透:BIO、NIO、同步异步、阻塞非阻塞
java·python·nio
AllData公司负责人8 小时前
通过Postgresql同步到Doris,全视角演示AllData数据中台核心功能效果,涵盖:数据入湖仓,数据同步,数据处理,数据服务,BI可视化驾驶舱
java·大数据·数据库·数据仓库·人工智能·python·postgresql
Flittly9 小时前
【LangGraph新手村系列】(5)时间旅行:浏览历史、分叉时间线与修改过去
python·langchain
2301_782040459 小时前
CSS Flex布局中如何实现导航栏与Logo的左右分布_利用justify-content- space-between
jvm·数据库·python
yaoxin52112310 小时前
400. Java 文件操作基础 - 使用 Buffered Stream I/O 读取文本文件
java·开发语言·python