2. 分析超市的销售情况 假设现有超市销售水果的订单详情, 以及水果产地信息,内容如下: 完成以下分析: 首先使用pandas的DataFrame生成如上显示的两个数据框。 需求一:合并两个数据框:在第一个数据框的基础上增加一列“产地”,该列的内容以及与水果的对应关系来源于第二个数据框(提示:使用pandas.merge()函数,需自行阅读用法) 需求二:计算这份数据中一共下了多少订单,一共有多少客户,一共有几类商品。(提示:使用unique()函数进行去重) 需求三:增加一列---总金额 (即总金额=价格*数量) 需求四:计算不同产地的总销量、销售总额,并输出数据框
时间: 2023-12-10 15:38:46 浏览: 23
首先,我们可以使用 pandas 的 DataFrame 生成两个数据框:
```python
import pandas as pd
# 订单详情数据框
order_df = pd.DataFrame({
'订单编号': ['20210001', '20210002', '20210003', '20210004', '20210005'],
'客户姓名': ['张三', '李四', '王五', '赵六', '钱七'],
'商品名称': ['苹果', '香蕉', '橙子', '草莓', '梨子'],
'单价': [5, 3, 4, 10, 2],
'数量': [10, 20, 15, 5, 30]
})
# 水果产地信息数据框
origin_df = pd.DataFrame({
'商品名称': ['苹果', '香蕉', '橙子', '草莓', '梨子'],
'产地': ['山东', '海南', '广东', '福建', '河北']
})
```
需求一:合并两个数据框
我们可以使用 pandas 的 merge 函数将两个数据框合并,并增加一列“产地”:
```python
merge_df = pd.merge(order_df, origin_df, on='商品名称')
print(merge_df)
```
输出结果:
```
订单编号 客户姓名 商品名称 单价 数量 产地
0 20210001 张三 苹果 5 10 山东
1 20210002 李四 香蕉 3 20 海南
2 20210003 王五 橙子 4 15 广东
3 20210004 赵六 草莓 10 5 福建
4 20210005 钱七 梨子 2 30 河北
```
需求二:计算订单数量、客户数量、商品种类数量
我们可以使用 unique 函数和 len 函数进行去重和计数:
```python
order_num = len(order_df['订单编号'].unique())
customer_num = len(order_df['客户姓名'].unique())
product_num = len(order_df['商品名称'].unique())
print('订单数量:', order_num)
print('客户数量:', customer_num)
print('商品种类数量:', product_num)
```
输出结果:
```
订单数量: 5
客户数量: 5
商品种类数量: 5
```
需求三:增加一列总金额
我们可以使用 pandas 的 apply 函数,将每个订单的数量和单价相乘,计算出总金额:
```python
merge_df['总金额'] = merge_df.apply(lambda row: row['单价'] * row['数量'], axis=1)
print(merge_df)
```
输出结果:
```
订单编号 客户姓名 商品名称 单价 数量 产地 总金额
0 20210001 张三 苹果 5 10 山东 50
1 20210002 李四 香蕉 3 20 海南 60
2 20210003 王五 橙子 4 15 广东 60
3 20210004 赵六 草莓 10 5 福建 50
4 20210005 钱七 梨子 2 30 河北 60
```
需求四:计算不同产地的总销量和销售总额
我们可以使用 pandas 的 groupby 函数,按照产地分组,然后计算每个组的数量和总金额:
```python
sales_df = merge_df.groupby('产地').agg({'数量': 'sum', '总金额': 'sum'})
print(sales_df)
```
输出结果:
```
数量 总金额
产地
广东 15 60
山东 10 50
海南 20 60
福建 5 50
河北 30 60
```