模拟某商场2020年12个月的服装、化妆品、日用品的销量表,建立名为sales的数据框对象。要求: (1)销售数据使用随机数生成(每种商品的销量都不超过50),使用时间序列对象作为数据框的行索引。 (2)查询6月份“化妆品”的销售量。 (3)查询5月份和10月份的销售记录。 (4)查询“服装”销量为20~35的销售记录。 (5)查询“服装”和“化妆品”销量都超过30(含)的销售记录。 (6)按“日用品”销量的降序排序返回新的数据框对象)。 (7)统计2020年各商品的销售总量。 (8)统计每个月的销售总量。
时间: 2024-03-23 15:36:00 浏览: 238
服装化妆品淘宝数据研究报告:618活动
好的,我已经明白了你的问题。以下是解决方案:
```python
import numpy as np
import pandas as pd
# 生成数据
np.random.seed(0)
dates = pd.date_range("2020-01-01", periods=12, freq="M")
clothes = np.random.randint(1, 51, size=12)
cosmetics = np.random.randint(1, 51, size=12)
daily_use = np.random.randint(1, 51, size=12)
sales = pd.DataFrame(
{"clothes": clothes, "cosmetics": cosmetics, "daily_use": daily_use},
index=dates,
)
# 查询6月份“化妆品”的销售量
print(sales.loc["2020-06-30", "cosmetics"])
# 查询5月份和10月份的销售记录
print(sales.loc[["2020-05-31", "2020-10-31"]])
# 查询“服装”销量为20~35的销售记录
print(sales[(sales["clothes"] >= 20) & (sales["clothes"] <= 35)])
# 查询“服装”和“化妆品”销量都超过30(含)的销售记录
print(sales[(sales["clothes"] >= 30) & (sales["cosmetics"] >= 30)])
# 按“日用品”销量的降序排序返回新的数据框对象
print(sales.sort_values(by="daily_use", ascending=False))
# 统计2020年各商品的销售总量
print(sales.sum())
# 统计每个月的销售总量
print(sales.sum(axis=1))
```
解释一下各个问题的解决方法:
1. 使用`loc`方法查询6月份“化妆品”的销售量,即`sales.loc["2020-06-30", "cosmetics"]`。
2. 使用`loc`方法查询5月份和10月份的销售记录,即`sales.loc[["2020-05-31", "2020-10-31"]]`。
3. 使用布尔索引查询“服装”销量为20~35的销售记录,即`sales[(sales["clothes"] >= 20) & (sales["clothes"] <= 35)]`。
4. 使用布尔索引查询“服装”和“化妆品”销量都超过30(含)的销售记录,即`sales[(sales["clothes"] >= 30) & (sales["cosmetics"] >= 30)]`。
5. 使用`sort_values`方法按“日用品”销量的降序排序返回新的数据框对象,即`sales.sort_values(by="daily_use", ascending=False)`。
6. 使用`sum`方法统计2020年各商品的销售总量,即`sales.sum()`。
7. 使用`sum`方法统计每个月的销售总量,即`sales.sum(axis=1)`。
阅读全文