数据介绍

先随机生成一组数据:

  1. import pandas as pd
  2. import numpy as np
  3.  
  4. state = ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada']
  5. year = [2000, 2001, 2002, 2003, 2004]
  6. pop = [1.3, 1.4, 1.6, 4.5, 2.7]
  7. frame = pd.DataFrame({'state': state, 'year': year, 'pop': pop})
  8. print(frame)

结果:

  1. pop state year
  2. 0 1.3 Ohio 2000
  3. 1 1.4 Ohio 2001
  4. 2 1.6 Ohio 2002
  5. 3 4.5 Nevada 2003
  6. 4 2.7 Nevada 2004

1. []切片方法

  1. # 行选择
  2. print(frame[1:3])
  3.  
  4. # 列选择
  5. print(frame[['year', 'pop']])
  6.  
  7. # 区块选择
  8. print(frame[:3][['state', 'year']])

结果:

  1. pop state year
  2. 1 1.4 Ohio 2001
  3. 2 1.6 Ohio 2002
  4. year pop
  5. 0 2000 1.3
  6. 1 2001 1.4
  7. 2 2002 1.6
  8. 3 2003 4.5
  9. 4 2004 2.7
  10. state year
  11. 0 Ohio 2000
  12. 1 Ohio 2001
  13. 2 Ohio 2002

2.loc(按照索引来进行行列选择)

  1. # 行选择
  2. print(frame.loc[1:3])
  3.  
  4. # 区块选择
  5. print(frame.loc[1:3, ['year', 'pop']])

结果:

  1. pop state year
  2. 1 1.4 Ohio 2001
  3. 2 1.6 Ohio 2002
  4. 3 4.5 Nevada 2003
  5. year pop
  6. 1 2001 1.4
  7. 2 2002 1.6
  8. 3 2003 4.5

注意:loc与[]的不同之处在于会把3也选择进去,而使用[]是不包含的。

  1. In [15]: data_fecha.head()
  2. Out[15]:
  3. rnd_1 rnd_2 rnd_3
  4. fecha
  5. 2012-04-10 8 17 12
  6. 2012-04-11 1 16 3
  7. 2012-04-12 7 6 1
  8. 2012-04-13 2 16 7
  9. 2012-04-14 4 17 7
  10.  
  11. In [16]: # 生成两个特定日期
  12. ...: fecha_1 = dt.datetime(2013, 4, 14)
  13. ...: fecha_2 = dt.datetime(2013, 4, 18)
  14. ...:
  15. ...: # 生成切片数据
  16. ...: data_fecha.loc[fecha_1: fecha_2]
  17. Out[16]:
  18. rnd_1 rnd_2 rnd_3
  19. fecha
  20. 2013-04-14 17 10 5
  21. 2013-04-15 14 4 9
  22. 2013-04-16 1 2 18
  23. 2013-04-17 9 15 1
  24. 2013-04-18 16 7 17

建议:使用loc而尽量少使用[],因为loc在对DataFrame进行重新赋值操作时会避免chained indexing问题,使用[]时编译器很可能会给出SettingWithCopy的警告。

3.iloc

如果说loc是按照索引(index)的值来选取的话,那么iloc就是按照索引的位置来进行选取。iloc不关心索引的具体值是多少,只关心位置是多少,所以使用iloc时方括号中只能使用数值。

  1. # 行选择
  2. print(frame.iloc[1:3])
  3.  
  4. # 列选择
  5. print(frame.iloc[:, [1, 2]])
  6.  
  7. # 区块选择
  8. print(frame.iloc[[1, 3, 4], [0, 2]])

结果:

  1. pop state year
  2. 1 1.4 Ohio 2001
  3. 2 1.6 Ohio 2002
  4. state year
  5. 0 Ohio 2000
  6. 1 Ohio 2001
  7. 2 Ohio 2002
  8. 3 Nevada 2003
  9. 4 Nevada 2004
  10. pop year
  11. 1 1.4 2001
  12. 3 4.5 2003
  13. 4 2.7 2004

4.at

at的使用方法与loc类似,但是比loc有更快的访问数据的速度,而且只能访问单个元素,不能访问多个元素。

  1. import time
  2. start = time.clock()
  3. frame.at[1,'year']
  4. Out[8]: 2001
  5. end = time.clock()
  6. end - start
  7. Out[11]: 30.75638200200791
  8. start = time.clock()
  9. frame.loc[1,'year']
  10. Out[13]: 2001
  11. end = time.clock()
  12. end - start
  13. Out[15]: 29.014473024534

5.iat

iat对于iloc的关系就像at对于loc的关系,是一种更快的基于索引位置的选择方法,同at一样只能访问单个元素。

  1. In [15]:frame.iat[1,2]
  2. Out[16]: 2001

6.ix

以上几种方法都要求查询的秩在索引中,或者位置不超过长度范围,而ix允许你得到不在DataFrame索引中的数据。

  1. In [28]: date_1 = dt.datetime(2013, 1, 10, 8, 30)
  2. ...: date_2 = dt.datetime(2013, 1, 13, 4, 20)
  3. ...:
  4. ...: # 生成切片数据
  5. ...: data_fecha.ix[date_1: date_2]
  6. Out[28]:
  7. rnd_1 rnd_2 rnd_3
  8. fecha
  9. 2013-01-11 19 17 19
  10. 2013-01-12 10 9 17
  11. 2013-01-13 15 3 10

2013年1月10号并没有被选择进去,因为这个时间点被看作为0点0分,比8点30分要早一些。

pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)的更多相关文章

  1. pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)

    pandas DataFrame的增删查改总结系列文章: pandas DaFrame的创建方法 pandas DataFrame的查询方法 pandas DataFrame行或列的删除方法 pand ...

  2. pandas中DataFrame对象to_csv()方法中的encoding参数

    当使用pd.read_csv()方法读取csv格式文件的时候,常常会因为csv文件中带有中文字符而产生字符编码错误,造成读取文件错误,在这个时候,我们可以尝试将pd.read_csv()函数的enco ...

  3. pandas中DataFrame的ix,loc,iloc索引方式的异同

    pandas中DataFrame的ix,loc,iloc索引方式的异同 1.loc: 按照标签索引,范围包括start和end 2.iloc: 在位置上进行索引,不包括end 3.ix: 先在inde ...

  4. Spark与Pandas中DataFrame对比

      Pandas Spark 工作方式 单机single machine tool,没有并行机制parallelism不支持Hadoop,处理大量数据有瓶颈 分布式并行计算框架,内建并行机制paral ...

  5. Spark与Pandas中DataFrame对比(详细)

      Pandas Spark 工作方式 单机single machine tool,没有并行机制parallelism不支持Hadoop,处理大量数据有瓶颈 分布式并行计算框架,内建并行机制paral ...

  6. Pandas中DataFrame修改列名

    Pandas中DataFrame修改列名:使用 rename df = pd.read_csv('I:/Papers/consumer/codeandpaper/TmallData/result01- ...

  7. pandas中DataFrame使用

    切片选择 #显示第一行数据print(df.head(1)) #显示倒数三行数据 print(df.tail(3)) loc  df.loc[row_index,col_index]  注意loc是根 ...

  8. pandas中DataFrame和Series的数据去重

    在SQL语言中去重是一件相当简单的事情,面对一个表(也可以称之为DataFrame)我们对数据进行去重只需要GROUP BY 就好. select custId,applyNo from tmp.on ...

  9. pandas中DataFrame重置设置索引

    在pandas中,经常对数据进行处理 而导致数据索引顺序混乱,从而影响数据读取.插入等. 小笔总结了以下几种重置索引的方法: import pandas as pd import numpy as n ...

随机推荐

  1. ”dpkg: 处理归档 /var/cache/apt/archives/XXXXXX(--unpack)时出错“的解决方法

    在安装ROS时出现了下面的问题: 解决方法: sudo dpkg -i --force-overwrite <filename> 在我的问题中我的解决方法是: sudo dpkg -i - ...

  2. UOJ #450「集训队作业2018」复读机

    UOJ #450 题意 有$ k$台复读机,每时每刻有且只有一台复读机进行复读 求$ n$时刻后每台复读机的复读次数都是$ d$的倍数的方案数 $ 1\leq d \leq 3,k \leq 5·10 ...

  3. docker安装redis

    查询镜像 docker search redis 拉取镜像 docker pull redis 启动容器 docker run --name redis -p 6379:6379 -d --resta ...

  4. 干掉windows无脑设定:“始终使用选择的程序打开这种文件”、“使用Web服务查找正确的程序”

    先看几张图体会一下: 实在很佩服自己就那样默默忍受了很多很多年.其实这些东西在网上小小的一搜,5分钟就能搞定. 然而我们大家都在想,现在没时间,我还要做xxxx事呢,反正多点两下鼠标而已. 是啊,点两 ...

  5. Java基础12-工具类;变长参数;IO

    作业解析 取出整数的16进制表示形式 \u00ff /** * int2hex * */ public static String int2hex(int i) { String str = &quo ...

  6. SQL总结 连表查询

    连接查询包括合并.内连接.外连接和交叉连接,如果涉及多表查询,了解这些连接的特点很重要. 只有真正了解它们之间的区别,才能正确使用. 1.Union UNION 操作符用于合并两个或多个 SELECT ...

  7. PHP Excel使用方法

    下面是总结的几个使用方法 include 'PHPExcel.php'; include 'PHPExcel/Writer/Excel2007.php'; //或者include 'PHPExcel/ ...

  8. php输出语句 echo print printf print_r var_dump sprintf

    php的几种输出方式: echo 常用的输出语句,例如:echo 'helloworld!'; print() 输出语句,有返回值.例如:print('helloworld!'); 输出成功返回1,失 ...

  9. mysql 经纬度求距离

    SELECT id,lng,lat,ROUND(6378.138*2*ASIN(SQRT(POW(SIN((lat1*PI()/180-lat*PI()/180)/2),2)+COS(lat1*PI( ...

  10. 【转】iPython入门技巧

    [转]http://www.cnblogs.com/cuiyubo/p/6823478.html 学习<利用python进行数据分析> 第三章 IPython:一种交互式计算和开发环境的笔 ...