oracle同⼀列数据不同条件分组求和_利⽤Python进⾏数据分
组数据透视表
1.数据分组
源数据表如下所⽰:
1.1 分组键是列名
分组键是列名时直接将某⼀列或多列的列名传给groupby()⽅法,groupby()⽅法就会按照这⼀列或多列进⾏分组。
按照⼀列进⾏分组
import pandas as pd
df = pd.ad_excel("Client_Data.xlsx"))
print(df)
#按照客户分类对数据进⾏分组
print (df.groupby("客户分类").count())
根据客户分类对所有数据进⾏分组,然后对分组以后的数据分别进⾏计数运算,最后进⾏合并,如下:
源数据展⽰及按客户分类的结果
按照多列进⾏分组
import pandas as pd
df = pd.ad_excel("Client_Data.xlsx"))
print(df)
#按照多列对数据进⾏分组
print (df.groupby(["客户分类","区域"]).count())
执⾏结果如图:
按照多列对数据进⾏分组
1.2 分组键是Series
把DataFrame的其中⼀列取出来就是⼀个Series,⽐如df["客户分类"]就是⼀个Series。
分组键是列名与分组键是Series的唯⼀区别就是,给groupby()⽅法传⼊了什么,其他都⼀样。可以按照⼀个或多个Series进⾏分组,分组以后的汇总计算也是完全⼀样的,也⽀持对分组以后的某些列进⾏汇总计算。
#按单个Series进⾏分组
print (df.groupby(df["客户分类"]).count())
#按单个Series进⾏分组
print (df.groupby(df["客户分类"],df["区域"]).count())
1.3 神奇的aggregate⽅法
aggregate的第⼀个神奇之处在于,⼀次可以使⽤多种汇总⽅式,⽐如下⾯的例⼦先对分组后的所有列做计数汇总运算,然后对所有列做求和汇总运算。
import pandas as pd
df = pd.ad_excel("Client_Data.xlsx"))
#对数据进⾏计数汇总与求和汇总运算
upby("客户分类").aggregate(["count","sum"]))
对数据进⾏计数汇总与求和汇总运算
aggregate的第⼆个神奇之处在于,可以针对不同的列做不同的汇总运算,⽐如,想看不同类别的⽤户有多少,那么对⽤户ID进⾏计数;想看不同类别的⽤户在7/8/9的销量,则需要对销量进⾏求和。
import pandas as pd
df = pd.ad_excel("Client_Data.xlsx"))python怎么读取excel某一列
upby("客户分类").aggregate({"⽤户ID":"count","7⽉销量":"sum","8⽉销量":"sum","9⽉销量":"sum"}))
对不同的列做不同的汇总运算
1.4 对分组后的结果重置索引
为了便于对分组结果进⾏进⼀步处理和分析,需要把⾮标准形式转化为标准的DataFrame形式,利⽤的⽅法就是重置索引reset_index()⽅法。
import pandas as pd
df = pd.ad_excel("Client_Data.xlsx"))
upby("客户分类").count())
#利⽤reset_index()重置索引
upby("客户分类").count().reset_index())
利⽤reset_index()重置索引
2.数据透视表
Python中的数据透视表⽤到的是pivot_table()⽅法,其全部参数如下:
pd.pivot_table(data,values=None,index=None,columns=None,aggfunc='mean',fill_value=None,margins=False,dropna==True,margins_name='All')
#data:表⽰要做数据透视表的整个表
#values:对应excel中值那个框
#index:对应excel中⾏那个框
#columns:对应excel中列那个框
#aggfunc:表⽰对values的计算类型
#fill_value:表⽰对空值的填充值
#margins:表⽰是否显⽰合计列
#dropna:表⽰是否删除缺失,如果为真时,则把⼀整⾏全作为缺失值删除
#margins_name:表⽰合计列的列名
实例,客户分类作为index,区域作为columns,⽤户ID作为values,对values执⾏count运算:
import pandas as pd
df = pd.ad_excel("Client_Data.xlsx"))
#客户分类作为index,区域作为columns,⽤户ID作为values,对values执⾏count运算
print(pd.pivot_table(df,values="⽤户ID",index="客户分类",columns="区域",aggfunc='count',margins=True))
执⾏结果如下:
透视表运算结果
可⽤margins_name对合计列名称"All"进⾏修改。可⽤fill_value对缺失值进⾏填充。
可⽤reset_index()对透视表结果进⾏重置索引。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论