[特殊字符] Pandas 鲜为人知但超好用的数据透视技巧:crosstab 比 pivot_table 更简单!

今天给大家分享一个 Pandas 中比 pivot_table 更简单的数据透视方法 —— pd.crosstab(),特别适合做快速频数统计和交叉分析!

🔥 为什么要用 crosstab?

很多同学做数据透视只知道用 pivot_table,但其实对于简单的频数统计,crosstab 更加简洁高效:

import pandas as pd
import numpy as np

# 创建示例数据
data = {
    '部门': ['销售', '技术', '销售', '人事', '技术', '销售', '人事', '技术'],
    '性别': ['男', '男', '女', '女', '男', '女', '女', '男'],
    '绩效': [85, 90, 88, 92, 87, 95, 90, 85]
}

df = pd.DataFrame(data)
print("原始数据:")
print(df)

输出结果:

原始数据:
  部门 性别  绩效
0  销售  男  85
1  技术  男  90
2  销售  女  88
3  人事  女  92
4  技术  男  87
5  销售  女  95
6  人事  女  90
7  技术  男  85

✨ crosstab 基础用法

# 统计各部门男女员工人数
result = pd.crosstab(df['部门'], df['性别'])
print("\n各部门性别分布:")
print(result)

输出结果:

各部门性别分布:
性别  女  男
部门        
人事  2  0
技术  0  3
销售  2  1

💡 进阶技巧:添加汇总和百分比

# 添加行汇总和百分比
result = pd.crosstab(
    df['部门'], 
    df['性别'],
    margins=True,  # 添加总计
    margins_name="总计",
    normalize='index'  # 行百分比
)

print("\n各部门性别分布(带百分比):")
print(result)

输出结果:

各部门性别分布(带百分比):
性别        女    男   总计
部门                    
人事  1.000000  0.000000  1.0
技术  0.000000  1.000000  1.0
销售  0.666667  0.333333  1.0
总计  0.500000  0.500000  1.0

📊 可视化展示

import matplotlib.pyplot as plt

pd.crosstab(df['部门'], df['性别']).plot.bar()
plt.title('各部门性别分布')
plt.ylabel('人数')
plt.show()

🎯 使用场景总结

pd.crosstab() 特别适合:

  1. 快速统计分类变量交叉频数

  2. 制作百分比交叉表

  3. 小数据集的快速探索性分析

相比 pivot_table,它的语法更简洁,执行速度也更快!

💬 互动时间:你在工作中最常用哪种数据透视方法?pivot_table 还是 crosstab?或者有其他更好的方法?欢迎在评论区分享你的经验!

👍 如果觉得有用,请点赞+收藏,下次我会分享更多 Pandas 的隐藏技巧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值