zoukankan      html  css  js  c++  java
  • DataFrame中的数据选取与过滤

    导语:

    在数据分析前,筛选出我们所需要的数据是非常必要的手段,下面简单介绍几种方法:

    导入数据

    1 #导入pandas和numpy库
    2 import pandas as pd
    3 import numpy as np
    4 from pandas import Series,DataFrame 
    5 test=pd.read_excel("/Users/yaozhilin/Downloads/exercise.xlsx",sep="t")
    6 test.head(5)#显示前五行

    •sample:简单随机选取

    sample可以理解为随机简单抽样在后续数分析和挖掘中经常用到

    1 test.sample(frac=0.01,random_state=1)
    2 #frac选取的比例
    3 #random_state=1中的数值代表固定数据的标识

    •isin:根据字段筛选

    单个字段筛选

    1 test.loc[test["所属区域"]=="苏州"]

    多列单个字段筛选

    test.loc[(test["所属区域"]=="苏州")&(test["产品类别"]=="睡袋")].head(5)#需用()括起每个条件

    多字段筛选可以用isin,个人感觉isin的用法类似sql中的in

    单列多字段

    1 test.loc[test["所属区域"].isin(["苏州","昆山"])] 

    多列多字段

    t=test.loc[(test["所属区域"].isin(["苏州","昆山"])&(test["产品类别"].isin(["睡袋","宠物用品"])))]
    t.sample(n=4)

    •query()方法

    直接写表达式打方式,注意:它只直接作用于该列表的行或列名。

    1 qt=test.query("(所属区域=='苏州'|所属区域=='昆山')&(产品类别=='睡袋'|产品类别=='宠物用品')")
    2 qt.sample(n=4)

    注:使用query时,所有的表达式都在引号中,且字符串引号与双引号要区分(即可以一种双引号一种单引号),且列名不需用引号(可理解为直接调用了列表则列名不需注释)。

    总结:

    1、单独进行或者单独进行列过滤用test[columns筛选条件/index筛选条件]

    2、同时对行和列筛选test.loc[行筛选条件,列筛选条件],但是为单字段

    3、同时对行和列筛选且多字段test.loc[test["columns"].isin([" "," ")]

    4、query也可以进行多字段筛选,但主要不能引用列名和格式书写

  • 相关阅读:
    单例模式
    java笔记 chapter7 抽象类和数组
    java笔记 chapter6 StringBuffer类和String Bulider类,Math类 Date类,Calendar类
    设计上的若干问题
    Java中的二次分发
    关于抽象
    SSI框架下同一个Bean加载了2次问题解决
    Hello 2015
    关于window.location.href is not a function在FF,chrom报错问题
    使用Eclipse的一些小心得!
  • 原文地址:https://www.cnblogs.com/ye20190812/p/13408936.html
Copyright © 2011-2022 走看看