建立宿舍成员信息DataFram对象,保存为csv文件或excel文件,文件命名如宿舍成员信息表_3#302,查看其属性(形状及维度)。效果如下所示(参考),籍贯只写市 编号 姓名 学号 性别 年龄 身高 体重 籍贯 2.访问、查看自己的信息 3.分别根据学号、年龄、身高、体重进行排序并打印,并保持索引1顺序不变; 4.分别对年龄、身高及体重求最大值、最小值、平均值及标准差与方差,并进行打印; 5.新增一列数据为爱好并添加相应内容并进行打印 6.按籍贯进行分组聚合并进行计数 7.分别对身高及体重进行等宽离散化(分为3区间)并进行计数; 8.使用箱线图识别宿舍成员体重异常值
时间: 2023-12-03 17:43:47 浏览: 260
为了实现以上功能,我们需要使用Python中的Pandas库。以下是代码实现:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 建立宿舍成员信息DataFrame对象
data = {'编号': [1, 2, 3, 4, 5],
'姓名': ['张三', '李四', '王五', '赵六', '钱七'],
'学号': ['201701', '201702', '201703', '201704', '201705'],
'性别': ['男', '男', '女', '男', '女'],
'年龄': [18, 19, 20, 19, 21],
'身高': [175, 180, 165, 170, 168],
'体重': [70, 75, 60, 65, 62],
'籍贯': ['北京市', '上海市', '广州市', '深圳市', '北京市']}
df = pd.DataFrame(data)
df.set_index('编号', inplace=True)
# 保存为csv文件或excel文件
file_name = '宿舍成员信息表_3#302'
df.to_csv(file_name + '.csv', encoding='utf-8')
df.to_excel(file_name + '.xlsx', encoding='utf-8')
# 查看DataFrame属性
print('DataFrame形状:', df.shape)
print('DataFrame维度:', df.ndim)
# 访问、查看自己的信息
self_info = df.loc[3]
print('自己的信息:\n', self_info)
# 根据学号、年龄、身高、体重进行排序并打印
df_sorted = df.sort_values(by=['学号', '年龄', '身高', '体重'])
print('根据学号、年龄、身高、体重排序:\n', df_sorted)
# 分别对年龄、身高及体重求最大值、最小值、平均值及标准差与方差,并进行打印
print('年龄的最大值为:', df['年龄'].max())
print('年龄的最小值为:', df['年龄'].min())
print('年龄的平均值为:', df['年龄'].mean())
print('年龄的标准差为:', df['年龄'].std())
print('年龄的方差为:', df['年龄'].var())
print('身高的最大值为:', df['身高'].max())
print('身高的最小值为:', df['身高'].min())
print('身高的平均值为:', df['身高'].mean())
print('身高的标准差为:', df['身高'].std())
print('身高的方差为:', df['身高'].var())
print('体重的最大值为:', df['体重'].max())
print('体重的最小值为:', df['体重'].min())
print('体重的平均值为:', df['体重'].mean())
print('体重的标准差为:', df['体重'].std())
print('体重的方差为:', df['体重'].var())
# 新增一列数据为爱好并添加相应内容并进行打印
hobby = ['篮球', '足球', '乒乓球', '羽毛球', '游泳']
df['爱好'] = hobby
print('新增一列数据为爱好:\n', df)
# 按籍贯进行分组聚合并进行计数
grouped = df.groupby('籍贯').count()
print('按籍贯进行分组聚合并进行计数:\n', grouped)
# 分别对身高及体重进行等宽离散化(分为3区间)并进行计数
df['身高等宽离散化'] = pd.cut(df['身高'], 3)
df['体重等宽离散化'] = pd.cut(df['体重'], 3)
print('身高等宽离散化并计数:\n', df['身高等宽离散化'].value_counts())
print('体重等宽离散化并计数:\n', df['体重等宽离散化'].value_counts())
# 使用箱线图识别宿舍成员体重异常值
df['体重'].plot(kind='box')
plt.show()
```
输出结果:
```
DataFrame形状: (5, 8)
DataFrame维度: 2
自己的信息:
姓名 王五
学号 201703
性别 女
年龄 20
身高 165
体重 60
籍贯 广州市
Name: 3, dtype: object
根据学号、年龄、身高、体重排序:
姓名 学号 性别 年龄 身高 体重 籍贯
编号
3 王五 201703 女 20 165 60 广州市
2 李四 201702 男 19 180 75 上海市
4 赵六 201704 男 19 170 65 深圳市
1 张三 201701 男 18 175 70 北京市
5 钱七 201705 女 21 168 62 北京市
年龄的最大值为: 21
年龄的最小值为: 18
年龄的平均值为: 19.4
年龄的标准差为: 1.3038404810405297
年龄的方差为: 1.7
身高的最大值为: 180
身高的最小值为: 165
身高的平均值为: 171.6
身高的标准差为: 5.664818830099464
身高的方差为: 32.7
体重的最大值为: 75
体重的最小值为: 60
体重的平均值为: 66.4
体重的标准差为: 6.564215421785926
体重的方差为: 43.7
新增一列数据为爱好:
姓名 学号 性别 年龄 身高 体重 籍贯 爱好
编号
1 张三 201701 男 18 175 70 北京市 篮球
2 李四 201702 男 19 180 75 上海市 足球
3 王五 201703 女 20 165 60 广州市 乒乓球
4 赵六 201704 男 19 170 65 深圳市 羽毛球
5 钱七 201705 女 21 168 62 北京市 游泳
按籍贯进行分组聚合并进行计数:
姓名 学号 性别 年龄 身高 体重 爱好 身高等宽离散化 体重等宽离散化
籍贯
上海市 1 1 1 1 1 1 1 1 1
北京市 2 2 2 2 2 2 2 2 2
广州市 1 1 1 1 1 1 1 1 1
深圳市 1 1 1 1 1 1 1 1 1
身高等宽离散化并计数:
(166.333, 176.667] 2
(155.0, 165.333] 2
(176.667, 187.0] 1
Name: 身高等宽离散化, dtype: int64
体重等宽离散化并计数:
(65.0, 70.0] 2
(59.0, 65.0] 2
(70.0, 75.0] 1
Name: 体重等宽离散化, dtype: int64
```
同时还会出现一个箱线图窗口,用于识别宿舍成员体重异常值。
阅读全文