- 学习:知识的初次邂逅
- 复习:知识的温故知新
- 练习:知识的实践应用
目录
一,原题力扣链接
二,题干
销售表:
Sales
+-------------+-------+ | Column Name | Type | +-------------+-------+ | sale_id | int | | product_id | int | | year | int | | quantity | int | | price | int | +-------------+-------+ sale_id 是这个表的主键(具有唯一值的列)。 product_id 是 Product 表的外键(reference 列)。 该表的每一行显示产品product_id在某一年的销售情况。 请注意价格是每单位的。产品表:
Product
+--------------+---------+ | Column Name | Type | +--------------+---------+ | product_id | int | | product_name | varchar | +--------------+---------+ product_id 是这个表的主键(具有唯一值的列)。 该表的每一行表示每种产品的产品名称。编写解决方案,统计每个产品的销售总量。
返回结果表 无顺序要求 。
结果格式如下例子所示。
示例 1:
输入: Sales
表: +---------+------------+------+----------+-------+ | sale_id | product_id | year | quantity | price | +---------+------------+------+----------+-------+ | 1 | 100 | 2008 | 10 | 5000 | | 2 | 100 | 2009 | 12 | 5000 | | 7 | 200 | 2011 | 15 | 9000 | +---------+------------+------+----------+-------+ Product 表: +------------+--------------+ | product_id | product_name | +------------+--------------+ | 100 | Nokia | | 200 | Apple | | 300 | Samsung | +------------+--------------+ 输出: +--------------+----------------+ | product_id | total_quantity | +--------------+----------------+ | 100 | 22 | | 200 | 15 | +--------------+----------------+
三,建表语句
import pandas as pd
data = [[1, 100, 2008, 10, 5000], [2, 100, 2009, 12, 5000], [7, 200, 2011, 15, 9000]]
sales = pd.DataFrame(data, columns=['sale_id', 'product_id', 'year', 'quantity', 'price']).astype({'sale_id':'Int64', 'product_id':'Int64', 'year':'Int64', 'quantity':'Int64', 'price':'Int64'})
data = [[100, 'Nokia'], [200, 'Apple'], [300, 'Samsung']]
product = pd.DataFrame(data, columns=['product_id', 'product_name']).astype({'product_id':'Int64', 'product_name':'object'})
四,分析
表格大法 连接2个表之后 groupby 分组聚合
第一步:内连接连接2个表 为啥用内连接 没销量的统计了干嘛
第二步: 分组聚合 +起别名
第一步:内连接连接2个表 为啥用内连接 没销量的统计了干嘛
第二步: 分组聚合 +起别名
五,Pandas解答
import pandas as pd
def sales_analysis(sales: pd.DataFrame, product: pd.DataFrame) -> pd.DataFrame:
df = pd.merge(product,sales,how='inner',on='product_id')
df1 = df.groupby(['product_id'])['quantity'].sum().reset_index()
res = df1.rename(columns={'quantity':'total_quantity'})
return res
sales_analysis(sales,product)
六,验证
七,知识点总结
- Pandas中 合并两个表的运用 API merge
- Pandas中 分组聚合的运用 groupby...sum.
- Panda中 重置索引的运用 reset_index()
- 简简单单的合并2个表 并且分组聚合的题
- 学习:知识的初次邂逅
- 复习:知识的温故知新
- 练习:知识的实践应用