def test3():#numpy的nan值替换为列平均值 t1=np.arange(12).reshape((3,4)).astype("float") t1[1,2:]=np.nan print("t1:") print(t1) for i in range(t1.shape[1]):#遍历列数 temp_col=t1[:,i]#取一列 temp_col_not_nan=temp_col[temp_col==temp_col]#当前一列不为nan,使用布尔索引 print(temp_col==temp_col) print("temp_col_not_nan") print(temp_col_not_nan) temp_col[np.isnan(temp_col)]=temp_col_not_nan.mean()#将均值赋值给nan print("temp_col") print(temp_col) print("*"*100) def test4():#数组的拼接 t1=np.arange(12).reshape((3,4)) t2=np.arange(12,24).reshape((3,4)) print("t1") print(t1) print("t2") print(t2) print(np.vstack((t1,t2)))#竖直拼接 print(np.hstack((t1,t2)))#水平拼接 print("*"*100) t1[[1,2],:]=t1[[2,1],:]#行交换 print(t1) t1[:,[0,2]]=t1[:,[2,0]]#列交换 print(t1) #获取最大值最小值的位置 np.argmax(t1,axis=0) np.argmin(t1,axis=1) #创建全为0的数组 np.zeros((3,4)) #全为1的数组 np.ones((3,4)) #创建对角线为1的正方形数组 np.eye(3) # t1=t2.copy() 复制,相互不影响 def test5():#np的随机函数 np.random.rand(2,3)#产生2行3列的均匀分布的随机数组 np.random.randn(2,3)#标准正态分布数组 np.random.randint(10,20,(3,4))#范围[10,20),三行四列的随机整数数组 np.random.uniform(10,20,(3,4))#产生均匀分布数组 np.random.seed(10)#设置随机种子 def test1_pandas():#pandas基础 t = pd.Series([1, 2, 3, 4, 5, 6, 7]) # Series 一维,带标签数组 print(t) t2 = pd.Series([1, 2, 3, 4, 5], index=list("abcde")) # 指定标签 print(t2) temp_dict = {"name": "xiaohong", "age": 30, "tel": 10086} t3 = pd.Series(temp_dict) # 通过字典创建 print(t3) t3.index # 索引 t3.values # 值 # DataFrame t3 = pd.DataFrame(np.arange(12).reshape(3, 4)) print(t3) # DataFrame对象既有行索引,又有列索引 # 行索引,表明不同行,横向索引,叫index,0轴,axis=0 # 列索引,表名不同列,纵向索引,叫columns,1轴,axis=1 # ndim 维度属性 t1 = pd.DataFrame(np.arange(12).reshape(3, 4), index=list("abc"), columns=list("WXYZ")) # 指定行列的索引 d1 = {"name": ["xiaoming", "xioahong"], "age": [10, 20], "tel": [100086, 10085]} print(pd.DataFrame(d1)) # 通过字典创建 d2 = [{"name": "xiaohong", "age": 10, "tel": 10086}, {"name": "xiaownag", "age": 10, "tel": 10085}] pd.DataFrame(d2) t1.head(3) # 显示头几行 t1.tail(3) # 显示末尾几行 t1.info() # 展示df的概览 t1.describe() # 快速进行统计:count,mean,std,min pass def test_pandas2():#pandas索引 # pandas索引 # loc通过标签获取 t4 = pd.DataFrame(np.arange(12).reshape(3, 4), index=list("abc"), columns=list("WXYZ")) print(t4) print(t4.loc["a", "Z"]) print(t4.loc["a", :]) print(t4.loc[:, "Y"]) print(t4.loc[["a", "c"], :]) print(t4.loc[["a", "b"], ["W", "Z"]]) # iloc通过位置获取 print(t4.iloc[1, :]) # 布尔索引 print(t4[t4["W"] > 2]) # &,| # 缺失值处理 t4.iloc[1] = np.nan t4.iloc[1, 2] = 2.0 print(t4) print(pd.isnull(t4)) # 是否为空 print(pd.notnull(t4)) # 是否不为空 # 删除 print(t4[pd.notnull(t4.iloc[:, 0])]) # 把nan所在的行去掉 t4.dropna(axis=0, how="all", inplace=False) # 删除nan所在行,all全为nan则删掉,any只要有一个就删掉,inplace是否对源数据修改 # 填充 t4.fillna(t4.mean()) # 填充均值 pass