数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—Pandas—pandas高级—训练场(2)(十二)

简介: 你好,感谢你能点进来本篇博客,请不要着急退出,相信我,如果你有一定的 Python 基础,想要学习 Python数据分析的三大库:numpy,pandas,matplotlib;这篇文章不会让你失望,本篇博客是 【AIoT阶段一(下)】 的内容:Python数据分析,

2.4.3 体测成绩评分表数据转换

首先我们下载一个 Exel 文件:

链接: https://pan.baidu.com/s/1wxeENf0tjx5bWxTGxkZGeg?pwd=szmk

提取码: szmk

复制这段内容后打开百度网盘手机App,操作更方便哦

下载完成之后,把该文件和我们的代码放到同一个文件夹下,这一操作我们在之前的博客中已经反复说到,这里就不再进行演示

我们先按照传统的方法把数据进行加载查看

import numpy as np
import pandas as pd
score = pd.read_excel('./体侧成绩评分表.xls')
score

image.png

是不是感觉看起来特别的别扭?这是因为我们在我们的 Excel 文件中,我们最上方一行每个都占了两列的原因,所以代码运行中的 Unnamed1,Unnamed3 其实就是填充。

40.png

针对上述现象,我们可以按如下方法执行:

import numpy as np
import pandas as pd
# header:告诉 pandas 第一行和第二行作为列索引
score = pd.read_excel('./体侧成绩评分表.xls',header = [0, 1])
score

image.png

我们来观察数据:

41.png

发现成绩的形式都是:xx'xx" 的形式,现在我们想把它转为数字的形式:

def convert(x):
    if isinstance(x, str):
        s = float(x.replace('\"', '').replace('\'', '.'))
                  # 删除 "                     替换 ' 为 .
    return s
x = '''3'30"'''
convert(x)

image.png

我们用上述方法对男生考核标准进行转换:

def convert(x):
    if isinstance(x, str):
        s = float(x.replace('\"', '').replace('\'', '.'))
    return s
# 男生考核标准转换
score.iloc[:, -4] = score.iloc[:, -4].apply(convert)
score

image.png

同样的方法,对女生信息进行转换:

score = pd.read_excel('./体侧成绩评分表.xls',header=[0, 1])
def convert(x):
    if isinstance(x, str):
        s = float(x.replace('\"', '').replace('\'', '.'))
    return s
# 男生考核标准转换
score.iloc[:, -4] = score.iloc[:, -4].apply(convert)
# 女生考核标准转换
score.iloc[:, -2] = score.iloc[: , -2].apply(convert)
score

image.png

最后保存我们的文件:

score = pd.read_excel('./体侧成绩评分表.xls',header=[0, 1])
def convert(x):
    if isinstance(x, str):
        s = float(x.replace('\"', '').replace('\'', '.'))
    return s
# 男生考核标准转换
score.iloc[:, -4] = score.iloc[:, -4].apply(convert)
# 女生考核标准转换
score.iloc[:, -2] = score.iloc[: , -2].apply(convert)
score.to_excel('./体侧成绩评分表_处理.xlsx', header=[0, 1])

42.png

再来查看以下我们的数据:

pd.read_excel('./体侧成绩评分表_处理.xlsx', header = [0, 1])

image.png

可以看到第一列多了一些奇奇怪怪的东西,我们用 index_col = 0 删除:

# index_col = 0   使用第一列作为行索引
pd.read_excel('./体侧成绩评分表_处理.xlsx', header = [0, 1], index_col = 0)

43.png

2.4.4 男生体测分数成绩转换

2.4.4.1 男生1000米跑成绩分数转换

注:代码处于运行中将显示:

image.png

下列代码运行十几秒,几十秒甚至几分钟都是正常的,耐心等待运行结果即可。

%%time
import pandas as pd
# 加载处理之后的男生体测成绩
df_boy = pd.read_excel('./男生体测成绩.xlsx')
# 加载成绩评分表
score = pd.read_excel('./体侧成绩评分表_处理.xlsx', header = [0,1],index_col = 0)
# 定义转换方法
def convert(x):
    if x == 0: # 说明没有参加体能测试,分数为0分
        return 0
    for i in range(20): # 成绩划分20等级
        if x <= score['男1000米跑']['成绩'][i]:
            return score['男1000米跑']['分数'][i]
    return 0 # 说明跑的太慢了,分数为0分
df_boy['男1000米跑'].apply(convert)

44.png

2.4.4.2 男生1000米跑成绩分数转换并赋值

%%time
import pandas as pd
# 加载处理之后的男生体测成绩
df_boy = pd.read_excel('./男生体测成绩.xlsx')
# 加载成绩评分表
score = pd.read_excel('./体侧成绩评分表_处理.xlsx', header = [0, 1])
# 定义转换方法
def convert(x):
    if x == 0: # 说明没有参加体能测试,分数为0分
        return 0
    for i in range(20): # 成绩划分20等级
        if x <= score['男1000米跑']['成绩'][i]:
            return score['男1000米跑']['分数'][i]
    return 0 # 说明跑的太慢了,分数为0分
df_boy['男1000米跑' + '分数'] = df_boy['男1000米跑'].apply(convert)
df_boy.head(10)

45.png

2.4.4.3 批量转换男生速度类成绩分数

%%time
import numpy as np
import pandas as pd
df_boy = pd.read_excel('./男生体测成绩.xlsx')
score = pd.read_excel('./体侧成绩评分表_处理.xlsx', header = [0,1], index_col = 0)
cols = ['男1000米跑', '男50米跑']
def convert(x, col):
    if x == 0: # 说明没有参加体能测试,分数为0分
        return 0
    for i in range(20): # 成绩划分20等级
        if x <= score[col]['成绩'][i]:
            return score[col]['分数'][i]
    return 0 # 说明跑的太慢了,分数为0分
for col in cols:
    # args 传入的参数 (col,)元组
    s = df_boy[col].apply(convert, args = (col,))
    columns = df_boy.columns.to_list()
    index = columns.index(col) + 1 # 这一列后面
    # 向这一列后面添加一列:分数
    df_boy.insert(loc = index, column = col + '分数', value = s)
df_boy.head()

46.png

2.4.4.4 批量转换男生力量型成绩分数并保存

%%time
# convert自定义,名字任意
def convert(x, col):
    for i in range(20): # 成绩划分20等级
        if x >= score[col]['成绩'][i]:
            return score[col]['分数'][i]
    return 0 # 说明跳远不达标,分数为0分
cols = ['男跳远', '男体前屈', '男引体', '男肺活量']
for col in cols:
    # apply ,args = (col,)代表某一列,成绩分数转换
    s = df_boy[col].apply(convert, args = (col,))
    columns = df_boy.columns.to_list()
    # 后面插入一列
    index = columns.index(col) + 1
    df_boy.insert(loc = index, column = col + '分数', value = s)
display(df_boy.head())
df_boy.to_excel('./男生体测成绩-分数.xlsx', index = False)

47.png

2.4.5 女生体测成绩分数转换

%%time
import numpy as np
import pandas as pd
df_girl = pd.read_excel('./女生体测成绩.xlsx')
score = pd.read_excel('./体侧成绩评分表_处理.xlsx', header = [0,1],index_col = 0)
# 速度类型成绩分数批量转换
cols = ['女800米跑', '女50米跑']
def convert(x, col):
    if x == 0: # 说明没有参加体能测试,分数为0分
        return 0
    for i in range(20): # 成绩划分20等级
        if x <= score[col]['成绩'][i]:
            return score[col]['分数'][i]
    return 0 # 说明跑的太慢了,分数为0分
for col in cols:
    s = df_girl[col].apply(convert, args = (col,))
    columns = df_girl.columns.to_list()
    index = columns.index(col) + 1
    df_girl.insert(loc = index, column = col + '分数', value = s)
# 力量型成绩分数批量转换
cols = ['女跳远', '女体前屈', '女仰卧', '女肺活量']
def convert(x, col):
    for i in range(20): # 成绩划分20等级
        if x >= score[col]['成绩'][i]:
            return score[col]['分数'][i]
    return 0 # 说明跳远不达标,分数为0分
for col in cols:
    s = df_girl[col].apply(convert, args = (col,))
    columns = df_girl.columns.to_list()
    index = columns.index(col) + 1
    df_girl.insert(loc = index, column = col + '分数', value = s)
df_girl.to_excel('./女生体测成绩-分数.xlsx', index = False)
df_girl.head(10)

48.png

2.4.6 保存成绩

最后我们把男女生成绩整合到一个文件当中:

with pd.ExcelWriter('./分数汇总.xlsx') as writer:
    df_boy.to_excel(writer, sheet_name = '男生', index = False)
    df_girl.to_excel(writer, sheet_name = '女生', index = False)

49.png


目录
相关文章
|
20天前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
51 0
|
14天前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
33 2
|
21天前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
31 2
|
12天前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
12天前
|
数据采集 数据可视化 数据挖掘
利用Python进行数据分析:Pandas库实战指南
利用Python进行数据分析:Pandas库实战指南
|
1月前
|
机器学习/深度学习 数据采集 算法
探索Python科学计算的边界:NumPy、Pandas与SciPy在大规模数据分析中的高级应用
【10月更文挑战第5天】随着数据科学和机器学习领域的快速发展,处理大规模数据集的能力变得至关重要。Python凭借其强大的生态系统,尤其是NumPy、Pandas和SciPy等库的支持,在这个领域占据了重要地位。本文将深入探讨这些库如何帮助科学家和工程师高效地进行数据分析,并通过实际案例来展示它们的一些高级应用。
51 0
探索Python科学计算的边界:NumPy、Pandas与SciPy在大规模数据分析中的高级应用
|
1月前
|
数据采集 数据可视化 数据挖掘
Python 数据分析实战:使用 Pandas 进行数据清洗与可视化
【10月更文挑战第3天】Python 数据分析实战:使用 Pandas 进行数据清洗与可视化
91 0
|
3月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
82 2
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
184 4
|
3月前
|
机器学习/深度学习 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛A题的Python代码分析,涉及智能手机用户监测数据分析中的聚类分析和APP使用情况的分类与回归问题。
87 0
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析

热门文章

最新文章

下一篇
无影云桌面