课时24numpy中填充nan和youtube数据的练习
1.替换练习
mport numpy as np
import numpy as npu
t1=np.arange(12).reshape((3,4)).astype("float")
t1[1,2:]=np.nan
print(t1)
执行结果:
[[ 0. 1. 2. 3.]
[ 4. 5. nan nan]
[ 8. 9. 10. 11.]]
2.找出nan并替换
import numpy as np
import numpy as npu
#print(t1)
def fill_narray(t1):
for i in range(t1.shape[1]):#形状为列,遍历每一列
temp_col=t1[:,i]#当前这一列
nan_num=np.count_nonzero(temp_col!=temp_col)
if nan_num!=0:#不为0,说明当前这一列中有nan
#当前一列不为nan的array
temp_not_nan_col=temp_col[temp_col==temp_col]#数组中不为nan的部分取出来
temp_not_nan_col.mean() #当前这一列不为nan的平均值
#把平均值赋值到nan的地方
temp_col[np.isnan(temp_col)]=temp_not_nan_col.mean()
return t1
if __name__=='__main__':
t1 = np.arange(12).reshape((3, 4)).astype("float")
t1[1, 2:] = np.nan
print(t1)
print("##########")
t1=fill_narray(t1)
print(t1)
执行结果:
[[ 0. 1. 2. 3.]
[ 4. 5. nan nan]
[ 8. 9. 10. 11.]]
##########
[[ 0. 1. 2. 3.]
[ 4. 5. 6. 7.]
[ 8. 9. 10. 11.]]
Process finished with exit code 0
3.總結
import matplotlib as plt
import numpy as np
us_path=""
uk_path=""
t_us=np.loadtxt(us_path,delimiter=",",dtype="int")
#取评论的数据
t_us_comments=t_us[:,-1]
#选择比5000小的数据
t_us_comments=t_us_comments[t_us_comments<=5000]
print(t_us_comments.max(),t_us_comments.min())
d=250
bin_nums=(t_us_comments.max()-t_us_comments.min())//d
#绘图
plt.figure(figsize=(20,8),dpi=80)
plt.hist(t_us_comments,bin_nums)
plt.show()