Python Pandas pivot_table 透视表 计数
  X5zJxoD00Cah 2023年11月02日 233 0

pivot_table函数

pivot_table(
    data= 表格,
    index= 行,
    columns= 列,
    values= 值,
    aggfunc= 计数函数,
    margins= True # 汇总统计
)

aggfunc调用函数, 不带括号

不带括号时, 调用的是这个函数本身, 是一个函数对象

带括号时, 调用的是函数的执行结果


透视表中的行,列, 不能同时成为透视表的值

如果某列既是透视表的 行或列, 又是透视表中分类计数的值, 需要在透视前复制该列为新的独立列

否则会报错, Grouper for ... not 1-dimensional


margins 汇总统计中, 将各组内所有元素降维汇总到一起, 再统计

np.count_nonzero()是用于, 统计矩阵中非零元素 的个数

 

df.fillna(0) 只会填充np.nan 和None 而不会填充空字符串等其他非数值元素

计数函数

  • 'count'
  • len
  • np.count_nonzero

实验 区分这三种计数函数对缺失值的处理

'''表格准备'''
import pandas as pd
import numpy as np

行 = ['A', 'B', 'C', 'D', 'E']
值 = [1, np.nan, '', ' ', '1']
df_jishu = pd.DataFrame([行, 值], index= ['行', '值']).T

df_jishu.insert(
    loc= 1,
    column= '列',
    value= ['数值', 'np.nan', '空字符串', '空格字符串', '其他非空字符串']
)

df_jishu_1 = pd.concat([df_jishu, df_jishu]).reset_index(drop= True)
df_jishu_1

Python Pandas pivot_table 透视表 计数_pandas

'''
实验1
区分三种计数函数对缺失值的处理
'''

df_jishu_2 = df_jishu_1.pivot_table(
    index= '行',
    columns= '列',
    values= '值',
    aggfunc= [len, 'count', np.count_nonzero],
    margins= True
)
df_jishu_2.columns.names = ['计数函数', '数据类型']
df_jishu_2

'''
笔记1
计数函数 不同于 计算函数
比如 len 不同于 加减乘除或sum

笔记1.1
在计算函数中 含有非数值类型 会报错

笔记1.2
在计算函数中 含有np.nan 会导致结果为nan (加减乘除或sum)
但在pivot_table,分组求和,df.列求和中 计算函数会忽略np.nan
例如:
'''

sum([1,2,np.nan]) # 结果为nan

df_ = pd.DataFrame([['A']*3, [1,2]], index= ['0', '1']).T
df_.pivot_table(index= ['0'], values= ['1'], aggfunc= np.sum)
df_.groupby('0').sum() # 结果为3

'''
笔记2
margins 汇总统计中, 将各组内所有元素降维汇总到一起, 再统计

笔记3
三种计数函数的区别 见下表

笔记4
计算函数对np.nan的处理 
'''

Python Pandas pivot_table 透视表 计数_缺失值_02

参考文献

透视表的计数方法

函数带括号与不带

聚合统计的各种方法

np.count_nonzero

https://blog.csdn.net/bin083/article/details/98122531

https://blog.csdn.net/ITLearnHall/article/details/80894365

https://www.51cto.com/article/665805.html

https://blog.csdn.net/zfhsfdhdfajhsr/article/details/109813613

Python Pandas pivot_table 透视表 计数_透视表_03

Python Pandas pivot_table 透视表 计数_pandas_04

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  X5zJxoD00Cah   2023年12月11日   26   0   0 知乎Python迭代器
  X5zJxoD00Cah   2023年12月12日   34   0   0 Python.net
X5zJxoD00Cah