import numpy as np import pandas as pd #1.数据筛选 arr1=np.array([1,None,3,4]) print(arr1)#None不能参与计算 arr2=np.arange(1000,dtype=int).sum() print(arr2)#叠加计算 arr3=np.array([1,2,np.nan])#不方便的数字用nan代表 print(arr3) print(arr3.sum())#nan极大值 print(np.nansum(arr3))#忽略nan计算 arr4=pd.Series([1,2,3,4,5,np.nan,None]) print(arr4)#nan与None当作缺失数据 print(type(arr4[5]))#虽然不是数字但是存储方式还是float分配的 arr5=pd.Series([1,2,3,"abc",np.nan,None]) print(arr5.isnull())#筛选缺失数据 print(arr5.notnull)#筛选确实数据 print(arr5.dropna())#过滤缺失数据 print("------------------------------------") arr6=pd.DataFrame([[1,2,3,4,np.nan], [5,6,np.nan,np.nan,np.nan], [51,61,np.nan,np.nan,78], [100,200,300,400,500]]) print(arr6.dropna())#筛选缺失的行 print(arr6.dropna(axis=0))#筛选缺失的行 print(arr6.dropna(axis=1))#筛选缺失的列 print(arr6.dropna(axis="columns",how="all"))#列全是nan筛选 print(arr6.dropna(axis="columns",how="any"))#列只要有一个筛选,index代表行 #2.数据填充 arr7=pd.Series([1,np.nan,2,None,"nimei"],index=list("ABCDE")) arr7.fillna(0)#加法缺失数据填充为0 arr7.fillna(1)#乘法缺失数据填充为1 arr8=pd.Series([1,np.nan,2,None,3],index=list("ABCDE")) arr8.fillna(method="ffill")#参考前面的值填充 arr8.fillna(method="bfill")#参考后面的值填充 arr9=pd.DataFrame([[1,2,3,np.nan,np.nan], [5,6,np.nan,np.nan,np.nan], [51,61,np.nan,np.nan,78], [100,200,300,400,500]]) arr9.fillna(0)#所有数字填充为0 arr9.fillna(method="ffill",axis=1)#按照行填写,前方没有数据就不填 arr9.fillna(method="ffill",axis=0)#按照列填写,前方没有数据就不填