数据科学库Python——Pandas数据合并与分组聚合_2(join和merge)

目录

一、数据合并之join

二、数据合并之merge

(1)连接键 on

(2)索引连接 lef/right_index

三、应用实例

分组与聚合

调用聚合方法

问题:统计中国每个省店铺的数量。

问题:数据按照多个条件进行分组。

复合索引

修改index

重新设定index

指定某一列为index

返回index的唯一值df.index.unique()

复合索引

Demo1

Demo2

一、数据合并之join

join:默认情况下他是把行索引相同的数据合并到一起。

数据科学库Python——Pandas数据合并与分组聚合_2(join和merge)

二、数据合并之 merge

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
         left_index=False, right_index=False, sort=True,
         suffixes=('_x', '_y'), copy=True, indicator=False,
         validate=None)

参数如下:

  • left: 拼接的左侧DataFrame对象
  • right: 拼接的右侧DataFrame对象
  • on: 要加入的列或索引级别名称。 必须在左侧和右侧DataFrame对象中找到。 如果未传递且left_index和right_index为False,则DataFrame中的列的交集将被推断为连接键。
  • left_on:左侧DataFrame中的列或索引级别用作键。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。
  • right_on: 左侧DataFrame中的列或索引级别用作键。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。
  • left_index: 如果为True,则使用左侧DataFrame中的索引(行标签)作为其连接键。 对于具有MultiIndex(分层)的DataFrame,级别数必须与右侧DataFrame中的连接键数相匹配。
  • right_index: 与left_index功能相似。
  • how: One of ‘left’, ‘right’, ‘outer’, ‘inner’. 默认inner。inner是取交集,outer取并集。比如left:[‘A’,’B’,’C’];right[”A,’C’,’D’];inner取交集的话,left中出现的A会和right中出现的买一个A进行匹配拼接,如果没有是B,在right中没有匹配到,则会丢失。’outer’取并集,出现的A会进行一一匹配,没有同时出现的会将缺失的部分添加缺失值。
  • sort: 按字典顺序通过连接键对结果DataFrame进行排序。 默认为True,设置为False将在很多情况下显着提高性能。
  • suffixes: 用于重叠列的字符串后缀元组。 默认为(’x’,’ y’)。
  • copy: 始终从传递的DataFrame对象复制数据(默认为True),即使不需要重建索引也是如此。
  • indicator:将一列添加到名为_merge的输出DataFrame,其中包含有关每行源的信息。

(1)连接键 on

df_1 = pd.DataFrame({'a':[1,2],'x':[5,6]})
df_1

数据科学库Python——Pandas数据合并与分组聚合_2(join和merge)
df_2 = pd.DataFrame({'a':[2,1,0],'y':[6,7,8]})
df_2

数据科学库Python——Pandas数据合并与分组聚合_2(join和merge)

pd.merge(df_1,df_2,on = ‘a’)
按照a这一列,从左到右进行连接

数据科学库Python——Pandas数据合并与分组聚合_2(join和merge)

(2)索引连接 lef/right_index

可以直接按索引进行连接。

pd.merge(df_1,df_2,left_index = True,right_index = True,suffixes = (“_1″,”_2”))

数据科学库Python——Pandas数据合并与分组聚合_2(join和merge)

本例中,两个表都有同名的a列,用suffixes参数设置后缀来进行区分。

三、应用实例

现在我们有一组关于全球星巴克店铺的统计数据,如果我想知道美国的星巴克数量和中国的哪个多,或者我想知道中国每个省份星巴克的数量的情况,那么应该怎么办?

数据来源:https://www.kaggle.com /starbucks /store-locations/data

查看数据的基本信息:

import pandas as pd
import numpy as np

file_path = "./starbucks_store_worldwide.csv"

df = pd.read_csv(file_path)
print(df.head(1))

`
RangeIndex: 25600 entries, 0 to 25599
Data columns (total 13 columns):
# Column Non-Null Count Dtype
Brand Store Number Store Name Ownership Type Street Address \
0 Starbucks 47370-257954 Meritxell, 96 Licensed Av. Meritxell, 96

           City State/Province Country Postcode Phone Number  \

0 Andorra la Vella 7 AD AD500 376818720

              Timezone  Longitude  Latitude

0 GMT+1:00 Europe/Andorra 1.53 42.51


AE

Original: https://blog.csdn.net/weixin_43172869/article/details/125174294
Author: Bayesian小孙
Title: 数据科学库Python——Pandas数据合并与分组聚合_2(join和merge)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/755428/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球