Python实践之Pandas的使用——分析统计学生期末成绩并绘图

目录

一、实践要求

二、测试数据

18.student_score.csv文件:(以下是分别用记事本和Excel打开的数据,可自行粘贴到记事本或Excel上保存为csv文件)

三、代码实现

1.从18.student_score.csv文件中读取同学的成绩册,处理好缺失值。

输出的结果(print(df)):

2.将实验报告成绩从ABCD转换成百分制,统计出实验成绩。A为90分,B为75分,C为60分,D为40分。

输出的结果(print(df)):

3.按照平时成绩20%,实验成绩30%,期末成绩50%的比例计算综合成绩,形成新的综合成绩列。

输出的结果:print(df)

print(counts):

4.统计全班综合成绩[90,100],[80,89],[70,79],[60-69],[0,59]各段成绩的人数并画饼图。

输出的结果:

5.将完整的成绩保存到score.csv文件中,打开excel检查输出是否正确。

打开excel检查输出是否正确:

 四、学习资料


一、实践要求

1.从18.student_score.csv文件中读取同学的成绩册,处理好缺失值。

2.将实验报告成绩从ABCD转换成百分制,统计出实验成绩。A为90分,B为75分,C为60分,D为40分。

3.按照平时成绩20%,实验成绩30%,期末成绩50%的比例计算综合成绩,形成新的综合成绩列。

4.统计全班综合成绩[90,100],[80,89],[70,79],[60-69],[0,59]各段成绩的人数并画饼图。

5.将完整的成绩保存到score.csv文件中,打开excel检查输出是否正确。

二、测试数据

18.student_score.csv文件:(以下是分别用记事本和Excel打开的数据,可自行粘贴到记事本或Excel上保存为csv文件)

序号,姓名,平时成绩,实验成绩,期末成绩
1,张三,95,A,81
2,李四,94,B,60
3,王五,95,C,87
4,马七,97,D,75
5,梦雪,97,A,63
6,樱花,94,A,66
7,杏子,94,A,28
8,天涯,99,A,76
9,孔维,94,B,84
10,赵四,95,D,86
11,孙二,100,C,60
12,,98,,
13,太良,98,D,83
14,丁云,95,D,83
15,淑萍,98,D,80
16,溪美,98,C,53
17,泰山,96,A,67
18,梅花,,A,64
19,梅六,98,B,68
20,云霞,96,B,85
序号姓名平时成绩实验成绩期末成绩
1张三95A81
2李四94B60
3王五95C87
4马七97D75
5梦雪97A63
6樱花94A66
7杏子94A28
8天涯99A76
9孔维94B84
10赵四95D86
11孙二100C60
1298
13太良98D83
14丁云95D83
15淑萍98D80
16溪美98C53
17泰山96A67
18梅花A64
19梅六98B68
20云霞96B85

三、代码实现

1.从18.student_score.csv文件中读取同学的成绩册,处理好缺失值。

import pandas as pd
# 绘图需要使用的库
from matplotlib import pyplot as plt

# 从18.student_score.csv文件中读取同学的成绩册,处理好缺失值
df = pd.read_csv("18.student_score.csv")
df.set_index("序号", inplace=True)  # 将序号作为index索引
df['姓名'].fillna('老六', inplace=True)
df = df.fillna(method="bfill")  # 处理缺失值:backfill / bfill表示用后面行的值,填充当前行的空值
# print(df)

输出的结果(print(df)):

2.将实验报告成绩从ABCD转换成百分制,统计出实验成绩。A为90分,B为75分,C为60分,D为40分。

# 将实验报告成绩从ABCD转换成百分制,统计出实验成绩。A为90分,B为75分,C为60分,D为40分。
for x in df.index:
    if df.loc[x, "实验成绩"] == 'A':
        df.loc[x, "实验成绩"] = 90
    if df.loc[x, "实验成绩"] == 'B':
        df.loc[x, "实验成绩"] = 75
    if df.loc[x, "实验成绩"] == 'C':
        df.loc[x, "实验成绩"] = 60
    if df.loc[x, "实验成绩"] == 'D':
        df.loc[x, "实验成绩"] = 40
# print(df)

输出的结果(print(df)):

3.按照平时成绩20%,实验成绩30%,期末成绩50%的比例计算综合成绩,形成新的综合成绩列。

# 按照平时成绩20%,实验成绩30%,期末成绩50%的比例计算综合成绩,形成新的综合成绩列。
df["综合成绩"] = df["平时成绩"] * 0.2 + df["实验成绩"] * 0.3 + df["期末成绩"] * 0.5
print(df)
# 统计全班综合成绩[90,100],[80,89],[70,79],[60-69],[0,59]各段成绩的人数,并画饼图。
num = pd.cut(df['综合成绩'], bins=[0, 60, 70, 80, 90, 100], labels=['0-59', '60-69', '70-79', '80-89', '90-100'],
             right=False)  # bins为分区的分界值,labels为相应区间的标签
counts = num.value_counts()  # 统计区间人数
# print(counts)

输出的结果:print(df)

print(counts):

4.统计全班综合成绩[90,100],[80,89],[70,79],[60-69],[0,59]各段成绩的人数并画饼图。

plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文字体
plt.pie(counts, autopct='%1.1f%%')# autopct后面的值1.1表示保留2位小数
plt.legend(labels=['70-79', '80-89', '60-69', '0-59', '90-100'], loc="best")  # 绘制图的图例为name,位置为最佳
plt.title("学生综合成绩区间分布图")  # 饼图的名称
plt.show()

输出的结果:

5.将完整的成绩保存到score.csv文件中,打开excel检查输出是否正确。

# 完整的成绩保存到score.csv文件中,打开excel检查输出是否正确。
df.to_csv('score.csv', encoding='utf-8-sig')
# “utf-8-sig"中sig全拼为 signature 也就是"带有签名的utf-8”,
# 因此"utf-8-sig"读取带有BOM的"utf-8文件时"会把BOM单独处理,与文本内容隔离开,也是我们期望的结果。

打开excel检查输出是否正确:

 四、学习资料

 以下是本实践涉及到的学习资料链接:

python解决csv文件用excel打开乱码问题 - 简书 (jianshu.com)

(93条消息) python csv写文件,用Excel打开中文乱码解决_dcong9010的博客-CSDN博客

数据分箱之pd.cut() - 知乎 (zhihu.com)

Pandas 数据清洗 | 菜鸟教程 (runoob.com)

(93条消息) 菜鸟编程:python中使用matplotlib绘制饼状图_小菜鸟Zoe的博客-CSDN博客

  • 10
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Pandas是一个Python库,用于数据处理和分析。在数据分析中,预处理是非常重要的一步,因为它可以帮助我们清洗和转换数据,使其更适合进行分析Pandas提供了一些强大的预处理功能,包括数据清洗、数据转换、数据重塑和数据合并等。在使用Pandas进行数据分析时,预处理是必不可少的一步。 ### 回答2: 在数据分析中,数据的预处理是一个必要的过程。它的主要目的是清洗数据,准备数据,以便后续分析。在Python中,pandas是一种广泛使用的数据处理库。pandas可以通过其高效的数据结构和操作方法来清洗和处理数据。在本文中,将介绍pandas预处理的一些常见技术。 一、读取数据 在pandas中,使用read_csv()函数读取CSV格式的数据文件,read_excel()函数读取Excel格式的数据文件。它们都有很多选项,可以根据具体文件的格式进行设置。 二、查看数据 在pandas中,使用以下函数来查看数据: 1. head() - 显示数据框的前几行; 2. tail() - 显示数据框的后几行; 3. columns - 显示数据框的列名; 4. shape - 显示数据框的行列数; 5. info() - 显示数据框的基本信息,包括每列的名称、非空值数量和数据类型。 三、数据清洗 在数据清洗中,有以下一些常见的技术: 1. 删除重复行:使用drop_duplicates()函数; 2. 替换空值:使用fillna()函数; 3. 删除空值:使用dropna()函数; 4. 更改数据类型:使用astype()函数。 四、数据准备 在数据准备中,有以下一些常见的技术: 1. 数据合并:使用merge()函数; 2. 数据筛选:使用loc()函数或者iloc()函数; 3. 数据分组:使用groupby()函数; 4. 数据排序:使用sort_values()函数。 五、数据分析 在数据分析中,有以下一些常见的技术: 1. 数据聚合:使用agg()函数; 2. 统计描述:使用describe()函数; 3. 数据可视化:使用matplotlib或者seaborn库。 综上所述,pandas预处理是数据分析中必不可少的一步。通过使用pandas提供的函数和方法,可以方便地清理和处理数据,使其更容易被分析。 ### 回答3: PandasPython中最强大的数据处理库之一,它提供了DataFrame和Series这两种数据结构,可以快速便捷地处理数据。在数据分析过程中,我们往往需要先对数据进行预处理,以便后续的分析Pandas提供了一系列的方法和函数,可以帮助我们进行数据的预处理。 首先,在进行数据分析之前,我们需要了解自己所面对的数据类型和数据结构。Pandas中的DataFrame结构就是类似于表格的结构,每一行代表一个样本,每一列代表一个属性。Series则是一维的数组结构。通过pandas.read_csv(),我们可以读取CSV格式的数据,并转化为DataFrame结构。 接下来,我们要对数据进行一些基本的处理,例如数据清洗、数据去重、缺失值处理、异常值处理等。在数据清洗过程中,我们往往需要对数据进行一些特殊的处理,例如字符串的分割、合并、替换等操作,Pandas提供了一系列能够对文本进行操作的函数。在数据去重方面,我们可以使用drop_duplicates()函数,它可以去除DataFrame中的重复记录。在处理缺失值时,Pandas提供了一系列的函数,如fillna()函数、dropna()函数,可以方便地将NaN值变为其他有意义的值,或者删除缺失值的行或列。在异常值处理方面,我们可以使用isoutlier()函数来找到数据中的异常值,并进行处理。 在数据预处理完成后,我们可以对数据进行一些统计分析,例如计算小计、计算总计、分位数、极差、方差、标准差等统计指标。我们可以使用describe()函数来获得数据的统计描述,还可以使用groupby()函数来对数据分组,使用agg()函数对每组进行计算统计指标。此外,我们还可以对数据进行排序、丢弃、合并等操作。 总之,Pandas是一个非常强大的Python库,可以轻松处理数据预处理和数据处理方面的任务。Pandas作为数据分析和数据处理的基础库,使用熟练后可以在数据分析中发挥更大的作用。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值