Python——pandas基本方法

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)    #判断整个矩阵是否有缺失值,返回布尔值
原文地址:https://www.cnblogs.com/jgua/p/14183915.html