假如我们现在有这样一组数据:星巴克在全球的咖啡店信息,如下图所示。数据来源: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之分组的更多相关文章

  1. Pandas | GroupBy 分组

    任何分组(groupby)操作都涉及原始对象的以下操作之一: 分割对象 应用一个函数 结合的结果 在许多情况下,我们将数据分成多个集合,并在每个子集上应用一些函数.在应用函数中,可以执行以下操作: 聚 ...

  2. pandas之分组计算笔记

    分组计算三部曲:拆分-->应用-->合并 分组:就是按照行或列把相同索引的部分分到一起 分组的关键词为groupby,分组后我们就可以对每组数据进行同一操作,返回的是每组数据分别计算后的结 ...

  3. pandas groupby 分组操作

    最一般化的groupby 方法是apply. tips=pd.read_csv('tips.csv') tips[:5] 新生成一列 tips['tip_pct']=tips['tip']/tips[ ...

  4. pandas用法之二

    1,函数应用 ①map() 将函数作用于一个Series的每一个函数(不能是DataFrame) 类似于Python的高阶函数map() 函数可以是Numpy中的通用函数,也可以是自定义函数 优点:代 ...

  5. Pandas模块:表计算与数据分析

    目录 Pandas之Series Pandas之DataFrame 一.pandas简单介绍 1.pandas是一个强大的Python数据分析的工具包.2.pandas是基于NumPy构建的. 3.p ...

  6. 机器学习三剑客之Pandas

      pandas Pandas是基于Numpy开发出的,专门用于数据分析的开源Python库 Pandas的两大核心数据结构 Series(一维数据)   Series   创建Series的方法   ...

  7. Pandas:表计算与数据分析

    目录 Pandas之Series Pandas之DataFrame 一.pandas简单介绍 1.pandas是一个强大的Python数据分析的工具包.2.pandas是基于NumPy构建的. 3.p ...

  8. (数据科学学习手札69)详解pandas中的map、apply、applymap、groupby、agg

    *从本篇开始所有文章的数据和代码都已上传至我的github仓库:https://github.com/CNFeffery/DataScienceStudyNotes 一.简介 pandas提供了很多方 ...

  9. 利用Python进行数据分析:【Pandas】(Series+DataFrame)

    一.pandas简单介绍 1.pandas是一个强大的Python数据分析的工具包.2.pandas是基于NumPy构建的.3.pandas的主要功能 --具备对其功能的数据结构DataFrame.S ...

随机推荐

  1. 实现Ajax异步的layui分页

    https://www.e-learn.cn/content/java/1084522

  2. Web 自动化测试

    Selenium 名字的来源 在这里,我还想说一下关于 Selenium 名字的来源,很有意思的 : > : Selenium 的中文名为 “ 硒 ” ,是一种化学元素的名字,它 对 汞 ( M ...

  3. linux的基本操作(LNMP的基本操作)

    LNMP 的环境搭建 和LAMP不同的是LNMP中的N指的是是Nginx(类似于Apache的一种web服务软件)其他都一样.目前这种环境应用的也是非常之多.Nginx设计的初衷是提供一种快速高效多并 ...

  4. hibernate09--连接查询

    创建实体类 package cn.bdqn.bean; import java.util.ArrayList; import java.util.Date; import java.util.List ...

  5. 无网络 使用pip安装mxnet

    # 在有网络的同系统机器上运行以下命令:pip download mxnet# 目前mxnet版本为1.3.0,执行后当前目录得到以下文件: # . # ├── certifi--py2.py3-no ...

  6. Maven常用的几个命令

    mvn clean.mvn package:如果本地仓库中没有需要的jar,第一次执行命令的时候会从仓库下jar包 *) mvn clean :clean项目 *) mvn compile :  编译 ...

  7. container_of 例子说明

    很早前之前看的linux内核,一直想把container_of记录一下,趁今天想起就记录一下: 内核中的描述 /** * container_of - cast a member of a struc ...

  8. iOS学习之Object-C语言属性和点语法(转载收集)

    一.属性      1.属性的声明:在.h文件中使用@property声明属性.           @property NSString *name;       2.属性的作用是生成setter以 ...

  9. nginx安装lua模块实现高并发

    nginx安装lua扩展模块 1.下载安装LuaJIT-2.0.4.tar.gz wget -c http://luajit.org/download/LuaJIT-2.0.4.tar.gz tar ...

  10. java框架之Struts2(2)-访问Servlet API及请求数据封装

    准备 为后面测试示例编写代码及配置如下: package com.zze.bean; import java.util.Date; public class User { private String ...