python 面试题---读取csv文件并按照要求计算数据

1.按要求读csv文件为指定数据类型

需要用到的函数“np.loadtxt”

np.loadtxt(filepath,dtype="uint64",delimiter=',',skiprows=(1),usecols=(0),encoding='utf-8')

filepath:csv 文件地址

dtype:此数据读取为什么类型

delimiter:间隔

skiprows=(1):跳过表头,不读第一行

usecols=(0):读取第0列,也就是第一列,如果usecols=(1)表示读取第二列

完整代码示例如下:

import numpy as np
from numpy import uint64

filepath = r'C:/Users/dell/Desktop/students.csv'
s_id = np.loadtxt(filepath,dtype="uint64",delimiter=',',skiprows=(1),usecols=(0),encoding='utf-8')

s_name = np.loadtxt(filepath,dtype="str",delimiter=',',skiprows=(1),usecols=(1),encoding='utf-8')

s_gender = np.loadtxt(filepath,dtype="str",delimiter=',',skiprows=(1),usecols=(2),encoding='utf-8')

s_age = np.loadtxt(filepath,dtype="uint64",delimiter=',',skiprows=(1),usecols=(3),encoding='utf-8')

s_score = np.loadtxt(filepath,dtype="float",delimiter=',',skiprows=(1),usecols=(4),encoding='utf-8')

2. 统计不同性别的平均分数代码思路:判断该处分数所对应的性别,然后做累加

完整代码如下:

male_total=0
female_total=0
count=0
leng=len(s_id)
for i in range(leng):
    if s_gender[i]=='male':
        male_total=male_total+s_score[i] #统计男性的总分数
        count+=1 #记录男性人数
        #也可以用numpy自带的计数器统计
    else:
       female_total+=s_score[i]
#numpy自带的计数器统计方法:count=np.sum(s_gender=='male')

male_avg= male_total/count
female_avg= female_total/(leng-count)    
total_std=np.std(s_score) #求所有人的成绩分布均方差
print("male_avg=",male_avg)
print("female_avg=",female_avg)
print("total_std=",total_std)

3.在一张图中分别画出男性和女性成绩的统计分布图

代码思路:主要用到的是plt.scatter函数,两个语句并列就可以在同一个图中画两组数据的散点图。

具体代码如下:

import matplotlib.pyplot as plt
male_score=[]
male_age=[]
female_score=[]
female_age=[]
leng=len(s_id)
for i in range(leng):
    if s_gender[i]=='male':
        male_score.append(s_score[i])
        female_score.append(None)
        
    else:
        female_score.append(s_score[i])
        male_score.append(None)
        
plt.figure()
plt.scatter(s_age,male_score , c='b')#参数c为点设置颜色,不同类别花的点颜色不同
plt.scatter(s_age,female_score , marker='^',c='r')#参数c为点设置颜色,不同类别花的点颜色不同
plt.xlabel('Age')
plt.ylabel('Test Score')
plt.title ('Test Scores by Age')
plt.show()

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会飞的小企鹅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值