Pandas之分组
假如我们现在有这样一组数据:星巴克在全球的咖啡店信息,如下图所示。数据来源:starbucks_store_locations。我们想要统计中国每个城市的星巴克商店的数量,那我们应该怎么做呢?

在pandas中,为我们提供了一个处理分组问题的函数groupby():
# coding=utf-8
import pandas as pd
file_path = "./starbucks_store_worldwide.csv"
# 设置最多输出20行
pd.set_option('display.max_rows',20)
df = pd.read_csv(file_path)
df_CN = df[df["Country"]=="CN"]
grouped_CN = df_CN.groupby(by="City")
print(grouped_CN["Brand"].count())
结果如下:
City
Admiralty          2
Causeway Bay       5
Central            1
Chaiwan            1
Changshu           1
Changzhou          1
Fortress Hill      1
Hangzhou           2
Hong Kong        104
Jiaxing            2
                ...
长春市               10
长沙市               26
阳江市                1
青岛市               28
靖江市                2
鞍山市                3
马鞍山                3
高邮市                1
黄石市                1
龙岩市                2
Name: Brand, Length: 197, dtype: int64
Process finished with exit code 0
假如我们不想先提取中国的数据再分组,而是想一步到位应该怎么做呢?
# coding=utf-8
import pandas as pd
file_path = "./starbucks_store_worldwide.csv"
# 设置最多输出20行
pd.set_option('display.max_rows',20)
df = pd.read_csv(file_path)
grouped = df[df["Country"] == "CN"]["Brand"].groupby(by=[df["Country"], df["City"]]).count()
print(grouped)
结果如下:
Country  City
CN       Admiralty          2
         Causeway Bay       5
         Central            1
         Chaiwan            1
         Changshu           1
         Changzhou          1
         Fortress Hill      1
         Hangzhou           2
         Hong Kong        104
         Jiaxing            2
                         ...
         长春市               10
         长沙市               26
         阳江市                1
         青岛市               28
         靖江市                2
         鞍山市                3
         马鞍山                3
         高邮市                1
         黄石市                1
         龙岩市                2
Name: Brand, Length: 197, dtype: int64
我们可以发现,与上面结果不同的是,这次的索引成了2列,不但有city,还有Country。这是因为我们再用group分组的时候传入了2个参数进去。
这里需要注意,最终的结果其实是包含双列索引的单列1维数组,类型是pandas.core.series.Series
Pandas之分组的更多相关文章
- Pandas | GroupBy 分组
		任何分组(groupby)操作都涉及原始对象的以下操作之一: 分割对象 应用一个函数 结合的结果 在许多情况下,我们将数据分成多个集合,并在每个子集上应用一些函数.在应用函数中,可以执行以下操作: 聚 ... 
- pandas之分组计算笔记
		分组计算三部曲:拆分-->应用-->合并 分组:就是按照行或列把相同索引的部分分到一起 分组的关键词为groupby,分组后我们就可以对每组数据进行同一操作,返回的是每组数据分别计算后的结 ... 
- pandas groupby 分组操作
		最一般化的groupby 方法是apply. tips=pd.read_csv('tips.csv') tips[:5] 新生成一列 tips['tip_pct']=tips['tip']/tips[ ... 
- pandas用法之二
		1,函数应用 ①map() 将函数作用于一个Series的每一个函数(不能是DataFrame) 类似于Python的高阶函数map() 函数可以是Numpy中的通用函数,也可以是自定义函数 优点:代 ... 
- Pandas模块:表计算与数据分析
		目录 Pandas之Series Pandas之DataFrame 一.pandas简单介绍 1.pandas是一个强大的Python数据分析的工具包.2.pandas是基于NumPy构建的. 3.p ... 
- 机器学习三剑客之Pandas
		pandas Pandas是基于Numpy开发出的,专门用于数据分析的开源Python库 Pandas的两大核心数据结构 Series(一维数据) Series 创建Series的方法 ... 
- Pandas:表计算与数据分析
		目录 Pandas之Series Pandas之DataFrame 一.pandas简单介绍 1.pandas是一个强大的Python数据分析的工具包.2.pandas是基于NumPy构建的. 3.p ... 
- (数据科学学习手札69)详解pandas中的map、apply、applymap、groupby、agg
		*从本篇开始所有文章的数据和代码都已上传至我的github仓库:https://github.com/CNFeffery/DataScienceStudyNotes 一.简介 pandas提供了很多方 ... 
- 利用Python进行数据分析:【Pandas】(Series+DataFrame)
		一.pandas简单介绍 1.pandas是一个强大的Python数据分析的工具包.2.pandas是基于NumPy构建的.3.pandas的主要功能 --具备对其功能的数据结构DataFrame.S ... 
随机推荐
- 实现Ajax异步的layui分页
			https://www.e-learn.cn/content/java/1084522 
- Web 自动化测试
			Selenium 名字的来源 在这里,我还想说一下关于 Selenium 名字的来源,很有意思的 : > : Selenium 的中文名为 “ 硒 ” ,是一种化学元素的名字,它 对 汞 ( M ... 
- linux的基本操作(LNMP的基本操作)
			LNMP 的环境搭建 和LAMP不同的是LNMP中的N指的是是Nginx(类似于Apache的一种web服务软件)其他都一样.目前这种环境应用的也是非常之多.Nginx设计的初衷是提供一种快速高效多并 ... 
- hibernate09--连接查询
			创建实体类 package cn.bdqn.bean; import java.util.ArrayList; import java.util.Date; import java.util.List ... 
- 无网络 使用pip安装mxnet
			# 在有网络的同系统机器上运行以下命令:pip download mxnet# 目前mxnet版本为1.3.0,执行后当前目录得到以下文件: # . # ├── certifi--py2.py3-no ... 
- Maven常用的几个命令
			mvn clean.mvn package:如果本地仓库中没有需要的jar,第一次执行命令的时候会从仓库下jar包 *) mvn clean :clean项目 *) mvn compile : 编译 ... 
- container_of 例子说明
			很早前之前看的linux内核,一直想把container_of记录一下,趁今天想起就记录一下: 内核中的描述 /** * container_of - cast a member of a struc ... 
- iOS学习之Object-C语言属性和点语法(转载收集)
			一.属性 1.属性的声明:在.h文件中使用@property声明属性. @property NSString *name; 2.属性的作用是生成setter以 ... 
- nginx安装lua模块实现高并发
			nginx安装lua扩展模块 1.下载安装LuaJIT-2.0.4.tar.gz wget -c http://luajit.org/download/LuaJIT-2.0.4.tar.gz tar ... 
- java框架之Struts2(2)-访问Servlet API及请求数据封装
			准备 为后面测试示例编写代码及配置如下: package com.zze.bean; import java.util.Date; public class User { private String ... 
