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

Pandas 數(shù)據(jù)框增、刪、改、查、去重、抽樣基本操作方法

 更新時(shí)間:2018年04月12日 10:36:47   作者:Claroja  
下面小編就為大家分享一篇Pandas 數(shù)據(jù)框增、刪、改、查、去重、抽樣基本操作方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

總括

pandas的索引函數(shù)主要有三種:

loc 標(biāo)簽索引,行和列的名稱(chēng)

iloc 整型索引(絕對(duì)位置索引),絕對(duì)意義上的幾行幾列,起始索引為0

ix 是 iloc 和 loc的合體

at是loc的快捷方式

iat是iloc的快捷方式

建立測(cè)試數(shù)據(jù)集:

import pandas as pd
df = pd.DataFrame({'a': [1, 2, 3], 'b': ['a', 'b', 'c'],'c': ["A","B","C"]})
print(df)
 a b c
0 1 a A
1 2 b B
2 3 c C

行操作

選擇某一行

print(df.loc[1,:])
a 2
b b
c B
Name: 1, dtype: object

選擇多行

print(df.loc[1:2,:])#選擇1:2行,slice為1
 a b c
1 2 b B
2 3 c C
print(df.loc[::-1,:])#選擇所有行,slice為-1,所以為倒序
 a b c
2 3 c C
1 2 b B
0 1 a A
print(df.loc[0:2:2,:])#選擇0至2行,slice為2,等同于print(df.loc[0:2:2,:])因?yàn)橹挥?行
 a b c
0 1 a A
2 3 c C

條件篩選

普通條件篩選

print(df.loc[:,"a"]>2)#原理是首先做了一個(gè)判斷,然后再篩選
0 False
1 False
2  True
Name: a, dtype: bool
print(df.loc[df.loc[:,"a"]>2,:])
 a b c
2 3 c C

另外條件篩選還可以集邏輯運(yùn)算符 | for or, & for and, and ~for not

In [129]: s = pd.Series(range(-3, 4))
In [132]: s[(s < -1) | (s > 0.5)]
Out[132]: 
0 -3
1 -2
4 1
5 2
6 3
dtype: int64

isin

非索引列使用isin

In [141]: s = pd.Series(np.arange(5), index=np.arange(5)[::-1], dtype='int64')
In [143]: s.isin([2, 4, 6])
Out[143]: 
4 False
3 False
2  True
1 False
0  True
dtype: bool
In [144]: s[s.isin([2, 4, 6])]
Out[144]: 
2 2
0 4
dtype: int64

索引列使用isin

In [145]: s[s.index.isin([2, 4, 6])]
Out[145]: 
4 0
2 2
dtype: int64
# compare it to the following
In [146]: s[[2, 4, 6]]
Out[146]: 
2 2.0
4 0.0
6 NaN
dtype: float64

結(jié)合any()/all()在多列索引時(shí)

In [151]: df = pd.DataFrame({'vals': [1, 2, 3, 4], 'ids': ['a', 'b', 'f', 'n'],
 .....:     'ids2': ['a', 'n', 'c', 'n']})
 .....: 
In [156]: values = {'ids': ['a', 'b'], 'ids2': ['a', 'c'], 'vals': [1, 3]}
In [157]: row_mask = df.isin(values).all(1)
In [158]: df[row_mask]
Out[158]: 
 ids ids2 vals
0 a a  1

where()

In [1]: dates = pd.date_range('1/1/2000', periods=8)
In [2]: df = pd.DataFrame(np.random.randn(8, 4), index=dates, columns=['A', 'B', 'C', 'D'])
In [3]: df
Out[3]: 
     A   B   C   D
2000-01-01 0.469112 -0.282863 -1.509059 -1.135632
2000-01-02 1.212112 -0.173215 0.119209 -1.044236
2000-01-03 -0.861849 -2.104569 -0.494929 1.071804
2000-01-04 0.721555 -0.706771 -1.039575 0.271860
2000-01-05 -0.424972 0.567020 0.276232 -1.087401
2000-01-06 -0.673690 0.113648 -1.478427 0.524988
2000-01-07 0.404705 0.577046 -1.715002 -1.039268
2000-01-08 -0.370647 -1.157892 -1.344312 0.844885
In [162]: df.where(df < 0, -df)
Out[162]: 
     A   B   C   D
2000-01-01 -2.104139 -1.309525 -0.485855 -0.245166
2000-01-02 -0.352480 -0.390389 -1.192319 -1.655824
2000-01-03 -0.864883 -0.299674 -0.227870 -0.281059
2000-01-04 -0.846958 -1.222082 -0.600705 -1.233203
2000-01-05 -0.669692 -0.605656 -1.169184 -0.342416
2000-01-06 -0.868584 -0.948458 -2.297780 -0.684718
2000-01-07 -2.670153 -0.114722 -0.168904 -0.048048
2000-01-08 -0.801196 -1.392071 -0.048788 -0.808838

DataFrame.where() differs from numpy.where()的區(qū)別

In [172]: df.where(df < 0, -df) == np.where(df < 0, df, -df)

當(dāng)series對(duì)象使用where()時(shí),則返回一個(gè)序列

In [141]: s = pd.Series(np.arange(5), index=np.arange(5)[::-1], dtype='int64')
In [159]: s[s > 0]
Out[159]: 
3 1
2 2
1 3
0 4
dtype: int64
In [160]: s.where(s > 0)
Out[160]: 
4 NaN
3 1.0
2 2.0
1 3.0
0 4.0
dtype: float64

抽樣篩選

DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)

當(dāng)在有權(quán)重篩選時(shí),未賦值的列權(quán)重為0,如果權(quán)重和不為1,則將會(huì)將每個(gè)權(quán)重除以總和。random_state可以設(shè)置抽樣的種子(seed)。axis可是設(shè)置列隨機(jī)抽樣。

In [105]: df2 = pd.DataFrame({'col1':[9,8,7,6], 'weight_column':[0.5, 0.4, 0.1, 0]})
In [106]: df2.sample(n = 3, weights = 'weight_column')
Out[106]: 
 col1 weight_column
1  8   0.4
0  9   0.5
2  7   0.1

增加行

df.loc[3,:]=4
  a b c
0 1.0 a A
1 2.0 b B
2 3.0 c C
3 4.0 4 4

插入行

pandas里并沒(méi)有直接指定索引的插入行的方法,所以要自己設(shè)置

line = pd.DataFrame({df.columns[0]:"--",df.columns[1]:"--",df.columns[2]:"--"},index=[1])
df = pd.concat([df.loc[:0],line,df.loc[1:]]).reset_index(drop=True)#df.loc[:0]這里不能寫(xiě)成df.loc[0],因?yàn)閐f.loc[0]返回的是series
  a b c
0 1.0 a A
1 -- -- --
2 2.0 b B
3 3.0 c C
4 4.0 4 4

交換行

df.loc[[1,2],:]=df.loc[[2,1],:].values
 a b c
0 1 a A
1 3 c C
2 2 b B

刪除行

df.drop(0,axis=0,inplace=True)
print(df)
 a b c
1 2 b B
2 3 c C

注意

在以時(shí)間作為索引的數(shù)據(jù)框中,索引是以整形的方式來(lái)的。

In [39]: dfl = pd.DataFrame(np.random.randn(5,4), columns=list('ABCD'), index=pd.date_range('20130101',periods=5))
In [40]: dfl
Out[40]: 
     A   B   C   D
2013-01-01 1.075770 -0.109050 1.643563 -1.469388
2013-01-02 0.357021 -0.674600 -1.776904 -0.968914
2013-01-03 -1.294524 0.413738 0.276662 -0.472035
2013-01-04 -0.013960 -0.362543 -0.006154 -0.923061
2013-01-05 0.895717 0.805244 -1.206412 2.565646
In [41]: dfl.loc['20130102':'20130104']
Out[41]: 
     A   B   C   D
2013-01-02 0.357021 -0.674600 -1.776904 -0.968914
2013-01-03 -1.294524 0.413738 0.276662 -0.472035
2013-01-04 -0.013960 -0.362543 -0.006154 -0.923061

列操作

選擇某一列

print(df.loc[:,"a"])
0 1
1 2
2 3
Name: a, dtype: int64

選擇多列

print(df.loc[:,"a":"b"])
 a b
0 1 a
1 2 b
2 3 c

增加列,如果對(duì)已有的列,則是賦值

df.loc[:,"d"]=4
 a b c d
0 1 a A 4
1 2 b B 4
2 3 c C 4

交換兩列的值

df.loc[:,['b', 'a']] = df.loc[:,['a', 'b']].values
print(df)
 a b c
0 a 1 A
1 b 2 B
2 c 3 C

刪除列

1)直接del DF[‘column-name']

2)采用drop方法,有下面三種等價(jià)的表達(dá)式:

DF= DF.drop(‘column_name', 1);

DF.drop(‘column_name',axis=1, inplace=True)

DF.drop([DF.columns[[0,1,]]], axis=1,inplace=True)

df.drop("a",axis=1,inplace=True)
print(df)
 b c
0 a A
1 b B
2 c C

還有一些其他的功能:

切片df.loc[::,::]

選擇隨機(jī)抽樣df.sample()

去重.duplicated()

查詢(xún).lookup

以上這篇Pandas 數(shù)據(jù)框增、刪、改、查、去重、抽樣基本操作方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python多進(jìn)程模式實(shí)現(xiàn)多核CPU并行計(jì)算

    Python多進(jìn)程模式實(shí)現(xiàn)多核CPU并行計(jì)算

    隨著計(jì)算機(jī)硬件的不斷發(fā)展,多核CPU已經(jīng)成為普及的硬件設(shè)備,在本文中,我們將重點(diǎn)介紹在Python中如何利用多進(jìn)程模式提高程序的執(zhí)行效率,感興趣的可以了解一下
    2023-05-05
  • 聊聊Python中的@符號(hào)是什么意思

    聊聊Python中的@符號(hào)是什么意思

    @符號(hào)用做函數(shù)的修飾符,可以在模塊或者類(lèi)的定義層內(nèi)對(duì)函數(shù)進(jìn)行修飾,下面這篇文章主要給大家介紹了關(guān)于Python中@符號(hào)是什么意思的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • python中判斷集合范圍的方法小結(jié)

    python中判斷集合范圍的方法小結(jié)

    這篇文章主要介紹了python中判斷集合范圍的方法小結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Python輕量級(jí)搜索工具Whoosh的使用教程

    Python輕量級(jí)搜索工具Whoosh的使用教程

    本文將為大家簡(jiǎn)單介紹一下Python中的一個(gè)輕量級(jí)搜索工具Whoosh,并給出相應(yīng)的使用示例代碼,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-07-07
  • 詳解Python中的四種隊(duì)列

    詳解Python中的四種隊(duì)列

    隊(duì)列是一種只允許在一端進(jìn)行插入操作,而在另一端進(jìn)行刪除操作的線(xiàn)性表。這篇文章主要介紹了Python中的四種隊(duì)列,需要的朋友可以參考下
    2018-05-05
  • Django壓縮靜態(tài)文件的實(shí)現(xiàn)方法詳析

    Django壓縮靜態(tài)文件的實(shí)現(xiàn)方法詳析

    最近在學(xué)習(xí)Django配置靜態(tài)文件,下面這篇文章主要給大家介紹了關(guān)于Django壓縮靜態(tài)文件的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 基于Python實(shí)現(xiàn)的微信好友數(shù)據(jù)分析

    基于Python實(shí)現(xiàn)的微信好友數(shù)據(jù)分析

    這篇文章主要介紹了基于Python實(shí)現(xiàn)的微信好友數(shù)據(jù)分析的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • django在保存圖像的同時(shí)壓縮圖像示例代碼詳解

    django在保存圖像的同時(shí)壓縮圖像示例代碼詳解

    這篇文章主要介紹了django在保存圖像的同時(shí)壓縮圖像,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python基于回溯法子集樹(shù)模板解決m著色問(wèn)題示例

    Python基于回溯法子集樹(shù)模板解決m著色問(wèn)題示例

    這篇文章主要介紹了Python基于回溯法子集樹(shù)模板解決m著色問(wèn)題,簡(jiǎn)單描述了m著色問(wèn)題并結(jié)合實(shí)例形式分析了Python使用回溯法子集樹(shù)模板解決m著色問(wèn)題的具體步驟與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2017-09-09
  • python matplotlib庫(kù)的基本使用

    python matplotlib庫(kù)的基本使用

    這篇文章主要介紹了python matplotlib庫(kù)的基本使用,幫助大家繪制圖表,進(jìn)行數(shù)據(jù)可視化分析,感興趣的朋友可以了解下
    2020-09-09

最新評(píng)論

潞西市| 望奎县| 大英县| 松桃| 罗平县| 花莲市| 湖口县| 舒兰市| 江油市| 马尔康县| 灵川县| 涟源市| 潜山县| 正阳县| 沙田区| 满城县| 浠水县| 乌审旗| 全南县| 江口县| 会泽县| 大港区| 乐至县| 阿图什市| 鸡东县| 垫江县| 海伦市| 松阳县| 麦盖提县| 连江县| 镇坪县| 瓦房店市| 六枝特区| 临江市| 阿巴嘎旗| 嘉峪关市| 宿州市| 象州县| 青冈县| 大港区| 蚌埠市|