• 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)    #判断整个矩阵是否有缺失值,返回布尔值
  • 相关阅读:
    监控 Linux 性能的 18 个命令行工具
    VS2015中无法查找或打开 PDB 文件
    C1853 编译器错误:fatal error C1853: 'pjtname.pch' precompiled header file is from a previous
    malloc用法
    C语言中i++和++i的区别
    vs未定义的标识符“round”ceil()和floor()
    error C2065: “uint8_t”: 未声明的标识符
    strtol 函数用法
    C++ “string”: 未声明的标识符
    C++ 中c_str()函数
  • 原文地址:https://www.cnblogs.com/jgua/p/14183915.html
Copyright © 2020-2023  润新知