Pandas行列变换指南:数据重塑的艺术

数据分析中,数据的形态至关重要。pandas库提供了一系列工具,让我们能够轻松地重塑数据。以下是一些常见的pandas行列变换方法,每种方法都配有完整的代码示例。

环境准备

首先,确保你的环境中安装了pandasnumpy库:

bash 复制代码
pip install pandas numpy

1. 转置(Transpose)

转置是将DataFrame的行和列互换。

python 复制代码
import pandas as pd
import numpy as np

# 创建一个示例DataFrame
df = pd.DataFrame({
    'A': [1, 2],
    'B': [3, 4]
})

# 转置操作
df_transposed = df.T
print(df_transposed)

2. 轴旋转(Pivot Table)

轴旋转常用于将长格式数据转换为宽格式。

python 复制代码
# 假设df是一个包含'Year', 'Category', 'Value'列的DataFrame

# 轴旋转,以Year为索引,Category为列,Value为聚合值
df_pivoted = df.pivot_table(index='Year', columns='Category', values='Value', aggfunc='sum')
print(df_pivoted)

3. 堆叠(Stack)

堆叠用于将多级列索引转换为行。

python 复制代码
# 假设df是一个具有多级列索引的DataFrame

# 堆叠操作,level参数指定要堆叠的索引级别
df_stacked = df.stack(level=0)
print(df_stacked)

4. 解包(Unstack)

解包是堆叠的逆操作,将多级索引的列转换为多级索引的行。

python 复制代码
# 假设df_stacked是堆叠后的DataFrame

# 解包操作
df_unstacked = df_stacked.unstack()
print(df_unstacked)

5. 重塑(Melt)

重塑用于将宽格式数据转换为长格式。

python 复制代码
# 假设df_pivoted是数据透视后的DataFrame

# 重塑操作
df_melted = df_pivoted.melt(var_name='Category', value_name='Value')
print(df_melted)

6. 数据透视(Pivot)

数据透视类似于轴旋转,但直接创建一个新的DataFrame。

python 复制代码
# 假设df是一个包含'Column1', 'Column2', 'Value'列的DataFrame

# 数据透视
df_pivoted = df.pivot(index='Column1', columns='Column2', values='Value')
print(df_pivoted)

7. 交换轴(Swapaxes)

交换轴用于交换DataFrame的行和列。

python 复制代码
# 交换轴操作
df_swapped = df.swapaxes(0, 1)
print(df_swapped)

8. 列的重新排序

列的重新排序可以通过reindex方法实现。

python 复制代码
# 重新排序列
df_reindexed = df[['B', 'A']]
print(df_reindexed)

9. 行的重新排序

行的重新排序可以通过sort_values方法实现。

python 复制代码
# 按某列的值排序
df_sorted = df.sort_values(by='A')
print(df_sorted)

10. 使用Numpy进行行列变换

使用numpy进行行列变换。

python 复制代码
# 将DataFrame转换为numpy数组并转置
array = df.to_numpy()
array_transposed = array.T

# 将转置后的数组转换回DataFrame
df_from_numpy = pd.DataFrame(array_transposed)
print(df_from_numpy)

总结

通过这些示例,我们可以看到pandas提供了多种灵活的方法来处理和重塑数据。掌握这些技巧,可以帮助你更有效地进行数据分析和可视化。

拓展学习

希望这篇指南能帮助你在数据分析的道路上更进一步,让你的数据操作更加得心应手。

相关推荐
曲幽4 分钟前
FastAPI + Vue 前后端分离实战:我的项目结构“避坑指南”
python·vue·fastapi·web·vite·proxy·cors·env
Kapaseker7 分钟前
Python 提速 — 惰性导入
python
杜子不疼.11 分钟前
Python + Ollama 本地跑大模型:零成本打造私有 AI 助手
开发语言·c++·人工智能·python
李昊哲小课11 分钟前
pip缓存配置
python·缓存·pip
belldeep12 分钟前
python:介绍 UV 安装,如何使用 UV 安装配置 OpenHarness
windows·python·环境变量·uv
理想三旬16 分钟前
Numpy 数据库
python·机器学习·numpy
波诺波24 分钟前
p3项目-模拟 PID 控制器用来调节直流电机的转速
python·pid
路飞雪吖~27 分钟前
【测试】接口测试---1个框架,5个模块
开发语言·python·测试工具
q_354888515330 分钟前
计算机毕业设计:Python居民出行规律可视化分析系统 Django框架 可视化 数据分析 PyEcharts 交通 深度学习(建议收藏)✅
人工智能·python·数据分析·车载系统·django·汽车·课程设计
FL162386312932 分钟前
基于yolov26的荔枝成熟度检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面
pytorch·python·yolo