在这个代码的基础上,读取“电影评分数据.xlsx”的“Split Rows”页,列名分别为“Title”“Overview”“genre”“Vote Average”“Vote Count”,根据“Vote Average”属性值构建B树索引。根据B树索引实现“Vote Average”的范围查询,如果“Vote Average”相同,则根据“Vote Count”属性值降序排序,把符合条件的数据的所有信息(“Title”“Overview”“genre”“Vote Average”“Vote Count”)保存到“result_3.csv"。例如查询所有“Vote Average”在5.5-6.7之间的电影
时间: 2023-10-21 18:05:25 浏览: 100
要实现这个功能,你可以在BTree类中添加以下方法来构建B树索引和执行范围查询:
```python
import pandas as pd
class BTree:
# 构造函数和其他方法省略
def build_index(self, file_path, sheet_name):
df = pd.read_excel(file_path, sheet_name=sheet_name)
for _, row in df.iterrows():
key = row["Vote Average"]
self.insert(key)
def range_query(self, start, end, x=None):
if isinstance(x, BTreeNode):
i = 0
while i < len(x.keys) and start > x.keys[i]:
i += 1
if i < len(x.keys) and start <= x.keys[i] <= end:
result = []
j = i
while j < len(x.keys) and start <= x.keys[j] <= end:
result.append(x.keys[j])
j += 1
result.sort(key=lambda x: x[1], reverse=True)
return result
elif x.leaf:
return None
else:
return self.range_query(start, end, x.child[i])
else:
return self.range_query(start, end, self.root)
def save_result_to_csv(self, result, file_path):
df = pd.DataFrame(result, columns=["Title", "Overview", "genre", "Vote Average", "Vote Count"])
df.to_csv(file_path, index=False)
```
然后,你可以按照以下步骤来调用这些方法:
```python
# 创建B树对象
btree = BTree(3)
# 构建B树索引
btree.build_index("电影评分数据.xlsx", "Split Rows")
# 执行范围查询
start = 5.5
end = 6.7
result = btree.range_query(start, end)
# 保存结果到CSV文件
btree.save_result_to_csv(result, "result_3.csv")
```
请确保在运行代码之前,已经安装了pandas库。这样,你就可以根据"Vote Average"属性值进行范围查询,并将符合条件的电影信息保存到"result_3.csv"文件中。
阅读全文