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 ...
随机推荐
- python3的Cryptodome
简介 python3的PyCryptodome库用于密码学,属于对PyCrypto库的扩展. 安装 Linux上安装: pip install pycryptodome Windows上安装: pip ...
- ubuntu git的安装更新及配置
安装及配置 参考地址:http://blog.csdn.net/qq_26990831/article/details/51857399 1.git 安装 sudo apt-get install g ...
- 关于 systemctl --user status 报错的问题
关于 systemctl --user enable mpd 报错: Failed to connect to bus: No such file or directory 因为arch脚本中,sys ...
- myBatis框架_关于怎么获得多表查询的总记录数
<!-- 查找总记录数 --> <select id="billCount" resultType="int"> select coun ...
- windows系统dos下查看无线网密码
(1)采用命令:netsh wlan show profiles 查看电脑连接过的无线网: (2)采用命令:netsh wlan show profile name ="wifi 名字&qu ...
- PAT1111 Online Map【最短路】【dfs】
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805358663417856 题意: 给定一个图,每天边上有时间和路 ...
- Codeforces 1132 - A/B/C/D/E/F - (Undone)
链接:http://codeforces.com/contest/1132 A - Regular Bracket Sequence - [水] 题解:首先 "()" 这个的数量多 ...
- Windows 10 Creators Update [ISO官方镜像][15063][1703][x64][x86][创意者更新正式版]
请把下载地址手动复制到迅雷里面去,谢谢! [64 位简体中文专业/家庭版] 文件名:cn_windows_10_multiple_editions_version_1703_updated_march ...
- 单片机小白应该如何学习stm32的一些实践心得!
嵌入式搬砖道路上的大三狗一枚,撑死算个初学者吧.才学有限,下面仅仅是本人对STM32学习的一点心得与建议,希望对题主有帮助吧. 心得:本人当初学习STM32的时候有一些跟风的因素,自以为学的芯片越多就 ...
- (在命名空间 public 中)存在冲突
解决方案: http://www.wastedpotential.com/flash-as3-stop-using-automatically-declare-stage-instances/ 修复错 ...