您的位置:首页 > 编程语言 > Python开发

学习笔记(06):Python数据清洗实战-数据筛选

2020-03-01 01:49 459 查看

立即学习:https://edu.csdn.net/course/play/26990/361123?utm_source=blogtoedu

数据筛选:直接引用,选择行列,基础索引,loc和iloc,如何区分

 

 

import三个库:pandas as pd,os, numpy as np

os.chdir(‘数据存放路径’)

读取 变量 = pd.read_csv(‘文件名称’, encoding=‘’,dtype= {‘某一列名’:str})

df.info()对数据进行简单的探索,比如多少行,多少变量,每个column数据类型等

df.head () 查看下数据前几行是什么样子的

df.columns 是数据的列名称,也叫变量名称或者叫数据的字段

如果只想要一列,简单索引方式:df【‘列名’】但是如果要两列,就要以嵌套列表的形式df[[‘列名1’,’列名2’]].head(5)这里是显示前五行的意思。取多个字段要写两层。如果只想要第二行到第五行就[1:5]这里是左闭右开,因此是包含1但不包含5,第二行到第五行

loc只能选标签,比如loc[3:4]就会把索引标签为3的和索引标签为4的给取出来,loc定义的是标签,也就是这里的3和4不再是位置而是标签了

如果不想选择行但是想选择列,并以列表形式传递进去。则:loc[:,[‘列名1’,’列名2’]].head(10)查看前十行

如果行标签1-3的选出来,列标签如上述,则:loc[1:3,[‘列名1’,’列名2’]]

df.loc还能接条件,比如我们要取某一列中某一个确定的值的那一行数据:df.loc[df.列名=‘某值’]这里后面还可以接我们的变量:df.loc[df.列名=‘某值’,[‘列名1’,’列名2’]]

 

如果定义取哪个名称的列标签数据时出错,可以试着写两个等号:== 举例:变量名.loc = 变量名.列名==“一个列标签名”,[“刚才那个列名”,”其他列名”]

 

&:and 

|:or

因此还可以加其他条件 比如  变量名.loc = [变量名.列名1==(“一个列标签名”) | (列名2>3) ,[“列名1”,”列名2”]]

因此loc语句第一个参数都是对行操作,第二个参数才是对列操作

所以:只想对行操作对列不做限制就写成这种形式:loc[3:4]

只想对列操作,对行不做限制就是这样:loc[:,[‘列名1’,’列名2’]]

 

然后看iloc:loc选择的是标签而iloc选择的是位置!!

因此

loc[3:4]就会把索引标签为3的和索引标签为4的给取出来,loc定义的是标签,也就是这里的3和4不再是位置而是标签了

变量名.iloc[1:3]会显示行标签为1和2的数据,因为这里1代表第二行,3因为左包右开因此指取到不包括第四行,也就是第三行的数据。

iloc[:,1:4]只对行不做限制,列则是取第二列到第四列

但是假设我们只要第一列和第三列怎么办?把它以列表的形式传递进去就行:iloc[:,[0,2]]

前面行也可以这样写:行要第二行和第十一行列要第一列和第三列:

iloc[[1,10],[0,2]]

  • 点赞
  • 收藏
  • 分享
  • 文章举报
ursjing 发布了6 篇原创文章 · 获赞 0 · 访问量 173 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: