使用Pandas完成以下要求: 1、统计每个学院(部门)实验室开出的实验课程总学时数,总的实验人次数(一门实验只计一次,表中可能一门课程合并为一个单元格,也可能分多个,注意处理),按从高到低打印出结果
时间: 2024-10-09 19:15:19 浏览: 26
在Python中,可以使用Pandas库来处理这样的数据需求。首先,假设你有一个包含实验信息的数据框,其中包含了课程名称、所属学院、实验学时以及实验人的列名。我们将通过以下几个步骤来完成任务:
1. **数据清洗**:
- 确保数据中的“实验课程”一栏是字符串类型的,并检查是否有需要清理的重复值或缺失值。
2. **转换和整合数据**:
- 如果实验人信息分布在不同的单元格,可以用`explode`函数将每门课程的实验人拆分开。
- 合并学时数据,如果一门课程分成多个单元格,可以用`groupby`和`sum`操作。
```python
import pandas as pd
# 假设df是你的数据框
# df['实验人']可能是列表形式,先转化为单独的列
if '实验人' in df.columns.tolist():
df['实验人'] = df['实验人'].apply(lambda x: [i for i in x if isinstance(i, str)])
else:
# 如果实验人在其他列,请相应修改这里
# 将实验人信息按照课程合并
df_expanded = df.explode('实验人')
# 计算每个学院的实验总学时数和实验人数
stats = df_expanded.groupby(['学院', '课程名称']).agg({'实验学时': 'sum', '实验人': 'nunique'}).reset_index()
# 对统计结果按学时数和人数降序排序
sorted_stats = stats.sort_values(by=['实验学时', '实验人'], ascending=False)
# 打印结果
print(sorted_stats)
```
阅读全文