【pandas百炼30天】---条件筛选

这里写自定义目录标题


±------------±--------+
| Column Name | Type |
±------------±--------+
| name | varchar |
| continent | varchar |
| area | int |
| population | int |
| gdp | bigint |
±------------±--------+
在 SQL 中,name 是这张表的主键。
这张表的每一行提供:国家名称、所属大陆、面积、人口和 GDP 值。

如果一个国家满足下述两个条件之一,则认为该国是 大国 :

面积至少为 300 万平方公里(即,3000000 km2),或者
人口至少为 2500 万(即 25000000)
查询并报告 大国 的国家名称、人口和面积。

按 任意顺序 返回结果表。
方法一:

def is_bigcountry(world):
	data = world[(world['area']>=3000000) | (world['population']>=25000000)][['name','population','area']]
	return data

方法二:

def is_bigcountry(wrold):
	data = world.loc[(world['area')>=3000000)|(world['population']>=25000000),['name','population','area']]]
	return data

±------------±--------+
| Column Name | Type |
±------------±--------+
| product_id | int |
| low_fats | enum |
| recyclable | enum |
±------------±--------+
在 SQL 中,product_id 是这个表的主键。
low_fats 是枚举类型,取值为以下两种 (‘Y’, ‘N’),其中 ‘Y’ 表示该产品是低脂产品,‘N’ 表示不是低脂产品。
recyclable 是枚举类型,取值为以下两种 (‘Y’, ‘N’),其中 ‘Y’ 表示该产品可回收,而 ‘N’ 表示不可回收。

查找既是低脂又是可回收的产品编号。

返回结果 无顺序要求 。

方法一:

def find_products(products: pd.DataFrame) -> pd.DataFrame:
    data = products[(products['low_fats']=='Y') & (products['recyclable']=='Y')][['product_id']]
    return data

方法二:

def find_products(products: pd.DataFrame) -> pd.DataFrame:
    data = products.loc[(products['low_fats']=='Y') & (products['recyclable']=='Y'),['product_id']]
    return data

Customers 表:

±------------±--------+
| Column Name | Type |
±------------±--------+
| id | int |
| name | varchar |
±------------±--------+
在 SQL 中,id 是该表的主键。
该表的每一行都表示客户的 ID 和名称。
Orders 表:

±------------±-----+
| Column Name | Type |
±------------±-----+
| id | int |
| customerId | int |
±------------±-----+
在 SQL 中,id 是该表的主键。
customerId 是 Customers 表中 ID 的外键( Pandas 中的连接键)。
该表的每一行都表示订单的 ID 和订购该订单的客户的 ID。

找出所有从不点任何东西的顾客。

def find_customers(customers: pd.DataFrame, orders: pd.DataFrame) -> pd.DataFrame:
    merge_data = pd.merge(customers,orders,left_on='id',right_on='customerId',how='left')
    data = merge_data[merge_data['customerId'].isnull()][['name']].rename(columns={'name':'Customers'})
    return data

pd.merge 是 Pandas 中用于合并数据的函数。它可以将两个数据框(DataFrames)按照指定的条件合并为一个新的数据框。下面是对 pd.merge 函数中的参数进行详细解释:

customers:这是一个 Pandas 数据框,其中包含顾客信息。它是作为合并操作的左侧数据框。

orders:这是另一个 Pandas 数据框,其中包含订单信息。它是作为合并操作的右侧数据框。

left_on:这是一个字符串或者字符串列表,指定左侧数据框(customers)中用于合并的列名。在这个例子中,我们使用了 ‘id’,表示我们要根据 customers 数据框中的 ‘id’ 列来进行合并。

right_on:这是一个字符串或者字符串列表,指定右侧数据框(orders)中用于合并的列名。在这个例子中,我们使用了 ‘customerId’,表示我们要根据 orders 数据框中的 ‘customerId’ 列来进行合并。

how:这是一个字符串,指定合并的方式。它可以取以下几种值:

‘inner’:执行内连接,保留两个数据框中共有的行。
‘outer’:执行外连接,保留两个数据框中的所有行,并将不匹配的部分用 NaN 填充。
‘left’:执行左连接,以左侧数据框(customers)为基准,保留所有左侧数据框的行,并将右侧数据框(orders)中不匹配的部分用 NaN 填充。
‘right’:执行右连接,以右侧数据框(orders)为基准,保留所有右侧数据框的行,并将左侧数据框(customers)中不匹配的部分用 NaN 填充。
在这个例子中,我们使用了 ‘left’ 连接,表示我们要以 customers 数据框为基准,保留所有的 customers 行,并将 orders 中不匹配的部分用 NaN 填充。这样,我们就得到了一个新的数据框 merged_data,其中包含了 customers 和 orders 数据框的信息合并在一起。

你可能感兴趣的:(pandas)