任务详情:
获取指定省、直辖市或自治区的 景点的平均销售额 和 销售额最多的景点名称,全国旅游景点数据在下方链接中给出。
其中各字段表示含义如下:
中文含义 | 景点编号 | 景点名称 | 景点所在地区 | 景点级别 | 景点位置 | 价格 | 销量 |
字段名 | id | title | place | level | address | price | sales |
任务一:输出指定省、直辖市或自治区的 景点的平均销售额,结果 保留两位小数(四舍五入);
任务二:输出指定省、直辖市或自治区中 销售额最多的景点名称,如果存在两个销售额最大的景点,取索引排名靠前的景点。
任务要求:
1. 程序接收 str 类型的参数 省、直辖市或自治区的名称,程序返回结果是 list 数据类型;
2. 返回结果的具体形式:[销售额平均值: float, 景点名称: str];
3. 销售额为(price * sales),平均值为指定省、直辖市市或自治区销售额的平均值,结果保留两位小数(四舍五入);
4. 可以先从 place 列中出景点所在省、市或自治区;
5. 任务所需文件在已经下方给出,utf-8编码。
思路:
1.先算出各个景点的销售额并添加到DataFrame里
2.取出所有景点的所在地区进行遍历,并把省份用split()方法提取出来,并且添加到列表里,随后把列表的值赋值到df['place']
3. 通过df[df['columns']==元素].index找到传入值的所有的索引,再遍历得到的索引,通过df['columns']['index']获取到之前所计算的景点的销售额,再添加到列表里
4.根据Numpy里的np.mean()方法获取到这个省份销售额的平均值,并根据任务一的要求把类型更改好
5.再使用np.max()方法找到任务二所需的销售额最多的那个值,再通过之前找到元素索引的方法找到其索引,再通过索引找到相对应景点的名字,再把任务所需的两个值添加到列表中返回。
代码如下:
import pandas as pd
import numpy as np
class Solution:
def simpleScenic(self, city_name: str) -> list:
df=pd.read_csv('#########')
df['count']=(df['price']*df['sales']).round(2)
df_place=df['place'].values
list_place=list()
for x in df_place:
list_place.append(x.split('·')[0])
df['place']=list_place
place=df[df['place']==city_name].index.values
list_price=list()
for x in place:
list_price.append(df['count'][x])
res1=float('%.2f'%(np.mean(list_price)))
a=np.max(list_price)
title=df[df['count']==a].index.values
res2=df['title'][title].values[0]
res=list()
res.append(res1)
res.append(res2)
return res
pass
以上仅代表个人的思路,如有欠缺请指教。