好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > pandas之query方法和sample隨機抽樣操作

pandas之query方法和sample隨機抽樣操作

熱門標簽:賓館能在百度地圖標注嗎 鄭州智能外呼系統中心 南京crm外呼系統排名 汕頭電商外呼系統供應商 北京外呼電銷機器人招商 云南地圖標注 電銷機器人 金倫通信 crm電銷機器人 400電話 申請 條件

query方法

在 pandas 中,支持把字符串形式的查詢表達式傳入 query 方法來查詢數據,其表達式的執行結果必須返回布爾列表。在進行復雜索引時,由于這種檢索方式無需像普通方法一樣重復使用 DataFrame 的名字來引用列名,一般而言會使代碼長度在不降低可讀性的前提下有所減少。

例如

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 表達式中,幫用戶注冊了所有來自 DataFrame 的列名,所有屬于該 Series 的方法都可以被調用,和正常的函數調用并沒有區別,例如查詢體重超過均值的學生:

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

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

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

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

此外,在字符串中出現與列表的比較時, ==和!= 分別表示元素出現在列表和沒有出現在列表,等價于 is in 和 not in,例如查詢所有大三和大四的學生:

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

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

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

隨機抽樣

如果把 DataFrame 的每一行看作一個樣本,或把每一列看作一個特征,再把整個 DataFrame 看作總體,想要對樣本或特征進行隨機抽樣就可以用 sample 函數。有時在拿到大型數據集后,想要對統計特征進行計算來了解數據的大致分布,但是這很費時間。

同時,由于許多統計特征在等概率不放回的簡單隨機抽樣條件下,是總體統計特征的無偏估計,比如樣本均值和總體均值,那么就可以先從整張表中抽出一部分來做近似估計。

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

replace 和 weights 分別是指是否放回和每個樣本的抽樣相對概率,當 replace = True 則表示有放回抽樣。例如,對下面構造的 df_sample 以 value 值的相對大小為抽樣概率進行有放回抽樣,抽樣數量為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

補充:pandas.DataFrame.sample 隨機選取若干行

1、數據切片選取

1.1 pandas.DataFrame.sample 隨機選取若干行

1.1.1 功能說明

有時候我們只需要數據集中的一部分,并不需要全部的數據。這個時候我們就要對數據集進行隨機的抽樣。pandas中自帶有抽樣的方法。

功能相似:numpy.random.choice

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

1.1.2 使用說明

1.函數名及功能

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

2.輸入參數說明

參數名稱 參數說明 舉例說明
n 要抽取的行數

df.sample(n=3,random_state=1)
提取3行數據列表
注意,使用random_state,以確保可重復性的例子。

frac

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

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

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

True:取行數據后,可以重復放回后再取
False:取行數據后不放回,下次取其它行數據
注意:當N>總數據容量,replace設置為值時有效

weights

字符索引或概率數組

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

random_state

int: 隨機數發生器種子
或numpy.random.RandomState

random_state=None,取得數據不重復
random_state=1,可以取得重復數據

axis

選擇抽取數據的行還是列
axis=0:抽取行
axis=1:抽取列

也就是說axis=1時,在列中隨機抽取n列,在axis=0時,在行中隨機抽取n行。

3. 返回值說明

返回選擇的N行元素的DataFrame對象。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • python Pandas如何對數據集隨機抽樣
  • pandas 查詢函數query的用法說明
  • python實現的分層隨機抽樣案例

標簽:梅州 石家莊 懷化 昆明 文山 浙江 錫林郭勒盟 西寧

巨人網絡通訊聲明:本文標題《pandas之query方法和sample隨機抽樣操作》,本文關鍵詞  pandas,之,query,方法,和,sample,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pandas之query方法和sample隨機抽樣操作》相關的同類信息!
  • 本頁收集關于pandas之query方法和sample隨機抽樣操作的相關信息資訊供網民參考!
  • 推薦文章