和鲸社区-Numpy+Pandas数据处理·闯关-关卡1

关卡 1:Pandas和Numpy基础

STEP1: 按照下列要求创建数据框

已知10位同学的学号以及语数英三科成绩如下:(都是数值型数据)
成绩表
要求:计算出每位同学的总成绩(SumScore)、平均成绩(MeanScore),最高成绩(MaxScore)、最低成绩(MinScore)、最高成绩与最低成绩的极差(PtpScore)、成绩方差(VarScore);并将所有数据保存到score数据框中;将多列数据(包括学生的ID)合并到一列中,列名设置为answer,最终只保留索引id(从0到100)和answer两列,统一保留整数;

import numpy as np
import pandas as pd

#1.将数据保存到数据框df
id = pd.Series([i for i in range(202001,202011) ])
Chinese = pd.Series([98, 67, 84, 88, 78, 90, 93, 75, 82, 87])
Math = pd.Series([92, 80, 73, 76, 88, 78, 90, 82, 77, 69])
English = pd.Series([88, 79, 90, 73, 79, 83, 81, 91, 71, 78])
data_dict = {"id":id, "Chinese":Chinese, "Math":Math, "English":English}
df = pd.DataFrame(data_dict)

#2.计算出每位同学的总成绩(SumScore)、平均成绩(MeanScore),最高成绩(MaxScore)、
#最低成绩(MinScore)、最高成绩与最低成绩的极差(PtpScore)、成绩方差(VarScore);
stu = [ i for i in range(10) ]
SumScore = df[["Chinese","Math","English"]].sum(axis = 1)
MeanScore = df[["Chinese","Math","English"]].mean(axis = 1).astype("int")
MaxScore = df[["Chinese","Math","English"]].max(axis = 1)
MinScore = df[["Chinese","Math","English"]].min(axis = 1)
PtpScore = MaxScore - MinScore
VarScore = df[["Chinese","Math","English"]].var(axis = 1).astype("int")

#3.并将所有数据保存到df2数据框中;
columns = {0:"SumScore", 1:"MeanScore", 2:"MaxScore", 3:"MinScore", 4:"PtpScore", 5:"VarScore"}
df2 = pd.concat([df, SumScore, MeanScore, MaxScore, MinScore, PtpScore, VarScore], axis = 1 )
df2 = df2.rename(columns = columns)
df2

df2数据框数据前10行

StudentScore = df2

#4.多列数据(包括学生的ID)合并到一列中,列名设置为answer
data = pd.concat([StudentScore.iloc[:,0], StudentScore.iloc[:,1], StudentScore.iloc[:,2], StudentScore.iloc[:,3], StudentScore.iloc[:,4], 
StudentScore.iloc[:,5], StudentScore.iloc[:,6], StudentScore.iloc[:,7], StudentScore.iloc[:,8], StudentScore.iloc[:,9]])
df = pd.DataFrame(data, columns=['answer'])

#5.最终只保留索引id(从0到100)和answer两列
df['id'] = range(len(df))
df = df[['id', 'answer']]
df.head(5)

df数据框数据前五行

STEP2: 将结果保存为 csv 文件
df.to_csv(‘answer_1.csv’, index=False, encoding=‘utf-8-sig’)

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值