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与C#比较】其它
    C#和java之间的一些差异与共性
    C#与Java的语法差异
    关于npm本地安装模块包(node_modules),安装不了的问题
    vue
    vue
    vue
    vue
    v
    vue -model
  • 原文地址:https://www.cnblogs.com/ye20190812/p/13408936.html
Copyright © 2011-2022 走看看