zoukankan      html  css  js  c++  java
  • pandas 的简单操作

    # -*- coding: utf-8 -*-
    """
    Created on Fri Apr  3 14:36:20 2020
    
    @author: Admin
    """
    
    #使用python进行数据清洗
    import pandas as pd 
    dates=pd.date_range('20130101',periods=6)
    df=pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
    df.index=pd.date_range('20130101',periods=df.shape[0])
    df.index=pd.date_range('20130101',periods=len(df))
    
    #还可以指定一列为索引
    df = df.set_index('A', drop = True)
    
    
    #修改索引和列,但是不改变df的值
    df.rename(index=lambda x:x+5,columns={'A':'newA','B':'newB'})
    
    #1.查看头尾数据
    df.head() #头部
    df.tail() #尾部 
    
    
    #2.显示索引、列、数据 
    df.index
    df.columns
    df.values
    
    #3.统计行数列数
    df.shape   #其中shape[0]是行数,shape[1]是列数 
    
    #4.查看数据框 (DataFrame) 的索引、数据类型及内存信息: 
    df.info()
    
    #5.统计每一列非空个数 
    df.count()
    
    #6.统计某列有多少个类别 ,每个类别对应的个数用value_counts
    df.A.nunique()  #输出个数
    len(set(df.A))  #输出个数
    df.A.unique()  #输出类别
    df['A'].value_counts()   #类别和个数
    df.describe()    #描述性统计
    
    #7.统计相关系数
    df.corr()
    
    #8.按轴排序 
    df.sort_index(0)   #按行名排序
    df.sort_index(1)   #按列名排序
    df.sort_index(axis=1,ascending=False)   #按照列名排序且是降序
    
    #9.按值排序 
    df.sort_values(by='20130101',axis=1)  #按照行的排序 
    df.sort_values(by='B')    #按照某列排序 
    df.sort_values(['A','B'],ascending=False)  #按照多列排序 
    
    
    #10.查看最大值索引  
    df.idxmax(0)    #显示所有列最大值所对应的索引
    df.A.idxmax(0)   #显示A列中最大值对应的索引
    
    #11.格式化输出format
    print('{:.2%}'.format(0.12354))   #百分比
    print('{:,}'.format(123456789))   #会计千位分隔符
    print('{:.2f}'.format(31.31412))  #保留2位小数 
    
    
    #12.切片
    df['A']  #直接获取数据 或者这样子表达 df.A  包含着这列的值和索引 
    df[['A','B']]  #选择多列 
    df[0:3]    #获取行数据
    df['20130101':'20130103']   #获取行数据
    
    
    #12.1通过标签进行选择 .loc[] loc内部只能单独使用行标签选择行数据,选择某一列标签时前面需加:
    df.loc[dates[0]]  #根据某行
    df.loc[:,['A','B']]   #根据某一列标签时前面需要加:号
    df.loc['20130101',['A','B']]  #根据某行某列
    
    #12.2通过位置进行选择 .iloc[:,:] 通过传递数值进行位置选择(选择的是行),
    #特别是选择单行的时候(注意:iloc内部只有一个值得时候是选择的行,选择某一列时列号前面需加:,),另外-1代表最后一列
    df.iloc[3]   #选择第4行的数据 
    df.iloc[:,:-3]   #选取除了最后三列之外的数据 
    df.iloc[1:3,1:3]   #通过数值进行切片 位置加位置(区别于loc之处) 选择第2、3行,第2、3列数据 
    df.iloc[[1,2],[2,3]]   #位置的列表 选择第2,3行,第3,4列数据 
    df.iloc[[0,1],:]   #对行、列进行切片  第1、2行
    df.iloc[:,[0,1]]   #对行、列进行切片  第1、2列
    df.iloc[1,1]   #第2行第2列
    
    #12.3布尔索引  不能说等于某个值,非要说,那就用isin
    df[df.A>0]
    df[df>0]   #取出大于0的数,小于0的显示为空值
    df['E']=['one','one','two','there','four','there']
    df[df.E.isin(['two','four'])]   #使用 isin()方法来过滤:
    
    
    #13.赋值 如果赋值的标签不存在,则产生新的列(行),未赋值的位置用空值填充
    df.loc['20130101','A']=1
    
    
    #14.缺失值的处理 
    df.isnull().sum()   #查看每一列有多少个缺失值
    
    #13.1删除列的方法,会改变原来的数据
    df.drop(df.columns[4],axis=1,inplace=True)  #不知道列名时
    df.drop('E',axis=1,inplace=True)   #根据列名删除 ,删除多列用这个drop(['A','B'],axis=1,inplace=True) 
    del df['E']    #这个同理 
    
    
    #13.2去掉包含缺失值的行,不改变原来的值
    df.dropna()   #不返回df还是原值
    df.dropna(how='all')   #删除所有均为空值的行
    df.dropna(inplace=True)   #返回删除后的
    df.dropna(axis=1)  #移除数据框 DataFrame 中包含空值的列
    
    
    #13.3 对缺失值进行填充(如果填充后需要保存,需加inplace=True) 
    df.fillna(value=5)
    df.fillna(df.mean()) #将所有空值替换为平均值
    pd.isnull(df)
    
    
    #14.相关操作 
    
    #14.1统计行列平均值0是列,1是行
    df.mean()  #列平均
    round(df.mean())
    df.mean(1)  #行平均 
    
    #14.2Apply – 对数据应用函数 
    df.apply(lambda x:x.max()-x.min())
    df.apply(np.mean)   #按行统计axis=1
    df.apply(np.max,axis=1)   #按行统计axis=1
    
    
    #14.3计数 value_counts() ,df不能直接使用 ,要加上某一列才可以使用
    df.A.value_counts()  #DataFrame查看某一列类别数据各类的个数
    df.apply(pd.Series.value_counts)  #DataFrame查看所有列的各类统计个数
    
    #14.4 字符串大小写转换  str.lower()
    #14.5格式转换 astype(float)
    #14.6替换 
    df.replace(4,'one')
    
    
    #15.合并 
    #concat (不通过键值之间的连接)
    #merge 类似于 SQL 类型的连接( join)☆
    #Append ---- 类似于 SQL 中 union
    
    #15.1concat (默认上下连接,axis=1时左右连接)
    df=pd.DataFrame(np.random.randn(10,4))
  • 相关阅读:
    Java之this关键字的用法
    JavaSE 之 final 初探
    LinkedList 浅析示例
    HashSet 浅析示例
    ArrayList 浅析示例
    MySQL5.7 修改密码
    IE10 和 Chrome50 对日期 new Date() 支持的区别
    databtables 设置(显示)行号
    团队管理
    财务名称
  • 原文地址:https://www.cnblogs.com/cgmcoding/p/13274604.html
Copyright © 2011-2022 走看看