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 透视表 计数_透视表

'''
区分三种计数函数对缺失值的处理
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
计数函数 不同于 计算函数
比如 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
margins 汇总统计中, 将各组内所有元素降维汇总到一起, 再统计
三种计数函数的区别 见下表
计算函数对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 透视表 计数_缺失值_04

python 定位文件位置 python文件定位语句

PYTHON 文件读写、坐标寻址、查找替换 文章目录PYTHON 文件读写、坐标寻址、查找替换读文件打开文件(文件需要存在)完全读取文件按按行读取整个文件方法一(删除回车)按行读取整个文件方法一(不删除回车)按行读取整个文件第二种方法按行读取整个文件第三种方法将文件读入numpy数组中写文件列表写入文件非替换写入文件坐标插入读取内容查找替换 读文件打开文件(文件需要存在)#打开文件 f = ope