任务 6:利用 python 操作 Excel 文档。 1) 给定重庆商圈数据,已存储为 Excel,请分别将重庆市每个 区的数据存储到一个独立的工作表中,统计每个区的商铺 数量并利用 python 在 Excel 中绘制条状图。 2) 增加难度(选做):从给定的 POI 文件中直接读入并保存为 Excel 文件,之后进行 1)的处理;尝试利用正则表达进行 信息检索(如检索出座机号码等)。
时间: 2023-06-01 15:01:45 浏览: 195
1)实现步骤:
1.1 读取 Excel 文件
使用 Pandas 库的 read_excel() 函数读取 Excel 文件中的数据,并将数据存储在 DataFrame 中。
示例代码:
```python
import pandas as pd
df = pd.read_excel('商圈数据.xlsx')
```
1.2 创建新的工作表
使用 Pandas 库的 ExcelWriter() 函数创建一个新的 Excel 文件,并在其中创建多个工作表,每个工作表对应一个区。
示例代码:
```python
# 创建一个新的 Excel 文件
writer = pd.ExcelWriter('商圈数据_按区划分.xlsx')
# 遍历每个区,创建对应的工作表
for area in df['区'].unique():
# 根据区名筛选数据
area_data = df[df['区'] == area]
# 将数据存储到新的工作表中
area_data.to_excel(writer, sheet_name=area, index=False)
# 保存 Excel 文件
writer.save()
```
1.3 统计每个区的商铺数量并绘制条状图
使用 Pandas 库的 groupby() 函数对每个区进行分组,并使用 count() 函数统计每个区的商铺数量。
使用 Matplotlib 库的 bar() 函数绘制条状图,将每个区的商铺数量作为条状图的高度。
示例代码:
```python
import matplotlib.pyplot as plt
# 对每个区进行分组统计商铺数量
area_counts = df.groupby('区')['商铺名称'].count()
# 绘制条状图
plt.bar(area_counts.index, area_counts.values)
# 设置图表标题和横纵坐标标签
plt.title('重庆市各区商铺数量')
plt.xlabel('区')
plt.ylabel('商铺数量')
# 显示图表
plt.show()
```
2)增加难度(选做):
2.1 读取 POI 文件
使用 Pandas 库的 read_csv() 函数读取 POI 文件中的数据,并将数据存储在 DataFrame 中。
示例代码:
```python
import pandas as pd
df = pd.read_csv('POI数据.csv')
```
2.2 正则表达式检索信息
使用 Python 的 re 模块可以方便地进行正则表达式的匹配。
示例代码:
```python
import re
# 匹配座机号码
pattern = r'\d{3,4}-\d{7,8}'
# 从商铺名称和地址中提取座机号码
phone_numbers = []
for name, address in zip(df['名称'], df['地址']):
# 将商铺名称和地址拼接起来
text = name + ' ' + address
# 使用正则表达式匹配座机号码
match = re.search(pattern, text)
if match:
phone_numbers.append(match.group())
# 输出座机号码列表
print(phone_numbers)
```
阅读全文