新聞中心
Python 數(shù)據(jù)處理(二十四)—— 索引和選擇
如果你想獲取 'A' 列的第 0 和第 2 個元素,你可以這樣做:
成都創(chuàng)新互聯(lián)2013年至今,先為新平等服務建站,新平等地企業(yè),進行企業(yè)商務咨詢服務。為新平企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
這也可以用 .iloc 獲取,通過使用位置索引來選擇內容
可以使用 .get_indexer 獲取多個索引:
警告 :
對于包含一個或多個缺失標簽的列表,使用 .loc 或 [] 將不再重新索引,而是使用 .reindex
在以前的版本中,只要索引列表中存在至少一個有效標簽,就可以使用 .loc[list-of-labels]
但是現(xiàn)在,只要索引列表中存在缺失的標簽將引發(fā) KeyError 。推薦的替代方法是使用 .reindex() 。
例如
索引列表的標簽都存在
先前的版本
但是,現(xiàn)在
索引標簽列表中包含不存在的標簽,使用 reindex
另外,如果你只想選擇有效的鍵,可以使用下面的方法,同時保留了數(shù)據(jù)的 dtype
對于 .reindex() ,如果有重復的索引將會引發(fā)異常
通常,您可以將所需的標簽與當前軸做交集,然后重新索引
但是,如果你的索引結果包含重復標簽,還是會引發(fā)異常
使用 sample() 方法可以從 Series 或 DataFrame 中隨機選擇行或列。
該方法默認會對行進行采樣,并接受一個特定的行數(shù)、列數(shù),或數(shù)據(jù)子集。
默認情況下, sample 每行最多返回一次,但也可以使用 replace 參數(shù)進行替換采樣
默認情況下,每一行被選中的概率相等,但是如果你想讓每一行有不同的概率,你可以為 sample 函數(shù)的 weights 參數(shù)設置抽樣權值
這些權重可以是一個列表、一個 NumPy 數(shù)組或一個 Series ,但它們的長度必須與你要抽樣的對象相同。
缺失的值將被視為權重為零,并且不允許使用 inf 值。如果權重之和不等于 1 ,則將所有權重除以權重之和,將其重新歸一化。例如
當應用于 DataFrame 時,您可以通過簡單地將列名作為字符串傳遞給 weights 作為采樣權重(前提是您要采樣的是行而不是列)。
sample 還允許用戶使用 axis 參數(shù)對列進行抽樣。
最后,我們還可以使用 random_state 參數(shù)為 sample 的隨機數(shù)生成器設置一個種子,它將接受一個整數(shù)(作為種子)或一個 NumPy RandomState 對象
當為該軸設置一個不存在的鍵時, .loc/[] 操作可以執(zhí)行放大
在 Series 的情況下,這實際上是一個追加操作
可以通過 .loc 在任一軸上放大 DataFrame
這就像 DataFrame 的 append 操作
由于用 [] 做索引必須處理很多情況(單標簽訪問、分片、布爾索引等),所以需要一些開銷來搞清楚你的意圖
如果你只想訪問一個標量值,最快的方法是使用 at 和 iat 方法,這兩個方法在所有的數(shù)據(jù)結構上都實現(xiàn)了
與 loc 類似, at 提供了基于標簽的標量查找,而 iat 提供了基于整數(shù)的查找,與 iloc 類似
同時,你也可以根據(jù)這些索引進行設置值
如果索引標簽不存在,會放大數(shù)據(jù)
另一種常見的操作是使用布爾向量來過濾數(shù)據(jù)。運算符包括:
|(or) 、 (and) 、 ~ (not)
這些必須用括號來分組,因為默認情況下, Python 會將 df['A'] 2 df['B'] 3 這樣的表達式評估為 df['A'] (2 df['B']) 3 ,而理想的執(zhí)行順序是 (df['A'] 2) (df['B'] 3)
使用一個布爾向量來索引一個 Series ,其工作原理和 NumPy ndarray 一樣。
您可以使用一個與 DataFrame 的索引長度相同的布爾向量從 DataFrame 中選擇行
列表推導式和 Series 的 map 函數(shù)可用于產生更復雜的標準
我們可以使用布爾向量結合其他索引表達式,在多個軸上索引
iloc 支持兩種布爾索引。如果索引器是一個布爾值 Series ,就會引發(fā)異常。
例如,在下面的例子中, df.iloc[s.values, 1] 是正確的。但是 df.iloc[s,1] 會引發(fā) ValueError 。
python常用函數(shù)
1、complex()
返回一個形如?a+bj?的復數(shù),傳入?yún)?shù)分為三種情況:
參數(shù)為空時,返回0j;參數(shù)為字符串時,將字符串表達式解釋為復數(shù)形式并返回;參數(shù)為兩個整數(shù)(a,b)時,返回?a+bj;參數(shù)只有一個整數(shù) a 時,虛部 b 默認為0,函數(shù)返回?a+0j。
2、dir()
不提供參數(shù)時,返回當前本地范圍內的名稱列表;提供一個參數(shù)時,返回該對象包含的全部屬性。
3、divmod(a,b)
a -- 代表被除數(shù),整數(shù)或浮點數(shù);b -- 代表除數(shù),整數(shù)或浮點數(shù);根據(jù) 除法運算 計算 a,b 之間的商和余數(shù),函數(shù)返回一個元組(p,q)?,p 代表商?a//b?,q 代表余數(shù)?a%b。
4、enumerate(iterable,start=0)
iterable -- 一個可迭代對象,列表、元組序列等;start -- 計數(shù)索引值,默認初始為0‘該函數(shù)返回枚舉對象是個迭代器,利用 next() 方法依次返回元素值,每個元素以元組形式存在,包含一個計數(shù)元素(起始為 start )和 iterable 中對應的元素值。
Python的函數(shù)都有哪些
【常見的內置函數(shù)】
1、enumerate(iterable,start=0)
是python的內置函數(shù),是枚舉、列舉的意思,對于一個可迭代的(iterable)/可遍歷的對象(如列表、字符串),enumerate將其組成一個索引序列,利用它可以同時獲得索引和值。
2、zip(*iterables,strict=False)
用于將可迭代的對象作為參數(shù),將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的列表。如果各個迭代器的元素個數(shù)不一致,則返回列表長度與最短的對象相同,利用*號操作符,可以將元組解壓為列表。
3、filter(function,iterable)
filter是將一個序列進行過濾,返回迭代器的對象,去除不滿足條件的序列。
4、isinstance(object,classinfo)
是用來判斷某一個變量或者是對象是不是屬于某種類型的一個函數(shù),如果參數(shù)object是classinfo的實例,或者object是classinfo類的子類的一個實例,
返回True。如果object不是一個給定類型的的對象, 則返回結果總是False
5、eval(expression[,globals[,locals]])
用來將字符串str當成有效的表達式來求值并返回計算結果,表達式解析參數(shù)expression并作為Python表達式進行求值(從技術上說是一個條件列表),采用globals和locals字典作為全局和局部命名空間。
【常用的句式】
1、format字符串格式化
format把字符串當成一個模板,通過傳入的參數(shù)進行格式化,非常實用且強大。
2、連接字符串
常使用+連接兩個字符串。
3、if...else條件語句
Python條件語句是通過一條或多條語句的執(zhí)行結果(True或者False)來決定執(zhí)行的代碼塊。其中if...else語句用來執(zhí)行需要判斷的情形。
4、for...in、while循環(huán)語句
循環(huán)語句就是遍歷一個序列,循環(huán)去執(zhí)行某個操作,Python中的循環(huán)語句有for和while。
5、import導入其他腳本的功能
有時需要使用另一個python文件中的腳本,這其實很簡單,就像使用import關鍵字導入任何模塊一樣。
python的index函數(shù),獲取最后一個
python的index函數(shù)可以獲取列表中值的第一個索引。
list= [1,2,3,4,5,1,2,2]
list.index(2) 1
如果要獲取相同值的最后一個索引:
len(list) - list[::-1].index(2) - 1
反向取得list后,用list的長度減去反轉后出現(xiàn)的第一個索引再減1
文章標題:python索引函數(shù),python索引值
轉載來源:http://www.dlmjj.cn/article/hdsoch.html