Tensorflow-机器学习基础三部曲之pandas的一些数据处理(6-1)

简介

Pandas库中有loc和iloc以及ix可以用来索引数据,抽取数据;现在官方已经不建议使用ix进行数据索引,所以这里参看官方文档介绍一些loc和iloc的简单操作。

官方文档:Pandas文档
其他:别人写的例子

pandas.DataFrame[val]

使用过程中发现直接使用dataframe时,dataframe[val]中的val有几种形式:
1.列名,也就是columns名,可以是单个列或者是由列名组成的列表,如果是单个列名则返回Serie对象,如果是列表则返回DataFrame对象
2. 分片,用来进行行切片,比如df[:],则会选择所有的行,即使只有一行返回的也是DataFrame对象,df[:2]选择前两行,这里需要注意,如果说df的index本身就是数值型,比如说是0,1,2,3,4,5…这样的索引,那么df[:2]选择的将是index为0和1的行,也就是说数字分片优先选择的是行数而不是行标签。但是对于ix命令来说,df.ix[:2]选择是标签号从开始至2(包括)的行,也就是上面的0,1,2行
3. boolean数组,这个很好理解,选择boolean数组中为True的值,为被选中的值会被值为NaN3. boolean数组,这个很好理解,选择boolean数组中为True的值,为被选中的值会被值为NaN
4. 布尔型DataFrame,作用和boolean相似,但是需要该DataFrame和df的columns值相等,否则会报错

pandas.DataFrame.loc[val]

dataframe.loc[val]主要是通过标签或者数组来访问行和列:
inputs:

  • 单个标签,例如:5或’a’(注意,它5被解释为索引的标签,并且从不作为索引的整数位置
  • 标签列表或数组,例如。[‘a’, ‘b’, ‘c’]
  • 带有标签的切片对象,例如’a’:‘f’
  • 与被切片的axis长度相同的布尔数组,例如。[True, False, True]
  • 具有一个参数(调用Series,DataFrame或Panel)的可调用函数,它返回索引的有效输出(上述之一)

DataFrame.loc[val]例子

导入模块并创建dataframe

import pandas as pd
import numpy as np

df = pd.DataFrame([[1,2],[3,4],[4,5]],
                  index=['one', 'two', 'three'],
                  columns=['a', 'b'])

单一标签:通过index中的标签’one’返回a和b两行的数据

df.loc['one']
return:
a    1
b    2
Name: one, dtype: int64

标签列表:使用[[]]返回标签列表数据

df.loc[['one','two']]
return:
	a	b
one	1	2
two	3	4

行和列的单个标签

df.loc['one','b']
return:
2

通过切片行标签和列进行索引

df.loc['two':'three','b']
return:
two      4
three    5
Name: b, dtype: int64

通过条件返回一个布尔系列

df.loc[df['a'] > 3]
return:
	    a	b
three	4	5

通过条件返回指定了列标签的布尔系列

df.loc[df['a']>3,['b']]
returen:
    	b
three	5

设置值
设置与标签列表匹配的所有项目的值

df.loc[['one','two'],['a']]=10
df
return:
     a	b
one	10	2
two	10	4
three	4	5

设置整行的值

df.loc['three']=20
df
return:
	a	b
one	10	2
two	10	4
three	20	20

设置整列的值

df.loc[:,'b']=30
df
return:
	a	b
one	10	30
two	10	30
three	20	30

设置匹配可调用条件的行的值

df.loc[df['a']>10]=40
df
return:
	a	b
one	10	30
two	10	30
three	40	40

pandas.DataFrame.iloc[val]

dataframe.iloc[val]主要是通过整数位置访问行和列的组:
inputs:

  • 一个整数,例如5。
  • 整数的列表或数组,例如。[4, 3, 0]
  • 具有整数的切片对象,例如1:7
  • 布尔数组
  • 具有一个参数(调用Series,DataFrame或Panel)的可调用函数,它返回索引的有效输出(上述之一)

DataFrame.iloc[val]例子

通过列切片索引

df.iloc[1:3]
return:
	a	b
two	10	30
three	40	40

通过行和列的位置索引

df.iloc[[0,2],:]
return:
	a	b
one	10	30
three	40	40
df.iloc[[0,2],1]
return:
one      30
three    40
Name: b, dtype: int64

猜你喜欢

转载自blog.csdn.net/qq_40188689/article/details/83782005
今日推荐