当前位置: 首页 > 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" 调整。

相关文章:

  • 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
  • 左值与右值,空间与数据
  • 安徽池州做企业网站/搜索引擎谷歌
  • 搜索引擎不收录网站/360优化大师官网
  • 关于政府门户网站建设的见解/线上推广怎么做
  • 更换网站后台管理系统/怎样制作一个网站
  • 企业网站建设有什么/做seo推广一年大概的费用
  • 网站怎么做高权重/seo 工具推荐