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

pandas之query方法和sample隨機(jī)抽樣操作

 更新時(shí)間:2021年03月06日 08:57:24   作者:風(fēng)雪云俠  
這篇文章主要介紹了pandas之query方法和sample隨機(jī)抽樣操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

query方法

在 pandas 中,支持把字符串形式的查詢表達(dá)式傳入 query 方法來(lái)查詢數(shù)據(jù),其表達(dá)式的執(zhí)行結(jié)果必須返回布爾列表。在進(jìn)行復(fù)雜索引時(shí),由于這種檢索方式無(wú)需像普通方法一樣重復(fù)使用 DataFrame 的名字來(lái)引用列名,一般而言會(huì)使代碼長(zhǎng)度在不降低可讀性的前提下有所減少。

例如

In [61]: df.query('((School == "Fudan University")&'
  ....:     ' (Grade == "Senior")&'
  ....:     ' (Weight > 70))|'
  ....:     '((School == "Peking University")&'
  ....:     ' (Grade != "Senior")&'
  ....:     ' (Weight > 80))')
  ....: 
Out[61]: 
        School   Grade      Name Gender Weight Transfer
38  Peking University Freshman    Qiang Han  Male  87.0    N
66  Fudan University  Senior Chengpeng Zhou  Male  81.0    N
99  Peking University Freshman Changpeng Zhao  Male  83.0    N
131  Fudan University  Senior Chengpeng Qian  Male  73.0    Y

在 query 表達(dá)式中,幫用戶注冊(cè)了所有來(lái)自 DataFrame 的列名,所有屬于該 Series 的方法都可以被調(diào)用,和正常的函數(shù)調(diào)用并沒(méi)有區(qū)別,例如查詢體重超過(guò)均值的學(xué)生:

In [62]: df.query('Weight > Weight.mean()').head()
Out[62]: 
              School   Grade      Name Gender Weight Transfer
1        Peking University  Freshman Changqiang You  Male  70.0    N
2  Shanghai Jiao Tong University   Senior     Mei Sun  Male  89.0    N
4        Fudan University Sophomore   Gaojuan You  Male  74.0    N
10 Shanghai Jiao Tong University  Freshman  Xiaopeng Zhou  Male  74.0    N
14      Tsinghua University   Senior  Xiaomei Zhou Female  57.0    N

同時(shí),在 query 中還注冊(cè)了若干英語(yǔ)的字面用法,幫助提高可讀性,例如: or, and, or, is in, not in 。

例如,篩選出男生中不是大一大二的學(xué)生:

In [63]: df.query('(Grade not in ["Freshman", "Sophomore"]) and'
  ....:     '(Gender == "Male")').head()
  ....: 
Out[63]: 
              School  Grade      Name Gender Weight Transfer
2  Shanghai Jiao Tong University Senior    Mei Sun  Male  89.0    N
16      Tsinghua University Junior Xiaoqiang Qin  Male  68.0    N
17      Tsinghua University Junior   Peng Wang  Male  65.0    N
18      Tsinghua University Senior  Xiaofeng Sun  Male  71.0    N
21 Shanghai Jiao Tong University Senior Xiaopeng Shen  Male  62.0   NaN

此外,在字符串中出現(xiàn)與列表的比較時(shí), ==和!= 分別表示元素出現(xiàn)在列表和沒(méi)有出現(xiàn)在列表,等價(jià)于 is in 和 not in,例如查詢所有大三和大四的學(xué)生:

In [64]: df.query('Grade == ["Junior", "Senior"]').head()
Out[64]: 
              School  Grade      Name Gender Weight Transfer
2  Shanghai Jiao Tong University Senior    Mei Sun  Male  89.0    N
7       Tsinghua University Junior Gaoqiang Qian Female  50.0    N
9        Peking University Junior    Juan Xu Female   NaN    N
11      Tsinghua University Junior  Xiaoquan Lv Female  43.0    N
12 Shanghai Jiao Tong University Senior    Peng You Female  48.0   NaN

對(duì)于 query 中的字符串,如果要引用外部變量,只需在變量名前加 @ 符號(hào)。例如,取出體重位于70kg到80kg之間的學(xué)生:

In [65]: low, high =70, 80

In [66]: df.query('Weight.between(@low, @high)').head()
Out[66]: 
              School   Grade      Name Gender Weight Transfer
1        Peking University  Freshman Changqiang You  Male  70.0    N
4        Fudan University Sophomore   Gaojuan You  Male  74.0    N
10 Shanghai Jiao Tong University  Freshman  Xiaopeng Zhou  Male  74.0    N
18      Tsinghua University   Senior  Xiaofeng Sun  Male  71.0    N
35       Peking University  Freshman   Gaoli Zhao  Male  78.0    N

隨機(jī)抽樣

如果把 DataFrame 的每一行看作一個(gè)樣本,或把每一列看作一個(gè)特征,再把整個(gè) DataFrame 看作總體,想要對(duì)樣本或特征進(jìn)行隨機(jī)抽樣就可以用 sample 函數(shù)。有時(shí)在拿到大型數(shù)據(jù)集后,想要對(duì)統(tǒng)計(jì)特征進(jìn)行計(jì)算來(lái)了解數(shù)據(jù)的大致分布,但是這很費(fèi)時(shí)間。

同時(shí),由于許多統(tǒng)計(jì)特征在等概率不放回的簡(jiǎn)單隨機(jī)抽樣條件下,是總體統(tǒng)計(jì)特征的無(wú)偏估計(jì),比如樣本均值和總體均值,那么就可以先從整張表中抽出一部分來(lái)做近似估計(jì)。

sample 函數(shù)中的主要參數(shù)為 n, axis, frac, replace, weights ,前三個(gè)分別是指抽樣數(shù)量、抽樣的方向(0為行、1為列)和抽樣比例(0.3則為從總體中抽出30%的樣本)。

replace 和 weights 分別是指是否放回和每個(gè)樣本的抽樣相對(duì)概率,當(dāng) replace = True 則表示有放回抽樣。例如,對(duì)下面構(gòu)造的 df_sample 以 value 值的相對(duì)大小為抽樣概率進(jìn)行有放回抽樣,抽樣數(shù)量為3。

In [67]: df_sample = pd.DataFrame({'id': list('abcde'),
  ....:              'value': [1, 2, 3, 4, 90]})
  ....:

In [68]: df_sample
Out[68]: 
 id value
0 a   1
1 b   2
2 c   3
3 d   4
4 e   90

In [69]: df_sample.sample(3, replace = True, weights = df_sample.value)
Out[69]: 
 id value
4 e   90
4 e   90
4 e   90

補(bǔ)充:pandas.DataFrame.sample 隨機(jī)選取若干行

1、數(shù)據(jù)切片選取

1.1 pandas.DataFrame.sample 隨機(jī)選取若干行

1.1.1 功能說(shuō)明

有時(shí)候我們只需要數(shù)據(jù)集中的一部分,并不需要全部的數(shù)據(jù)。這個(gè)時(shí)候我們就要對(duì)數(shù)據(jù)集進(jìn)行隨機(jī)的抽樣。pandas中自帶有抽樣的方法。

功能相似:numpy.random.choice

Generates a random sample from a given 1-D numpy array.

1.1.2 使用說(shuō)明

1.函數(shù)名及功能

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

2.輸入?yún)?shù)說(shuō)明

參數(shù)名稱 參數(shù)說(shuō)明 舉例說(shuō)明
n 要抽取的行數(shù)

df.sample(n=3,random_state=1)
提取3行數(shù)據(jù)列表
注意,使用random_state,以確??芍貜?fù)性的例子。

frac

抽取行的比例
例如frac=0.8,就是抽取其中80%。

df.sample(frac=0.8, replace=True, random_state=1)
replace

是否為有放回抽樣,
True:有放回抽樣
False:未放回抽樣

True:取行數(shù)據(jù)后,可以重復(fù)放回后再取
False:取行數(shù)據(jù)后不放回,下次取其它行數(shù)據(jù)
注意:當(dāng)N>總數(shù)據(jù)容量,replace設(shè)置為值時(shí)有效

weights

字符索引或概率數(shù)組

axis=0:為行字符索引或概率數(shù)組
axis=1:為列字符索引或概率數(shù)組

random_state

int: 隨機(jī)數(shù)發(fā)生器種子
或numpy.random.RandomState

random_state=None,取得數(shù)據(jù)不重復(fù)
random_state=1,可以取得重復(fù)數(shù)據(jù)

axis

選擇抽取數(shù)據(jù)的行還是列
axis=0:抽取行
axis=1:抽取列

也就是說(shuō)axis=1時(shí),在列中隨機(jī)抽取n列,在axis=0時(shí),在行中隨機(jī)抽取n行。

3. 返回值說(shuō)明

返回選擇的N行元素的DataFrame對(duì)象。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • python Selenium 庫(kù)的使用技巧

    python Selenium 庫(kù)的使用技巧

    這篇文章主要介紹了python Selenium 庫(kù)的使用技巧,幫助大家更好的理解和學(xué)習(xí)python Selenium 庫(kù),感興趣的朋友可以了解下
    2020-10-10
  • Python編寫(xiě)運(yùn)維進(jìn)程文件目錄操作實(shí)用腳本示例

    Python編寫(xiě)運(yùn)維進(jìn)程文件目錄操作實(shí)用腳本示例

    這篇文章主要為大家介紹了Python編寫(xiě)實(shí)用運(yùn)維進(jìn)程文件目錄的操作腳本示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 在PyTorch中Tensor的查找和篩選例子

    在PyTorch中Tensor的查找和篩選例子

    今天小編就為大家分享一篇在PyTorch中Tensor的查找和篩選例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • Python進(jìn)程池基本概念

    Python進(jìn)程池基本概念

    這篇文章主要介紹了Python進(jìn)程池基本概念,當(dāng)創(chuàng)建的子進(jìn)程數(shù)量不多時(shí),可以直接利用多處理進(jìn)程中的進(jìn)程動(dòng)態(tài)形成需要的進(jìn)程,下文關(guān)于Python線程池的概念做詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-03-03
  • Python實(shí)現(xiàn)日志備份守護(hù)進(jìn)程的示例

    Python實(shí)現(xiàn)日志備份守護(hù)進(jìn)程的示例

    本文主要介紹了Python實(shí)現(xiàn)日志備份守護(hù)進(jìn)程的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • python中opencv實(shí)現(xiàn)圖片文本傾斜校正

    python中opencv實(shí)現(xiàn)圖片文本傾斜校正

    圖片有的時(shí)候需要矯正,本文主要介紹了python中opencv實(shí)現(xiàn)圖片文本傾斜校正,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • python自動(dòng)化測(cè)試三部曲之unittest框架的實(shí)現(xiàn)

    python自動(dòng)化測(cè)試三部曲之unittest框架的實(shí)現(xiàn)

    這篇文章主要介紹了python自動(dòng)化測(cè)試三部曲之unittest框架的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • python定時(shí)任務(wù)apscheduler的詳細(xì)使用教程

    python定時(shí)任務(wù)apscheduler的詳細(xì)使用教程

    APScheduler的全稱是Advanced?Python?Scheduler,它是一個(gè)輕量級(jí)的?Python定時(shí)任務(wù)調(diào)度框架,下面這篇文章主要給大家介紹了關(guān)于python定時(shí)任務(wù)apscheduler的詳細(xì)使用教程,需要的朋友可以參考下
    2022-02-02
  • Playwright中如何保持登錄狀態(tài)

    Playwright中如何保持登錄狀態(tài)

    本文主要介紹了Playwright中如何保持登錄狀態(tài),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Django基礎(chǔ)CBV裝飾器和中間件的應(yīng)用示例

    Django基礎(chǔ)CBV裝飾器和中間件的應(yīng)用示例

    這篇文章主要為大家介紹了Django基礎(chǔ)CBV裝飾器和中間件的應(yīng)用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03

最新評(píng)論

肇州县| 措勤县| 汉中市| 九龙坡区| 明溪县| 城固县| 温州市| 醴陵市| 贺兰县| 开鲁县| 乳山市| 潼关县| 永泰县| 井陉县| 林周县| 江门市| 怀柔区| 洪雅县| 武陟县| 同江市| 绥芬河市| 深州市| 巨鹿县| 松原市| 周口市| 南丹县| 山阴县| 水富县| 怀柔区| 灵石县| 敦煌市| 兰州市| 耿马| 满城县| 丰原市| 五大连池市| 大城县| 佛冈县| 社旗县| 长岭县| 阳西县|