现有一文件fool-hangzhou.xlsx是从去哪儿网上爬取的有关杭州地区 美食店铺的毛坯数据。 用pandas库,对生成的DataFrame对象进行数据清洗、整 理,最后将人均、店铺评分、排名、攻略提到数量及点评数量列的数 据都变换为整数或实数(保留一位小数)。 (1) 统计并输出人均消费最高的前20家店铺名称, (2) 统计并输出人均消费降序排列前100名店铺的平均值, (3) 统计并输出评分最高的前20家店铺名称, (4) 对排名列按升序排名,统计并输出排名为1-20的店铺名称 (5) 统计并输出点评数量最多的前20家店铺名称, (6) 统计并输出攻略提到数量最多的前20家店铺名称 (7) 统计并输出驴友到过比例大于0的店铺名称。
时间: 2024-02-27 12:52:05 浏览: 73
好的,让我来帮你解答这个问题。
首先,我们需要使用 `pandas` 库读取 `fool-hangzhou.xlsx` 文件,并进行数据清洗和整理。
```python
import pandas as pd
# 读取Excel文件
df = pd.read_excel('fool-hangzhou.xlsx')
# 去除无用列
df.drop(['地点', '地址'], axis=1, inplace=True)
# 重命名列名
df.rename(columns={'店名': '名称', '人均': '人均消费', '点评数': '点评数量', '点评': '攻略提到数量'}, inplace=True)
# 将人均消费、店铺评分、排名、攻略提到数量和点评数量列的数据类型转换为浮点数
df['人均消费'] = df['人均消费'].str.extract('(\d+\.?\d*)', expand=False).astype(float)
df['店铺评分'] = df['店铺评分'].astype(float)
df['排名'] = df['排名'].astype(int)
df['攻略提到数量'] = df['攻略提到数量'].astype(int)
df['点评数量'] = df['点评数量'].astype(int)
```
接下来,我们可以根据题目要求,进行数据统计和输出。
(1) 统计并输出人均消费最高的前20家店铺名称
```python
top20_person = df.nlargest(20, '人均消费')[['名称', '人均消费']]
print(top20_person)
```
(2) 统计并输出人均消费降序排列前100名店铺的平均值
```python
avg_person = df.sort_values(by='人均消费', ascending=False).iloc[:100]['人均消费'].mean()
print('前100名店铺的平均人均消费为:{:.1f}'.format(avg_person))
```
(3) 统计并输出评分最高的前20家店铺名称
```python
top20_score = df.nlargest(20, '店铺评分')[['名称', '店铺评分']]
print(top20_score)
```
(4) 对排名列按升序排名,统计并输出排名为1-20的店铺名称
```python
top20_rank = df.sort_values(by='排名').iloc[:20][['名称', '排名']]
print(top20_rank)
```
(5) 统计并输出点评数量最多的前20家店铺名称
```python
top20_review = df.nlargest(20, '点评数量')[['名称', '点评数量']]
print(top20_review)
```
(6) 统计并输出攻略提到数量最多的前20家店铺名称
```python
top20_strategy = df.nlargest(20, '攻略提到数量')[['名称', '攻略提到数量']]
print(top20_strategy)
```
(7) 统计并输出驴友到过比例大于0的店铺名称
```python
visited = df[df['驴友去过比例'] > 0]['名称'].tolist()
print(visited)
```
以上就是对该题目的解答,希望能对你有所帮助。
阅读全文