1.pandas创建及基本操作
#------------------------------------------DataFrame的创建及基本操作------------------------------------------------------------------ #---------pd.data_range()-----生成DataFrame数据,内部数据类型为日期类型 # dates = pd.date_range('20200928',periods = 6) #periods = 6 表示生成6个数据,data_range表示日期类型数据
# ------pd.DataFrame()------生成DataFrame格式的数据----括号内可传入矩阵格式和字典格式的数据--- # df = pd.DataFrame(np.random.randn(6,4),index = dates,columns = ['a','b','c','d']) # print(df) #通过index 设置行的索引值,column设置列的索引值
# df1 = pd.DataFrame(np.arange(12).reshape((3,4))) #默认行和列的索引值为从0开始的自然数 # df_f = pd.DataFrame(data = msg,index = ['20-30','30-40','40-50','50-60','60-70'],columns = ['百分比'])#括号内可传入矩阵和字典格式的数据,不能传入不能传Series格式和DataFrame等等 # 此处msg为一个列表
# df2 = pd.DataFrame({'A':1, # 'B':pd.Timestamp('20200928'), # 'C':pd.Series(1,index = list(range(4)),dtype = 'float32'), # 'D':np.array([3]*4,dtype = 'int32'), # 'E':pd.Categorical(['test','train','test','train']), # 'F':'foo'})
#---dtypes---返回每一列的数据类型-------- # print(df2.dtypes) #---index---返回行索引值------ # print(df2.index) #---column---返回列索引值----- # print(df2.columns) #可以通过对其赋值改变列索引 #---values---返回DataFrame数据每一行的值----- # print(df2.values) #---describe--描述每一列数据---只能描述数字类型的数据--- # print(df2.describe) #----T---对DataFrame数据进行类似矩阵的转置----- # print(df2.T) #----sort_index()----对DataFrame按索引进行排序--- # print(df2.sort_index(axis = 1,ascending = False)) #通过axis设置对行或队列进行排序(axis = 1表示对列进行,axis = 0 表示对行进行索引),通过ascending设置正序或倒序,ascending = False表示倒序 #----sort_values()--对DataFrame按值进行排序----- # print(df2.sort_values(by = 'E')) #通过by 设置对那一列进行按值排序
2.pandas选择数据
#--------------------------------------------------------pandas选择数据-------------------------------------------------------------- dates = pd.date_range('20200928',periods = 6) df = pd.DataFrame(np.arange(24).reshape((6,4)),index = dates,columns = ['A','B','C','D']) # 创建两个DataFrame,并以此为例 # ---通过下标或索引获取值---两种形式--------- # print(df.A,df['A']) # print(df[0:3],df['20200928':'20200930']) #选择0-3行(20200928-20200930)并打印 #df['']选择某一列,单引号内部需传入列名(df['A']),df['0:3']选择0-2行 #通过df[]方法选择某几行时,中间需带有冒号,选择列时,只传入一个列名 # #----loc后缀选择数据--- # print(df.loc['20200929']) #df.loc['20200929]['A']选择某个值 # print(df.loc[:,['A','B']]) #打印A,B两列所有行的数据,(或者通过df.loc['20200928',['A','B']]打印某行的某几列) #通过 .loc方式选择列时,只能通过上面的方法,前面带一个 :且列名以列表的形式传入
#----通过位置下表选择数据--------- # print(df.loc[3,1]) #返回DataFrame数据中的第三行第一列的数据 # print(df.loc[3:5,1:3]) #返回DataFrame数据中第三行到第五行,第一列到第三列的数据,或者通过df.loc[[1,3,5],[1:3]]不连续的选择某几行的一到三列 #----通过ix后缀 进行行索引和列索引混合选择数据---- # print(df.ix[:3,['A','B']]) #返回前三行,列索引为‘A'和’B'的数据 #---通过判断方式(<, >, ==)进行索引---- # print(df[df.A > 8]) #返回A列中,数值大于8的数据(df.A锁定A列)
3.pandas设置值
#----------------------------------------------pandas设置值----------------------------------------------------------------------- # dates = pd.date_range('20130101',periods = 6) # df = pd.DataFrame(np.arange(24).reshape(6,4),index = dates,columns = ['A','B','C','D']) # print(df) #---通过下标改值---- # df.iloc[2,2] = 1111 # print(df) #---通过索引该值----- # df.loc['20130103','B'] = 22 #---通过判断方式锁定位置进行改值----- # df[df.A > 4] = 0 #此方法会将A列中大于0的数的所在行的所有数据改为0,因为此方法是锁定所有列 # print(df) # df.A[df.A > 4] = 0 #此方法只将A列中的数据改为0,此方法是锁定A列(df.A) # print(df) #---DataFrame数据中增加列--- # df['F'] = np.nan # df['E'] = pd.Series([1,2,3,4,5,6],index = pd.date_range('20130101',periods = 6)) # print(df)
4.pandas丢失数据处理
#----------------------------------处理丢失数据-------------------------------------------------------------------------------------- # dates = pd.date_range('20130101',periods = 6) # df = pd.DataFrame(np.arange(24).reshape((6,4)),index = dates ,columns = ['A','B','C','D']) # df.iloc[0,1] = np.nan # df.iloc[1,2] = np.nan # print(df) #------df.dropna(axis = 0或1 ,how = 'any'或'all')----删除缺失数据所在行或列---axis = 0表示删除行,axis = 1表示删除列,how = any表示只要此行(列)有一个NAN就删除此行(列), how = all表示此行(列)所有数据都是NAN才删除此行(列)print # print(df.dropna(axis = 0 ,how = 'any')) #------df.fillna(value = )----填充缺失数据---------------- # print(df.fillna(value = 0)) #将缺失的数据赋值为0 #------df.isnull()----依次判断每个位置是否是缺失值---返回布尔值--------- # print(df.isnull()) # print(np.any(df.isnull()) == True) #判断整个矩阵是否有缺失值,返回布尔值