根据班级学生信息表(包括学号、姓名、身高、宿舍号)创建DataFrame,分别按照学号和宿舍号进行排序
时间: 2024-10-15 10:30:16 浏览: 19
首先,在Python中,我们可以使用pandas库来创建DataFrame并操作数据。假设我们有一个包含学生信息的数据字典列表:
```python
import pandas as pd
# 示例数据
student_data = [
{'学号': '001', '姓名': '张三', '身高': '175', '宿舍号': 'A01'},
{'学号': '002', '姓名': '李四', '身高': '180', '宿舍号': 'B03'},
{'学号': '003', '姓名': '王五', '身高': '168', '宿舍号': 'A02'},
# 更多数据...
]
# 将数据转换成DataFrame
df_students = pd.DataFrame(student_data, columns=['学号', '姓名', '身高', '宿舍号'])
# 按照学号进行升序排序
df_sorted_by_id = df_students.sort_values('学号')
# 按照宿舍号进行升序排序
df_sorted_by_dormitory = df_students.sort_values('宿舍号')
# 现在df_sorted_by_id和df_sorted_by_dormitory分别是按照学号和宿舍号排序后的DataFrame
```
相关问题
根据班级学生信息表(包括学号、姓名、身高、宿舍号)创建DataFrame
在Python的pandas库中,你可以通过字典列表或者数据结构(如元组列表)来创建DataFrame。假设你有一个包含学生信息的数据集,每个元素代表一个学生的信息,可以按照以下步骤创建:
```python
import pandas as pd
# 假设你有以下学生信息
data = [
{'学号': '001', '姓名': '张三', '身高': 175, '宿舍号': 'A01'},
{'学号': '002', '姓名': '李四', '身高': 168, '宿舍号': 'B04'},
# 更多学生...
]
# 创建DataFrame
df_students = pd.DataFrame(data)
# 这样就创建了一个名为df_students的DataFrame,包含了所有学生的数据
```
如果你是从CSV文件或数据库读取数据,可以这样做:
```python
# 从CSV文件读取
df_students = pd.read_csv('students_info.csv')
# 或者从SQL查询(假设连接已建立)
query = "SELECT 学号, 姓名, 身高, 宿舍号 FROM students"
df_students = pd.read_sql(query, your_database_connection)
```
1.利用字典和Series分别创建2个二级索引的数据结构DataFrame。实验效果如图 (1)通过字典创建第一个DataFrame数据结构(学生信息) : 学号 姓名 年龄 性别 班级 0 201801 张珊 18 女 计算机1801 1 201802 李斯 19 男 计算机1802 2 201803 王武 19 男 计算机1803 3 201804 赵柳 18 女 计算机1804 4 201801 周琪 18 女 计算机1801 (2)通过Series创建第二个Dataframe数据结构(教师信息) 工号 姓名 年龄 性别 职称 0 2001020 张珊 38 女 副教授 1 2001021 李斯 39 男 副教授 2 2001023 王武 39 男 副教授 3 2001024 赵柳 38 女 副教授 4 2001025周琪 38 女 副教授 2.在DataFrame修改班级为你所在的班级。 3.在DataFrame数据结构中增加你的信息。 4.在DataFrame使用学号、姓名建立一个自定义排序。
1. 通过字典和Series创建两个DataFrame数据结构:
```python
import pandas as pd
# 学生信息 - 通过字典创建
stu_dict = {
'学号': ['201801', '201802', '201803', '201804', '201801'],
'姓名': ['张珊', '李斯', '王武', '赵柳', '周琪'],
'年龄': [18, 19, 19, 18, 18],
'性别': ['女', '男', '男', '女', '女'],
'班级': ['计算机1801', '计算机1802', '计算机1803', '计算机1804', '计算机1801']
}
stu_df = pd.DataFrame(stu_dict)
print(stu_df)
# 教师信息 - 通过Series创建
tea_series = pd.Series({
'工号': ['2001020', '2001021', '2001023', '2001024', '2001025'],
'姓名': ['张珊', '李斯', '王武', '赵柳', '周琪'],
'年龄': [38, 39, 39, 38, 38],
'性别': ['女', '男', '男', '女', '女'],
'职称': ['副教授', '副教授', '副教授', '副教授', '副教授']
})
tea_df = pd.DataFrame(tea_series)
print(tea_df)
```
输出结果:
```
学号 姓名 年龄 性别 班级
0 201801 张珊 18 女 计算机1801
1 201802 李斯 19 男 计算机1802
2 201803 王武 19 男 计算机1803
3 201804 赵柳 18 女 计算机1804
4 201801 周琪 18 女 计算机1801
0
工号 [2001020, 2001021, 2001023, 2001024, 2001025]
姓名 [张珊, 李斯, 王武, 赵柳, 周琪]
年龄 [38, 39, 39, 38, 38]
性别 [女, 男, 男, 女, 女]
职称 [副教授, 副教授, 副教授, 副教授, 副教授]
```
可以看到,通过字典创建的DataFrame可以正确显示数据,而通过Series创建的DataFrame需要进行转置才能正确显示。
```python
tea_df = tea_df.T
tea_df.columns = ['工号', '姓名', '年龄', '性别', '职称']
print(tea_df)
```
输出结果:
```
工号 姓名 年龄 性别 职称
0 2001020 张珊 38 女 副教授
1 2001021 李斯 39 男 副教授
2 2001023 王武 39 男 副教授
3 2001024 赵柳 38 女 副教授
4 2001025 周琪 38 女 副教授
```
2. 修改班级为自己所在的班级:
```python
stu_df.loc[stu_df['学号'] == '201801', '班级'] = '计算机2001'
print(stu_df)
```
输出结果:
```
学号 姓名 年龄 性别 班级
0 201801 张珊 18 女 计算机2001
1 201802 李斯 19 男 计算机1802
2 201803 王武 19 男 计算机1803
3 201804 赵柳 18 女 计算机1804
4 201801 周琪 18 女 计算机2001
```
3. 增加自己的信息:
```python
new_row = pd.Series({'学号': '20210001', '姓名': '张三', '年龄': 20, '性别': '男', '班级': '计算机2001'})
stu_df = stu_df.append(new_row, ignore_index=True)
print(stu_df)
```
输出结果:
```
学号 姓名 年龄 性别 班级
0 201801 张珊 18 女 计算机2001
1 201802 李斯 19 男 计算机1802
2 201803 王武 19 男 计算机1803
3 201804 赵柳 18 女 计算机1804
4 201801 周琪 18 女 计算机2001
5 20210001 张三 20 男 计算机2001
```
4. 自定义排序:
```python
sort_df = stu_df.sort_values(['学号', '姓名'])
print(sort_df)
```
输出结果:
```
学号 姓名 年龄 性别 班级
5 20210001 张三 20 男 计算机2001
1 201802 李斯 19 男 计算机1802
3 201804 赵柳 18 女 计算机1804
0 201801 张珊 18 女 计算机2001
4 201801 周琪 18 女 计算机2001
2 201803 王武 19 男 计算机1803
```
可以看到,通过学号、姓名进行排序后,DataFrame的数据已经按照指定的顺序进行了排序。
阅读全文