输入输出
从sklearn导入文件
读取文件使用loadtxt(fpath,skiprows=1,delimiter=",")
文件的样式:
150 4 setosa versicolor virginica
0 5.1 3.5 1.4 0.2 0
1 4.9 3.0 1.4 0.2 0
2 4.7 3.2 1.3 0.2 0
3 4.6 3.1 1.5 0.2 0
4 5.0 3.6 1.4 0.2 0
.. ... ... ... ... ...
145 6.7 3.0 5.2 2.3 2
146 6.3 2.5 5.0 1.9 2
147 6.5 3.0 5.2 2.0 2
148 6.2 3.4 5.4 2.3 2
149 5.9 3.0 5.1 1.8 2
[150 rows x 5 columns]
计算第一行的数据
- 平均值,中位数,标准差
print(np.mean(date))
#计算中位数
print(np.median(date))
#计算标准差
print(np.std(date))
- 计算百分点数
#计算百分点
print(np.percentile(date, [5, 95]))
随机的数据集里面的数据为np.nan
#随机的修改数组中的值
i,j=date.shape
date[np.random.randint(i,size=20),np.random.randint(j,size=20)]=np.nan
print(date)
- 查找缺失值
#查找缺失值得个数
d=date[:,0]
#得到一个布尔型数组
x=np.isnan(d)
print(np.sum(x))
#挑选数组为TRue的位置
print(np.where(x))
筛选第一列的值大于且第三列的值小于…的行
date=np.loadtxt(fpath,skiprows=1,delimiter=',',usecols=[0,1,2,3])
print(date)
#where 返回的是一个行的地址
x=np.where(np.logical_and(date[:,0]<5.0,date[:,2]>1.5))
print(date[x])
- 返回没有nan 的行
x=np.isnan(date)
y=date[np.sum(x,axis=1)==0]
print(y[0:11])
计算相关系数
#直接计算公式
#用函数
print(np.corrcoef(date[:, 0], date[:, 2]))
查找数组中是否有缺失值
x=np.isnan(date)
#计算是否有True
np.any(x)
- 将缺失值改为0
date[np.random.randint(i,size=20),np.random.randint(j,size=20)]=np.nan
#where(条件,正确,否则)
date=np.where(np.isnan(date),0,date)
print(date)
找出唯一出现的数值
unique = np.unique(date)
print(unique)
#也就是找到全部的值,不包括重复的
符合条件的值设置为特定的字符
这个功能和pandas的功能非常相似,就是说搜索条件然后将特定的值设置为具体的字符
label=np.digitize(date[:,2],[0,3,5])
label_map={1:'small',2:'medium',3:'large'}
dates=[label_map[x] for x in label]
print(date)
添加新的列
#第一种方法
p=date[:,0].astype(float)
s=date[:,2].astype(float)
v=(np.pi*p*s**2)/3
date=np.insert(date,5,v,axis=1)
print(date)
#第二种方法
使用np.colunm_stack(a,b)
随机获取数据,使得得到1的数据是2和3的两倍
使用随机取样的方法
s=np.array([1,2,3])
out=np.random.choice(s,size=10,p=[0.5,0.25,0.25])
print(out)
对某一列数据进行排序
#arg方法返回的是一个索引[0,2,4,5,3],然后按照索引去查看。
index=np.argsort(date[:,0])
print(date[index])
查找最多的数据
val,n=np.unique(date[:,2],return_counts=True)
print(val[np.argmax(n)])
print(np.amax(n))
print(n)
获取元素第一次出现的值
index = np.where(date[:, 3] > 1.0)
#位置
print(index[0][0])
#位置上的值
print(date[index[0][0]][3])