需要用到的函数“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')
完整代码如下:
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)
代码思路:主要用到的是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()