Pandas分组

本文介绍了使用Python的Pandas库进行数据分组分析的方法,包括基本的分组、聚合计算、自定义分组键、多级索引分组等高级用法。通过实例展示了如何对数据集进行切割、应用及合并操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# coding: utf-8

# # 分组
# ## 对数据集合进行分类,然后方便对每一组的数据进行统计分析
# ## 分组运算过程:split(切割)——apply(应用)——combine(合并)
# ## 切割:根据什么数据进行分组
# ## 应用:每一个分组后的数据怎么处理,怎么计算,指的是数据的处理过程
# ## 合并:将每一个分组计算后的结果合并起来,统一展示


import numpy as np
import pandas as pd


dict_obj = {
    'key1':['a','b','a','b','a','b','a','b'],
    'key2':['one','two','three','one','three','three','two','one'],
    'data1':[5,6,5,2,3,3,2,4],
    'data2':[3,4,5,6,3,5,2,5]
}
df = pd.DataFrame(dict_obj)
print df


group1 = df.groupby('key1').mean()
print group1

group =df.groupby('key1').sum()
print group
# 对某一列进行分组
# 对data1这一列,按照key1分组,求每一列的总和
print df['data1'].groupby(df['key1']).sum()


group =df.groupby('key1')
# size()函数:用来查看分组中数据的个数
print group.size()
print df
# 根据自定义key进行分组
self_key = [1,1,1,2,2,3,3,3]
print df.groupby(self_key).size()


self_key = [1,1,1,2,2,3,3,3]
print df.groupby(self_key).sum()
print df
# 按多个键进行分组
res = df.groupby(['key1','key2'])
print res.size()
# DataFrameGroupBy对象和SeriesGroupBy对象支持迭代操作
print group
for group_name,group_data in group:
    print group_name
    print group_data
    print '========='
print res.size()
for group_name,gruop_data in res:
    print group_name
    print group_data
# groupby对象转化为list对象
print list(group)
# groupby对象转化为dict对象
#先转化为一个list对象,再转化一个dict对象
print dict(list(group)) 
# 按数据类型分组
print df
print '========='
print df.dtypes
print '---------'
print df.groupby(df.dtypes,axis=1).size() # 按列进行分组,
默认是按行进行分组
# 按照字典类型分组
my_dict = {
    'a':'python',
    'b':'html',
    'c':'java',
    'd':'css',
    'e':'python'
}

df = pd.DataFrame(np.random.randint(1,10,(5,5)),
columns=['a','b','c','d','e'],index=['A','B','C','D','E'])
print df
print df.groupby(my_dict,axis=1).size()
print df.groupby(my_dict,axis=1).sum()
# 按索引级别分组
columns = pd.MultiIndex.from_arrays(
[
    ['python','java','python','java','python'],
    ['A','B','A','C','A']
],
    names=['language','index']    
)
df = pd.DataFrame(np.random.randint(1,10,(5,5)),columns=columns)
print df
#根据language分组
df.groupby(level='index',axis=1).size()
print df.groupby(level='index',axis=1).sum()
print df.groupby(level='language',axis=1).sum()
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值