现有txt文件“电影信息.txt”,其中三列分别为电影名称、导演和演员表,之间用分号分隔(同一个电影可能会有多个演员,每个演员姓名之间使用逗号分隔;同一部电影也可能有多个导演,多个导演之间用逗号分隔),如图所示: 使用openpyxl和matplotlab实现电影数据分析任务:任务二:演员参演电影统计 统计每个演员参演的电影数量和分别有哪些电影,将结果按参演电影数量降序排列,并按照下列要求填入sheet中: 1. 在“电影信息统计.xlsx”文件中新增一个名为“演员参演统计”的sheet,统计每个演员参演的电影数量和参演电影列表。 2. 第一列填写演员名称,第二列填写演员参演电影数量,第三列填写演员参演电影列表。同一演员参演的多部电影在同一单元格中以逗号(,)分隔。 3. 按演员参演电影数量降序排列填入sheet,参演数量相同的演员按姓名升序排列。
时间: 2024-02-22 16:59:41 浏览: 243
C++_C++_读取txt文档_txt内容读取_按空格分隔_按逗号分隔_
5星 · 资源好评率100%
好的,根据您的要求,可以先参考以下代码实现:
```python
import openpyxl
# 打开电影信息.xlsx文件
wb = openpyxl.load_workbook('电影信息.xlsx')
# 选择电影信息工作表
ws = wb['电影信息']
# 创建演员参演统计工作表
ws_actor = wb.create_sheet(title='演员参演统计')
# 统计演员参演电影数量和参演电影列表
actor_dict = {}
for row in ws.iter_rows(min_row=2, values_only=True):
actors = row[2].split(',')
for actor in actors:
actor = actor.strip()
if actor in actor_dict:
actor_dict[actor]['count'] += 1
actor_dict[actor]['movies'].add(row[0])
else:
actor_dict[actor] = {'count': 1, 'movies': {row[0]}}
# 将演员参演电影数量和参演电影列表写入演员参演统计工作表中
ws_actor.cell(row=1, column=1, value='演员名称')
ws_actor.cell(row=1, column=2, value='参演电影数量')
ws_actor.cell(row=1, column=3, value='参演电影列表')
row_num = 2
for actor, values in sorted(actor_dict.items(), key=lambda x: (-x[1]['count'], x[0])):
ws_actor.cell(row=row_num, column=1, value=actor)
ws_actor.cell(row=row_num, column=2, value=values['count'])
ws_actor.cell(row=row_num, column=3, value=','.join(sorted(values['movies'])))
row_num += 1
# 保存电影信息.xlsx文件
wb.save('电影信息.xlsx')
```
这段代码会打开“电影信息.xlsx”文件,并读取名为“电影信息”的工作表中的数据。然后,它会遍历每一行数据,将演员参演电影数量和参演电影列表统计到一个字典中。最后,它会创建一个名为“演员参演统计”的工作表,并将演员参演电影数量和参演电影列表按要求填到该工作表中,并按演员参演电影数量降序排列。最后,它会保存更新后的“电影信息.xlsx”文件。
请注意,这段代码中的路径和文件名应根据您的实际情况进行修改。
阅读全文