zoukankan      html  css  js  c++  java
  • pandas-索引

    一、按列取、按索引/行取、按特定行取

     1 import numpy as np
     2 from pandas import DataFrame
     3 import pandas as pd
     4  
     5 df=DataFrame(np.arange(12).reshape((3,4)),index=['one','two','thr'],columns=list('abcd'))
     6  
     7 df['a']#取a列
     8 df[['a','b']]#取a、b列
     9  
    10 #ix可以用数字索引,也可以用index和column索引
    11 df.ix[0]#取第0行
    12 df.ix[0:1]#取第0行
    13 df.ix['one':'two']#取one、two行
    14 df.ix[0:2,0]#取第0、1行,第0列
    15 df.ix[0:1,'a']#取第0行,a列
    16 df.ix[0:2,'a':'c']#取第0、1行,abc列
    17 df.ix['one':'two','a':'c']#取one、two行,abc列
    18 df.ix[0:2,0:1]#取第0、1行,第0列
    19 df.ix[0:2,0:2]#取第0、1行,第0、1列
    20  
    21 #loc只能通过index和columns来取,不能用数字
    22 df.loc['one','a']#one行,a列
    23 df.loc['one':'two','a']#one到two行,a列
    24 df.loc['one':'two','a':'c']#one到two行,a到c列
    25 df.loc['one':'two',['a','c']]#one到two行,ac列
    26  
    27 #iloc只能用数字索引,不能用索引名
    28 df.iloc[0:2]#前2行
    29 df.iloc[0]#第0行
    30 df.iloc[0:2,0:2]#0、1行,0、1列
    31 df.iloc[[0,2],[1,2,3]]#第0、2行,1、2、3列
    32  
    33 #iat取某个单值,只能数字索引
    34 df.iat[1,1]#第1行,1列
    35 #at取某个单值,只能index和columns索引
    36 df.at['one','a']#one行,a列

    二、按条件取行

     1 #选取等于某些值的行记录 用 ==
     2 df.loc[df[‘column_name’] == some_value]
     3  
     4 #选取某列是否是某一类型的数值 用 isin
     5 df.loc[df[‘column_name’].isin(some_values)]
     6  
     7 #多种条件的选取 用 &
     8 df.loc[(df[‘column’] == some_value) & df[‘other_column’].isin(some_values)]
     9  
    10 #选取不等于某些值的行记录 用 !=
    11 df.loc[df[‘column_name’] != some_value]
    12  
    13 #isin返回一系列的数值,如果要选择不符合这个条件的数值使用~
    14 df.loc[~df[‘column_name’].isin(some_values)] 

     三、查看、检查数据

     1 #查看DataFrame对象的前n行
     2 df.head(n)
     3 
     4 #查看DataFrame对象的最后n行
     5 df.tail(n)
     6 
     7 #查看行数和列数
     8 df.shape()
     9 
    10 #查看索引、数据类型和内存信息
    11 df.info() 
    12 
    13 #查看数值型列的汇总统计
    14 df.describe()
    15 
    16 #查看Series对象的唯一值和计数
    17 s.value_counts(dropna=False)
    18 
    19 #查看DataFrame对象中每一列的唯一值和计数
    20 df.apply(pd.Series.value_counts)

    四、数据清理

     1 #重命名列名
     2 df.columns = ['a','b','c']    
     3 
     4 #检查DataFrame对象中的空值,并返回一个Boolean数组
     5 pd.isnull()
     6 
     7 #检查DataFrame对象中的非空值,并返回一个Boolean数组
     8 pd.notnull()
     9 
    10 #删除所有包含空值的行
    11 df.dropna()
    12 
    13 #删除所有包含空值的列
    14 df.dropna(axis=1)
    15 
    16 #删除所有小于n个非空值的行
    17 df.dropna(axis=1,thresh=n)
    18 
    19 #用x替换DataFrame对象中所有的空值
    20 df.fillna(x)
    21 
    22 #将Series中的数据类型更改为float类型
    23 s.astype(float)
    24 
    25 #用‘one’代替所有等于1的值
    26 s.replace(1,'one')
    27 
    28 #用'one'代替1,用'three'代替3
    29 s.replace([1,3],['one','three'])
    30 
    31 #批量更改列名
    32 df.rename(columns=lambda x: x + 1)
    33 
    34 #选择性更改列名
    35 df.rename(columns={'old_name': 'new_ name'})
    36 
    37 #更改索引列
    38 df.set_index('column_one')
    39 
    40 #批量重命名索引
    41 df.rename(index=lambda x: x + 1)

    五、数据处理:Filter、Sort和GroupBy

     1 #选择col列的值大于0.5的行
     2 df[df[col] > 0.5]
     3 
     4 #按照列col1排序数据,默认升序排列
     5 df.sort_values(col1)
     6 
     7 #按照列col1降序排列数据
     8 df.sort_values(col2, ascending=False)
     9 
    10 #先按列col1升序排列,后按col2降序排列数据
    11 df.sort_values([col1,col2], ascending=[True,False])
    12 
    13 #返回一个按列col进行分组的Groupby对象
    14 df.groupby(col)
    15 
    16 #返回一个按多列进行分组的Groupby对象
    17 df.groupby([col1,col2])
    18 
    19 #返回按列col1进行分组后,列col2的均值
    20 df.groupby(col1)[col2]
    21 
    22 #创建一个按列col1进行分组,并计算col2和col3的最大值的数据透视表
    23 df.pivot_table(index=col1, values=[col2,col3], aggfunc=max)
    24 
    25 #返回按列col1分组的所有列的均值
    26 df.groupby(col1).agg(np.mean)
    27 
    28 #对DataFrame中的每一列应用函数np.mean
    29 data.apply(np.mean)
    30 
    31 #对DataFrame中的每一行应用函数np.max
    32 data.apply(np.max,axis=1)

    六、数据合并

    1 #将df2中的行添加到df1的尾部
    2 df1.append(df2)
    3 
    4 #将df2中的列添加到df1的尾部
    5 df.concat([df1, df2],axis=1)
    6 
    7 #对df1的列和df2的列执行SQL形式的join
    8 df1.join(df2,on=col1,how='inner')

    七、数据统计

     #查看数据值列的汇总统计
    df.describe()   
    
    #返回所有列的均值
    df.mean()    
    
    #返回列与列之间的相关系数
    df.corr()    
    
    #返回每一列中的非空值的个数
    df.count()    
    
    #返回每一列的最大值
    df.max()    
    
    #返回每一列的最小值
    df.min()    
    
    #返回每一列的中位数
    df.median()    
    
    #返回每一列的标准差
    df.std()    
    陈小洁的三只猫
  • 相关阅读:
    准确率99.9%的离线IP地址定位库
    手写一个消息队列以及延迟消息队列
    rabbitmq介绍
    污点和亲和力高级调度方式
    ceph
    Vue作业
    label和labelSeletor
    http状态简记
    数据库
    作业
  • 原文地址:https://www.cnblogs.com/ccpang/p/11288733.html
Copyright © 2011-2022 走看看