Appearance
透视表
透视表是数据分析中非常实用的工具,Pandas 提供了强大的透视表功能。
基本透视表
python
import pandas as pd
import numpy as np
df = pd.DataFrame({
'日期': ['周一', '周一', '周二', '周二', '周三', '周三'],
'产品': ['A', 'B', 'A', 'B', 'A', 'B'],
'销量': [100, 150, 120, 180, 130, 160],
'收入': [1000, 1500, 1200, 1800, 1300, 1600]
})
# 创建透视表
pivot = df.pivot_table(values='销量', index='日期', columns='产品')
print(pivot)多维度透视
python
df = pd.DataFrame({
'地区': ['北', '北', '南', '南', '北', '南'],
'日期': ['周一', '周二', '周一', '周二', '周三', '周三'],
'产品': ['A', 'A', 'B', 'B', 'A', 'B'],
'销量': [100, 120, 150, 180, 130, 160]
})
# 多维度透视
pivot = df.pivot_table(
values='销量',
index=['地区', '日期'],
columns='产品',
aggfunc='sum'
)
print(pivot)聚合函数
python
df = pd.DataFrame({
'部门': ['技术', '技术', '销售', '销售', '技术'],
'姓名': ['张三', '李四', '王五', '赵六', '孙七'],
'工资': [8000, 9000, 6000, 7000, 8500]
})
# 使用不同聚合函数
pivot = df.pivot_table(
values='工资',
index='部门',
aggfunc=['mean', 'sum', 'count', 'max', 'min']
)
print(pivot)填充缺失值
python
df = pd.DataFrame({
'日期': ['周一', '周一', '周二', '周二'],
'产品': ['A', 'B', 'A', 'B'],
'销量': [100, 150, 120, None]
})
# 填充缺失值
pivot = df.pivot_table(
values='销量',
index='日期',
columns='产品',
fill_value=0
)
print(pivot)边际汇总
python
df = pd.DataFrame({
'日期': ['周一', '周一', '周二', '周二'],
'产品': ['A', 'B', 'A', 'B'],
'销量': [100, 150, 120, 180]
})
# 添加行列总计
pivot = df.pivot_table(
values='销量',
index='日期',
columns='产品',
margins=True,
margins_name='总计'
)
print(pivot)交叉表
python
df = pd.DataFrame({
'性别': ['男', '女', '男', '女', '男'],
'部门': ['技术', '销售', '技术', '技术', '销售']
})
# 创建交叉表
cross = pd.crosstab(df['性别'], df['部门'])
print(cross)
# 添加总计
cross = pd.crosstab(df['性别'], df['部门'], margins=True)
print(cross)
# 百分比交叉表
cross = pd.crosstab(df['性别'], df['部门'], normalize='index')
print(cross)多级透视
python
df = pd.DataFrame({
'年': [2023, 2023, 2023, 2024, 2024],
'月': [1, 2, 1, 1, 2],
'产品': ['A', 'A', 'B', 'A', 'B'],
'销量': [100, 120, 150, 110, 160]
})
# 多级透视
pivot = df.pivot_table(
values='销量',
index=['年', '月'],
columns='产品',
aggfunc='sum'
)
print(pivot)透视表是数据分析的利器,可以快速地从不同维度分析数据。