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()

你可能感兴趣的:(面试,python,numpy,开发语言)