一、groupby分组聚合

分组与聚合通常是分析数据的一种方式,通常与一些统计函数一起使用查看数据的分组情况

代码示例如下 

import pandas as pd
import numpy as np
df = pd.DataFrame({'颜色': ['蓝色', '灰色', '蓝色', '灰色', '黑色'], '商品': ['钢笔', '钢笔', '铅笔', '铅笔', '文具盒'],'售价':[2.5, 2.3, 1.5, 1.3, 5.2],'会员价':[2.2, 2, 1.3, 1.2, 5.0]})
df

df.groupby([ '商品']).mean(numeric_only=True)

二、分层索引

可以使用 level 参数按分层索引的不同级别进行分组

arrays = [['Falcon', 'Falcon', 'Parrot', 'Parrot'],
          ['Captive', 'Wild', 'Captive', 'Wild']]
index = pd.MultiIndex.from_arrays(arrays, names=('Animal', 'Type'))  # from_arrays用于数组arrays转为多索引multiIndex,多维数组作为参数,高维指定高层索引,低维指定低层索引
index
--------------------------------------------------------------
df = pd.DataFrame({'Max Speed': [390., 350., 30., 20.]}, index=index)   # index为行标签索引
df

df.groupby(level=1).mean()   # 层次索引:可以使用级别参数按层次索引的不同级别分组

df.groupby(level='Type').mean()   # 层次索引:可以使用级别参数按层次索引的不同级别分组

df.groupby(level=0).mean()

三、设置是否包含NaN

可以通过设置 dropna 参数来选择是否在组键中包含 NA,默认设置为 True,即不包含NaN值

l = [[1, 2, 3], [1, None, 4], [2, 1, 3], [1, 2, 2]]
df = pd.DataFrame(l, columns=["a", "b", "c"])
df

df.groupby(by=["b"]).sum()   # 还可以通过设置 dropna 参数来选择是否在组键中包含 NA,默认设置为 True

df.groupby(by=["b"], dropna=False).sum()  # dropna=False,即包含NaN

l = [["a", 12, 12], [None, 12.3, 33.], ["b", 12.3, 123], ["a", 1, 1]]
l

df = pd.DataFrame(l, columns=["a", "b", "c"])   # columns为列标签索引
df

df.groupby(by="a").sum()  # 按a列分组,对其他列进行求和,默认dropna=True,即不包含NaN值

df.groupby(by="a", dropna=False).sum()  # 为False时包含NaN值

四、排除组键

df = pd.DataFrame({'Animal': ['Falcon', 'Falcon', 'Parrot', 'Parrot'], 'Max Speed': [380., 370., 24., 26.]})
df

df.groupby("Animal", group_keys=True).apply(lambda x: x)  # 使用 group_keys 包含或排除组键,默认为 True(包含)

df.groupby("Animal", group_keys=False).apply(lambda x: x)   # group_keys=False,即排除组键

五、星巴克零售店铺数据

星巴克directory.csv数据获取下载https://pan.baidu.com/s/1LG7YlezfSvPC6I7IvfUk4Q?pwd=fsp8

# 读取星巴克店的数据
starbucks = pd.read_csv("../data/directory.csv")
starbucks.head()   # head()表示取前五
---------------------------------------------------
# 按照国家分组,求出星巴克零售店数量前10个国家
count = starbucks.groupby(['Country'])["Store Number"].count().sort_values(ascending=False)   # count()即为聚合sort_values表示进行排序,ascending=False即降序排序
count.head(10)
---------------------------------------------------
# 按照国家分组,求出星巴克零售店数量前10个国家,并作柱状图
count = starbucks.groupby(['Country'])["Store Number"].count().sort_values(ascending=False)
count.head(10).plot(kind='bar')
plt.show()
---------------------------------------------------
# 设置多个索引,将国家省市作为分组
starbucks.groupby(['Country', 'State/Province']).count().head()

 操作如下

以下结构与MultiIndex结构 类似

 学习导航http://xqnav.top/

原文地址:https://blog.csdn.net/qq_43874317/article/details/128143430

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_12265.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注