python中的pandas可以方便地生成透视表,读取原始数据。

>>> df = pd.DataFrame(pd.read_excel('测试数据.xlsx',sheet_name = 'Sheet1'))
    编号  客户  商品  金额   付款
0  100  张三  苹果  101  100  张三  香蕉  202  100  张三  葡萄  20  NaN
3  101  李四  雪梨  304  101  李四  龙眼  105  101  李四  苹果  50  NaN
6  101  李四  香蕉  30  NaN
7  102  王五  葡萄  308  102  王五  雪梨  10  NaN

如想统计每个客户有几个商品已经付款了,aggfunc可以取’count’值,如果是len值,则会把空值添加上,这里LEN统计下ALL的值为什么是5而不是9暂时未知原因。

>>> pd.pivot_table(df,index=["客户"],values = ["付款"],\
                     aggfunc= ['count',len],margins = True)
    count len
       付款  付款
张三      2   3
李四      2   4
王五      1   2
All     5   5

使用下面的代码可以获得正确的结果,这里要注意空值的处理,对df要先进行df.fillna(0)处理,把空值都替换为0,否则np.count_nonzero会把所有不等于0的值进行计数,得到错误的结果。

>>> pd.pivot_table(df.fillna(0),index=["客户"],values = ["付款"],\
                     aggfunc= ['count',len,np.count_nonzero],margins = True)
    count len count_nonzero
       付款  付款            付款
张三      3   3             2
李四      4   4             2
王五      2   2             1
All     9   9             5

完整代码如下:

import pandas as pd
import openpyxl
import numpy as np
df = pd.DataFrame(pd.read_excel('测试数据.xlsx',sheet_name = 'Sheet1'))
writer = pd.ExcelWriter('test.xlsx')
df2 = pd.pivot_table(df.fillna(0),index=["客户"],values = ["付款"],\
                     aggfunc= ['count',len,np.count_nonzero],margins = True)
df2.to_excel(writer,sheet_name = '汇总')
writer.save()
writer.close()
                    python中的pandas可以方便地生成透视表,读取原始数据。>>> df = pd.DataFrame(pd.read_excel('测试数据.xlsx',sheet_name = 'Sheet1'))>>> df    编号  客户  商品  金额   付款0  100  张三  苹果  10    是1  100  张三  香蕉  20    ...
				
比如说有一个名为 df1 的dataframe 要统计某一列(比如说列名是city)中各个值出现的次数 #可以通过df.colname 来指定某个列,value_count()在这里进行计数 df2 = df1.city.value_counts() print(df2) df = df["推广计划"].value_counts().rename_axis('unique_values').reset_index(name='counts') unique_values counts 0 7 1 1 1 1
value_counts介绍 value_counts是一种查看某列中有多少个不同值的快捷方法,并计算每个不同值有在该列中个数,类似Excel里面的count函数 其是pandas下面的顶层函数,也可以作用在Series、DataFrame下 pd.value_counts( values, sort=True, #是否排序,默认是要排序 ascendin...
value_counts() 是一种查看某列中有多少个不同值的快捷方法,并计算每个不同值有在该列中有多少重复值。 是 Series 拥有的方法,统计所有非零元素的个数,默认以降序的方式输出Series,一般在 DataFrame 中使用时,需要指定对哪一列或行使用。 在Series类型中: 只有一条数据,不需要指定列数: import pandas as pd...
pandas中,value_counts常用于数据计数及排序,它可以用来查看数据表中,指定列里有多少个不同的数据值,并计算每个不同值在该列中的个数,同时还能根据需要进行排序。 函数体及主要参数: value_counts(values,sort=True, ascending=False, normalize=False,bins=None,dropna=True) 参数说明: sort=True: 是否要进行排序;默认进行排序 ascending=False: 默认降序排列; normalize
pandas的简单使用--数据统计统计汇总类统计(针对数值型)描述性统计(针对数值型)相关系数和协方差(针对数值型)不挑类型的统计groupby分组统计单个列groupby,查询所有数据列的统计多个列groupby,查询所有数据列的统计同时查看多种数据统计查看单列的结果数据统计不同列使用不同的聚合函数遍历groupby的结果理解执行流程遍历单个列聚合的分组遍历多个列聚合的分组 汇总类统计(针对数值型) # 统计每一列的个数 df.count() # 统计值的个数(一般搭配列使用) # 不加列df.
假设有 5 个人,分别参加了 4 门课程,获得了对应的分数 同时这个 5 个人分别负责的项目个数 在 ‘Project_num’ 列中显示 data = {‘name’ : pd.Series([‘Alice’, ‘Bob’, ‘Cathy’, ‘Dany’, ‘Ella’, ‘Ford’, ‘Gary’, ‘Ham’, ‘Ico’, ‘Jack’]), 'Math_A' : pd.Series([1.1, 2.2, 3.3, 4.4, 5, 3
Pandas中的透视是一种数据操作方法,用于根据一个或多个列对数据进行汇总和聚合。通过透视,我们可以将数据按照特定的维度进行分组,并计算其他列的汇总统计信息,如求和、平均值、计数等。 在Pandas中,可以使用`pd.pivot_table()`函数来创建透视。这个函数接受多个参数,其中最重要的是`index`,它指定了要分组的列名;`columns`,它指定了要展示为列名的列;`values`,它指定了要计算汇总统计信息的列;以及`aggfunc`,它指定了要使用的聚合函数。 下面是一个简单的示例,展示如何使用Pandas创建透视: ```python import pandas as pd # 创建一个示例数据集 data = {'Name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob', 'Charlie'], 'Category': ['A', 'B', 'A', 'B', 'A', 'B'], 'Value': [1, 2, 3, 4, 5, 6]} df = pd.DataFrame(data) # 创建透视 pivot_table = pd.pivot_table(df, index='Name', columns='Category', values='Value', aggfunc='sum') print(pivot_table) 这段代码会将数据按照`Name`列进行分组,以`Category`列作为列名,计算`Value`列的和作为汇总统计信息。 透视数据分析和报生成中非常有用,可以帮助我们更好地理解和展示数据的分布和统计信息。
[code=python] df10 = pd.merge(df6,df9.loc[:,["新供应商","跟单"]],how='left',on="新供应商") print(df10.head(20)) [/code][code=plain] [/code][code=python] [/code]学到了,非常值得一看。 用python将一个excel工作表根据条件拆分成多个工作表 weixin_42227412: AttributeError: 'Workbook' object has no attribute 'add_worksheet'求教咋解决