当前位置: 首页 > news >正文

透视表(pivot table)中的某类型数据进行降序排列

要对透视表(pivot table)中的 "action" 类型数据进行降序排列,可以使用 Pandas 的 sort_values() 方法。以下是具体方法和解释:


1. 原始透视表结构

假设你的透视表是通过以下代码生成的:

pivot_table = pd.pivot_table(
    clear_combined_data,
    index=["genres"],
    columns="person_id",
    values="imdb_score",
    aggfunc=np.sum
)

透视表可能如下(示例):

person_id    101    102    103
genres                       
Action      7.5    8.0    NaN
Comedy      6.5    NaN    7.0
Drama       NaN    9.0    6.0

2. 提取 "action" 类型数据

action_data = pivot_table.loc["Action"]  # 提取 "Action" 行

输出:

person_id
101    7.5
102    8.0
103    NaN
Name: Action, dtype: float64

3. 对 action_data 降序排列

由于 action_data 是一个 Series(一维数据),直接使用 sort_values()

action_sorted = action_data.sort_values(ascending=False)
参数说明
  • ascending=False:降序排列(默认是 True 升序)。
  • 如果数据中有 NaN,默认会排在最后。
输出结果
person_id
102    8.0
101    7.5
103    NaN
Name: Action, dtype: float64

4. 如果你想按列(演员ID)对透视表排序

如果目标是 对所有电影类型按某列(如演员ID=101)降序排列,可以这样操作:

pivot_sorted = pivot_table.sort_values(by=101, ascending=False)

输出:

person_id    101    102    103
genres                       
Action      7.5    8.0    NaN
Comedy      6.5    NaN    7.0
Drama       NaN    9.0    6.0

(因为 Action 的101列值是7.5,高于 Comedy 的6.5)


5. 完整代码示例

import pandas as pd
import numpy as np

# 假设原始数据
data = {
    "genres": ["Action", "Action", "Comedy", "Comedy", "Drama", "Drama"],
    "person_id": [101, 102, 101, 103, 102, 103],
    "imdb_score": [7.5, 8.0, 6.5, 7.0, 9.0, 6.0]
}
clear_combined_data = pd.DataFrame(data)

# 生成透视表
pivot_table = pd.pivot_table(
    clear_combined_data,
    index=["genres"],
    columns="person_id",
    values="imdb_score",
    aggfunc=np.sum
)

# 1. 提取 "Action" 类型并降序排列
action_sorted = pivot_table.loc["Action"].sort_values(ascending=False)
print("Action类型降序排列:\n", action_sorted)

# 2. 对整个透视表按演员101的评分降序排列
pivot_sorted = pivot_table.sort_values(by=101, ascending=False)
print("\n透视表按演员101降序排列:\n", pivot_sorted)

6. 输出结果

Action类型降序排列:
 person_id
102    8.0
101    7.5
103    NaN
Name: Action, dtype: float64

透视表按演员101降序排列:
 person_id    101    102    103
genres                       
Action      7.5    8.0    NaN
Comedy      6.5    NaN    7.0
Drama       NaN    9.0    6.0

总结

  • 对单行(如 "Action")排序
    pivot_table.loc["Action"].sort_values(ascending=False)
  • 对整个透视表按某列排序
    pivot_table.sort_values(by=列名, ascending=False)
  • 处理 NaN:默认排在最后,可通过 na_position="first" 调整。
http://www.dtcms.com/a/115282.html

相关文章:

  • HTML5
  • 《C++探幽:STL(string类源码的简易实现(上))》
  • 免费送源码:Java+ssm+MySQL 校园二手书销售平台设计与实现 计算机毕业设计原创定制
  • lower_bound 和 upper_bound 是两个强大的二分查找函数
  • Vue基础知识21-30
  • 55.跳跃游戏
  • 《比特城的七重结界:从数据洪流到量子盾牌的终极守护》
  • ZooKeeper集群部署(容器)
  • 如何深入理解C#中的备忘录模式(Memento Pattern)设计模式
  • Git常用问题收集
  • 创作五周年纪:数据之路的星光与远方
  • 深入理解 C++ 内置数组(四十三)
  • ​docker加docker compose实现软件快速安装启动
  • 唯美社区源码AM社区同款源码
  • 【MySQL | 八、 事务管理】
  • STM32F4系列ADC模块:原理、配置与实战应用
  • 【C++11(下)】—— 我与C++的不解之缘(三十二)
  • Python星球日记 - 第6天:列表与元组
  • 【大语言模型推理框架】VLLM
  • 左值与右值,空间与数据
  • Leetcode 3510. Minimum Pair Removal to Sort Array II
  • java基础自用笔记:文件、递归、常见的字符集、IO流
  • (done) 并行计算 CS149 Lecture1 (Why parallelism? Why efficiency?) (并行基本概念、硬件基础)
  • ctfshow VIP题目限免(后10题)
  • 消息队列(kafka 与 rocketMQ)
  • Llama 4 最新发布模型分析
  • rocketmq中的延迟队列使用详解
  • 深度学习图像分类数据集—十种西红柿病态叶识别分类
  • ISP算法从入门到精通:全面解析图像信号处理技术
  • 1Panel安装失败 国内docker安装失败