最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談pandas中Dataframe的查詢方法([], loc, iloc, at, iat, ix)

 更新時(shí)間:2018年04月10日 14:48:12   作者:ForeseeMark  
下面小編就為大家分享一篇淺談pandas中Dataframe的查詢方法([], loc, iloc, at, iat, ix),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

pandas為我們提供了多種切片方法,而要是不太了解這些方法,就會(huì)經(jīng)常容易混淆。下面舉例對(duì)這些切片方法進(jìn)行說(shuō)明。

數(shù)據(jù)介紹

先隨機(jī)生成一組數(shù)據(jù):

In [5]: rnd_1 = [random.randrange(1,20) for x in xrange(1000)]
  ...: rnd_2 = [random.randrange(1,20) for x in xrange(1000)]
  ...: rnd_3 = [random.randrange(1,20) for x in xrange(1000)]
  ...: fecha = pd.date_range('2012-4-10', '2015-1-4')
  ...: 
  ...: data = pd.DataFrame({'fecha':fecha, 'rnd_1': rnd_1, 'rnd_2': rnd_2, 'rnd_3': rnd_3})
In [6]: data.describe()
Out[6]: 
       rnd_1    rnd_2    rnd_3
count 1000.000000 1000.000000 1000.000000
mean   9.946000   9.825000   9.894000
std    5.553911   5.559432   5.423484
min    1.000000   1.000000   1.000000
25%    5.000000   5.000000   5.000000
50%   10.000000  10.000000  10.000000
75%   15.000000  15.000000  14.000000
max   19.000000  19.000000  19.000000

[]切片方法

使用方括號(hào)能夠?qū)ataFrame進(jìn)行切片,有點(diǎn)類似于python的列表切片。按照索引能夠?qū)崿F(xiàn)行選擇或列選擇或區(qū)塊選擇。

# 行選擇
In [7]: data[1:5]
Out[7]: 
    fecha rnd_1 rnd_2 rnd_3
1 2012-04-11   1   16   3
2 2012-04-12   7   6   1
3 2012-04-13   2   16   7
4 2012-04-14   4   17   7
# 列選擇
In [10]: data[['rnd_1', 'rnd_3']]
Out[10]: 
   rnd_1 rnd_3
0    8   12
1    1   3
2    7   1
3    2   7
4    4   7
5    12   8
6    2   12
7    9   8
8    13   17
9    4   7
10   14   14
11   19   16
12    2   12
13   15   18
14   13   18
15   13   11
16   17   7
17   14   10
18    9   6
19   11   15
20   16   13
21   18   9
22    1   18
23    4   3
24    6   11
25    2   13
26    7   17
27   11   8
28    3   12
29    4   2
..   ...  ...
970   8   14
971   19   5
972   13   2
973   8   10
974   8   17
975   6   16
976   3   2
977   12   6
978   12   10
979   15   13
980   8   4
981   17   3
982   1   17
983   11   5
984   7   7
985   13   14
986   6   19
987   13   9
988   3   15
989   19   6
990   7   11
991   11   7
992   19   12
993   2   15
994   10   4
995   14   13
996   12   11
997   11   15
998   17   14
999   3   8
[1000 rows x 2 columns]
# 區(qū)塊選擇
In [11]: data[:7][['rnd_1', 'rnd_2']]
Out[11]: 
  rnd_1 rnd_2
0   8   17
1   1   16
2   7   6
3   2   16
4   4   17
5   12   19
6   2   7

不過(guò)對(duì)于多列選擇,不能像行選擇時(shí)一樣使用1:5這樣的方法來(lái)選擇。

In [12]: data[['rnd_1':'rnd_3']]
 File "<ipython-input-13-6291b6a83eb0>", line 1
  data[['rnd_1':'rnd_3']]
         ^
SyntaxError: invalid syntax

loc

loc可以讓你按照索引來(lái)進(jìn)行行列選擇。

In [13]: data.loc[1:5]
Out[13]: 
    fecha rnd_1 rnd_2 rnd_3
1 2012-04-11   1   16   3
2 2012-04-12   7   6   1
3 2012-04-13   2   16   7
4 2012-04-14   4   17   7
5 2012-04-15   12   19   8

這里需要注意的是,loc與第一種方法不同之處在于會(huì)把第5行也選擇進(jìn)去,而第一種方法只會(huì)選擇到第4行為止。

data.loc[2:4, ['rnd_2', 'fecha']]
Out[14]: 
  rnd_2   fecha
2   6 2012-04-12
3   16 2012-04-13
4   17 2012-04-14

loc能夠選擇在兩個(gè)特定日期之間的數(shù)據(jù),需要注意的是這兩個(gè)日期必須都要在索引中。

In [15]: data_fecha = data.set_index('fecha')
  ...: data_fecha.head()
Out[15]: 
      rnd_1 rnd_2 rnd_3
fecha             
2012-04-10   8   17   12
2012-04-11   1   16   3
2012-04-12   7   6   1
2012-04-13   2   16   7
2012-04-14   4   17   7
In [16]: # 生成兩個(gè)特定日期
  ...: fecha_1 = dt.datetime(2013, 4, 14)
  ...: fecha_2 = dt.datetime(2013, 4, 18)
  ...: 
  ...: # 生成切片數(shù)據(jù)
  ...: data_fecha.loc[fecha_1: fecha_2]
Out[16]: 
      rnd_1 rnd_2 rnd_3
fecha             
2013-04-14   17   10   5
2013-04-15   14   4   9
2013-04-16   1   2   18
2013-04-17   9   15   1
2013-04-18   16   7   17

更新:如果沒有特殊需求,強(qiáng)烈建議使用loc而盡量少使用[],因?yàn)閘oc在對(duì)DataFrame進(jìn)行重新賦值操作時(shí)會(huì)避免chained indexing問題,使用[]時(shí)編譯器很可能會(huì)給出SettingWithCopy的警告。

具體可以參見官方文檔:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

iloc

如果說(shuō)loc是按照索引(index)的值來(lái)選取的話,那么iloc就是按照索引的位置來(lái)進(jìn)行選取。iloc不關(guān)心索引的具體值是多少,只關(guān)心位置是多少,所以使用iloc時(shí)方括號(hào)中只能使用數(shù)值。

# 行選擇
In [17]: data_fecha[10: 15]
Out[17]: 
      rnd_1 rnd_2 rnd_3
fecha             
2012-04-20   14   6   14
2012-04-21   19   14   16
2012-04-22   2   6   12
2012-04-23   15   8   18
2012-04-24   13   8   18
# 列選擇
In [18]: data_fecha.iloc[:,[1,2]].head()
Out[18]: 
      rnd_2 rnd_3
fecha          
2012-04-10   17   12
2012-04-11   16   3
2012-04-12   6   1
2012-04-13   16   7
2012-04-14   17   7
# 切片選擇
In [19]: data_fecha.iloc[[1,12,34],[0,2]]
Out[19]: 
      rnd_1 rnd_3
fecha          
2012-04-11   1   3
2012-04-22   2   12
2012-05-14   17   10

at

at的使用方法與loc類似,但是比loc有更快的訪問數(shù)據(jù)的速度,而且只能訪問單個(gè)元素,不能訪問多個(gè)元素。

In [20]: timeit data_fecha.at[fecha_1,'rnd_1']
The slowest run took 3783.11 times longer than the fastest. This could mean that an intermediate result is being cached.
100000 loops, best of 3: 11.3 µs per loop
In [21]: timeit data_fecha.loc[fecha_1,'rnd_1']
The slowest run took 121.24 times longer than the fastest. This could mean that an intermediate result is being cached.
10000 loops, best of 3: 192 µs per loop
In [22]: data_fecha.at[fecha_1,'rnd_1']
Out[22]: 17

iat

iat對(duì)于iloc的關(guān)系就像at對(duì)于loc的關(guān)系,是一種更快的基于索引位置的選擇方法,同at一樣只能訪問單個(gè)元素。

In [23]: data_fecha.iat[1,0]
Out[23]: 1
In [24]: timeit data_fecha.iat[1,0]
The slowest run took 6.23 times longer than the fastest. This could mean that an intermediate result is being cached.
100000 loops, best of 3: 8.77 µs per loop
In [25]: timeit data_fecha.iloc[1,0]
10000 loops, best of 3: 158 µs per loop

ix

以上說(shuō)過(guò)的幾種方法都要求查詢的秩在索引中,或者位置不超過(guò)長(zhǎng)度范圍,而ix允許你得到不在DataFrame索引中的數(shù)據(jù)。

In [28]: date_1 = dt.datetime(2013, 1, 10, 8, 30)
  ...: date_2 = dt.datetime(2013, 1, 13, 4, 20)
  ...: 
  ...: # 生成切片數(shù)據(jù)
  ...: data_fecha.ix[date_1: date_2]
Out[28]: 
      rnd_1 rnd_2 rnd_3
fecha             
2013-01-11   19   17   19
2013-01-12   10   9   17
2013-01-13   15   3   10

如上面的例子所示,2013年1月10號(hào)并沒有被選擇進(jìn)去,因?yàn)檫@個(gè)時(shí)間點(diǎn)被看作為0點(diǎn)0分,比8點(diǎn)30分要早一些。

以上這篇淺談pandas中Dataframe的查詢方法([], loc, iloc, at, iat, ix)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python異步Web框架sanic的實(shí)現(xiàn)

    python異步Web框架sanic的實(shí)現(xiàn)

    這篇文章主要介紹了python異步Web框架sanic的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Django在pycharm下修改默認(rèn)啟動(dòng)端口的方法

    Django在pycharm下修改默認(rèn)啟動(dòng)端口的方法

    今天小編就為大家分享一篇Django在pycharm下修改默認(rèn)啟動(dòng)端口的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • 使用pip一次性升級(jí)所有Python包的完整指南

    使用pip一次性升級(jí)所有Python包的完整指南

    在Python開發(fā)中,保持所使用的包為最新版本至關(guān)重要,這篇文章主要為大家詳細(xì)介紹了如何使用pip一次性升級(jí)所有Python包,感興趣的小伙伴可以了解下
    2025-07-07
  • python人工智能tensorflow函數(shù)tf.assign使用方法

    python人工智能tensorflow函數(shù)tf.assign使用方法

    這篇文章主要為大家介紹了python人工智能tensorflow函數(shù)tf.assign使用方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • python實(shí)現(xiàn)員工管理系統(tǒng)

    python實(shí)現(xiàn)員工管理系統(tǒng)

    這篇文章主要介紹了python實(shí)現(xiàn)員工管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python內(nèi)置函數(shù)—vars的具體使用方法

    Python內(nèi)置函數(shù)—vars的具體使用方法

    本篇文章主要介紹了Python內(nèi)置函數(shù)—vars的具體使用方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • 終止python代碼運(yùn)行的3種方式詳析

    終止python代碼運(yùn)行的3種方式詳析

    這篇文章主要給大家介紹了關(guān)于終止python代碼運(yùn)行的3種方式,python是解釋運(yùn)行的程序,程序進(jìn)入死循環(huán)或者其它異常都會(huì)導(dǎo)致程序無(wú)法正常結(jié)束,需要的朋友可以參考下
    2023-07-07
  • 教你用 Python 發(fā)送告警通知到微信的操作過(guò)程

    教你用 Python 發(fā)送告警通知到微信的操作過(guò)程

    大家都知道常見的告警方式有:郵件,電話,短信,微信,今天通過(guò)本文給大家介紹下Python 發(fā)送告警通知到微信的操作過(guò)程,感興趣的朋友一起看看吧
    2022-01-01
  • python中函數(shù)總結(jié)之裝飾器閉包詳解

    python中函數(shù)總結(jié)之裝飾器閉包詳解

    下面小編就為大家?guī)?lái)一篇python中函數(shù)總結(jié)之裝飾器閉包詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • 用python爬取豆瓣前一百電影

    用python爬取豆瓣前一百電影

    大家好,本篇文章主要講的是用python爬取豆瓣前一百電影,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01

最新評(píng)論

湛江市| 焉耆| 资讯 | 平安县| 三门峡市| 武清区| 钟山县| 香港 | 西林县| 青浦区| 筠连县| 调兵山市| 资溪县| 纳雍县| 扎鲁特旗| 东台市| 巴彦县| 肇州县| 岱山县| 手机| 德昌县| 莱西市| 福安市| 神农架林区| 个旧市| 惠州市| 利辛县| 湾仔区| 琼海市| 延寿县| 屯昌县| 台湾省| 古交市| 广元市| 辽宁省| 莱州市| 荆门市| 秦安县| 龙海市| 渑池县| 宾阳县|