如下:
創(chuàng)新互聯(lián)建站長期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為靖邊企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計,靖邊網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
1、index函數(shù):用于從列表中找出某個值第一個匹配項的索引位置。
2、index方法語法:list.index(x[,?start[,?end]])。
3、參數(shù):x-- 查找的對象。start-- 可選,查找的起始位置。end-- 可選,查找的結(jié)束位置。
4、返回值:該方法返回查找對象的索引位置,如果沒有找到對象則拋出異常。
5、實例:
代碼:str1?=?"this?is?string?example....wow!!!";str2?=?"exam"。
index函數(shù)為print(str1.index(str2))。
python中index函數(shù)怎么用?
Python中index方法檢測字符串中是否包含子字符串 str ,如果指定 beg(開始) 和 end(結(jié)束) 范圍,則檢查是否包含在指定范圍內(nèi),該方法與 python find方法一樣,只不過如果str不在string中會報一個異常。
index函數(shù)一般用處是在序列中檢索參數(shù)并返回第一次出現(xiàn)的索引,沒找到就會報錯。
如果你想獲取 'A' 列的第 0 和第 2 個元素,你可以這樣做:
這也可以用 .iloc 獲取,通過使用位置索引來選擇內(nèi)容
可以使用 .get_indexer 獲取多個索引:
警告 :
對于包含一個或多個缺失標簽的列表,使用 .loc 或 [] 將不再重新索引,而是使用 .reindex
在以前的版本中,只要索引列表中存在至少一個有效標簽,就可以使用 .loc[list-of-labels]
但是現(xiàn)在,只要索引列表中存在缺失的標簽將引發(fā) KeyError 。推薦的替代方法是使用 .reindex() 。
例如
索引列表的標簽都存在
先前的版本
但是,現(xiàn)在
索引標簽列表中包含不存在的標簽,使用 reindex
另外,如果你只想選擇有效的鍵,可以使用下面的方法,同時保留了數(shù)據(jù)的 dtype
對于 .reindex() ,如果有重復(fù)的索引將會引發(fā)異常
通常,您可以將所需的標簽與當前軸做交集,然后重新索引
但是,如果你的索引結(jié)果包含重復(fù)標簽,還是會引發(fā)異常
使用 sample() 方法可以從 Series 或 DataFrame 中隨機選擇行或列。
該方法默認會對行進行采樣,并接受一個特定的行數(shù)、列數(shù),或數(shù)據(jù)子集。
默認情況下, sample 每行最多返回一次,但也可以使用 replace 參數(shù)進行替換采樣
默認情況下,每一行被選中的概率相等,但是如果你想讓每一行有不同的概率,你可以為 sample 函數(shù)的 weights 參數(shù)設(shè)置抽樣權(quán)值
這些權(quán)重可以是一個列表、一個 NumPy 數(shù)組或一個 Series ,但它們的長度必須與你要抽樣的對象相同。
缺失的值將被視為權(quán)重為零,并且不允許使用 inf 值。如果權(quán)重之和不等于 1 ,則將所有權(quán)重除以權(quán)重之和,將其重新歸一化。例如
當應(yīng)用于 DataFrame 時,您可以通過簡單地將列名作為字符串傳遞給 weights 作為采樣權(quán)重(前提是您要采樣的是行而不是列)。
sample 還允許用戶使用 axis 參數(shù)對列進行抽樣。
最后,我們還可以使用 random_state 參數(shù)為 sample 的隨機數(shù)生成器設(shè)置一個種子,它將接受一個整數(shù)(作為種子)或一個 NumPy RandomState 對象
當為該軸設(shè)置一個不存在的鍵時, .loc/[] 操作可以執(zhí)行放大
在 Series 的情況下,這實際上是一個追加操作
可以通過 .loc 在任一軸上放大 DataFrame
這就像 DataFrame 的 append 操作
由于用 [] 做索引必須處理很多情況(單標簽訪問、分片、布爾索引等),所以需要一些開銷來搞清楚你的意圖
如果你只想訪問一個標量值,最快的方法是使用 at 和 iat 方法,這兩個方法在所有的數(shù)據(jù)結(jié)構(gòu)上都實現(xiàn)了
與 loc 類似, at 提供了基于標簽的標量查找,而 iat 提供了基于整數(shù)的查找,與 iloc 類似
同時,你也可以根據(jù)這些索引進行設(shè)置值
如果索引標簽不存在,會放大數(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 中選擇行
列表推導(dǎo)式和 Series 的 map 函數(shù)可用于產(chǎn)生更復(fù)雜的標準
我們可以使用布爾向量結(jié)合其他索引表達式,在多個軸上索引
iloc 支持兩種布爾索引。如果索引器是一個布爾值 Series ,就會引發(fā)異常。
例如,在下面的例子中, df.iloc[s.values, 1] 是正確的。但是 df.iloc[s,1] 會引發(fā) ValueError 。
19.1安裝Anaconda
Anaconda是Python的一個開源發(fā)行版本,它預(yù)裝了豐富的第三方庫,而且主要面向科學(xué)計算和數(shù)據(jù)分析,使用起來要比原版的Python更省時省力。
Anaconda官方下載網(wǎng)址為:。下載和安裝的方法很簡單,若有問題可以在網(wǎng)上搜索相關(guān)內(nèi)容學(xué)習(xí)解決。
安裝Anaconda之后,就會發(fā)現(xiàn)在Anaconda目錄下同時安裝了Jupyter Notebook、Spyder等工具,我們接下來主要使用Spyder進行開發(fā)。關(guān)于Spyder的使用方法非常簡單,大家也可以去網(wǎng)上搜索學(xué)習(xí)。
雖然Anaconda已經(jīng)預(yù)裝了很多常用的包,但有時我們也需要自己安裝一些包??梢栽陂_始菜單中選擇“Anaconda Anaconda Prompt”命令,在命令行輸入conda install ( 代表包名)即可安裝,也可以輸入pip install 。
19.2數(shù)據(jù)分析包Pandas
Pandas是Python的一個數(shù)據(jù)分析包,Anaconda安裝時已經(jīng)附帶安裝了Pandas包。
Pandas數(shù)據(jù)結(jié)構(gòu)有三種:Series(一維數(shù)組)、DataFrame(二維數(shù)組)和Panel(三維數(shù)組),其中最常用的是前兩種數(shù)據(jù)結(jié)構(gòu)。
19.2.1 Series
Series(序列)用于存儲一行或一列數(shù)據(jù),以及與之相關(guān)的索引的集合。
語法格式如下:
Series([數(shù)據(jù)1,數(shù)據(jù)2,......], index=[索引1,索引2,......])
例:
from pandas import Series
s=Series(['張三','李四','王五'],index=[1,2,3])
print(s)
輸出結(jié)果如下:
1 張三
2 李四
3 王五
dtype: object
上面建立序列時指定了索引,若不指定,則默認的索引值從0開始。如下:
s=Series(['張三','李四','王五'])
輸出結(jié)果為:
0 張三
1 李四
2 王五
dtype: object
索引值也可以為字符串。如下:
from pandas import Series
s=Series(['張三','李四','王五'],index=['A','B','C'])
print(s)
輸出結(jié)果為:
A 張三
B 李四
C 王五
dtype: object
1、訪問序列
(1)可以通過索引訪問序列,如:
from pandas import Series
s=Series(['張三','李四','王五'])
print(s)
print(s[0])
print(s[1:])
運行結(jié)果如下:
0 張三
1 李四
2 王五
dtype: object #print(s)輸出
張三 #print(s[0])輸出
1 李四
2 王五
dtype: object #print(s[1:])輸出
(2)通過值獲取索引值
from pandas import Series
s=Series(['張三','李四','王五'],index=['A','B','C'])
print(s.index[s.values=='李四'])
運行結(jié)果:
Index(['B'], dtype='object')
(3)判斷值是否存在
from pandas import Series
s=Series(['張三','李四','王五'],index=['A','B','C'])
f='李四' in s.values
print(f)
運行結(jié)果:
True
(4)定位獲取
from pandas import Series
s=Series(['張三','李四','王五','孫六'],index=['A','B','C','D'])
print(s[[0,2,1]])
運行結(jié)果:
A 張三
C 王五
B 李四
dtype: object
2、修改序列
(1)追加序列,如:
from pandas import Series
s=Series(['張三','李四','王五'],index=['A','B','C'])
s1=Series(['孫六'],index=['D'])
s=s.append(s1)
print(s)
運行結(jié)果:
A 張三
B 李四
C 王五
D 孫六
dtype: object
(2)修改序列的值
from pandas import Series
s=Series(['張三','李四','王五','孫六'],index=['A','B','C','D'])
s[1]='李飛'
print(s)
運行結(jié)果:
A 張三
B 李飛
C 王五
D 孫六
dtype: object
不知道索引,僅知道要修改的值,也可通過值查找到索引后,再修改序列的值。如:
s[s.index[s.values=='李四']]='李飛'
這樣也可以將“李四”修改為“李飛。
(3)修改索引
from pandas import Series
s=Series(['張三','李四','王五','孫六'],index=['A','B','C','D'])
s.index=[0,1,2,3]
print(s)
運行結(jié)果:
0 張三
1 李四
2 王五
3 孫六
dtype: object
(4)刪除元素
from pandas import Series
s=Series(['張三','李四','王五','孫六'],index=['A','B','C','D'])
s=s.drop('A')
print(s)
運行結(jié)果:
B 李四
C 王五
D 孫六
dtype: object
(5)重新排序
可以按照索引排序,使用sort_index(ascending=True)方法對index進行排序操作。
from pandas import Series
s=Series(['張三','李四','王五','孫六'],index=['A','B','C','D'])
s=s.sort_index(ascending=False) # ascending=False表示按降序排列
print(s)
運行結(jié)果:
D 孫六
C 王五
B 李四
A 張三
dtype: object
(6)重置索引
重置索引可以使用reindex()。如果index列表中的元素多于序列的值,可用fill_value=0這樣的語句填充。
s=s.reindex(['D','C','B','A'])
如果index列表中的元素多于序列的值,可用fill_value=0這樣的語句填充。
s=s.reindex(['D','C','B','A'], fill_value=0)
19.2.2 DataFrame
DataFrame(數(shù)據(jù)框架)用于存儲多行和多列的數(shù)據(jù)集合。它是Series的容器,類似于Excel中二維表格。
定義一個DataFrame的語法格式如下:
df=DataFrame({列名1 : 序列1,列名2 : 序列2,.......列名n : 序列n}, index=序列 )
例如,有如下二維表:
姓名
性別
年齡
張三
男
18
李四
女
19
王五
男
17
保存到DataFrame中可以用如下方法:
from pandas import Series
from pandas import DataFrame
name=Series(['張三','李四','王五'])
sex=Series(['男','女','男'])
age=Series([18,19,17])
df=DataFrame({'姓名':name,'性別':sex,'年齡':age})
print(df)
運行結(jié)果:
姓名 性別 年齡
0 張三 男 18
1 李四 女 19
2 王五 男 17
從上例可以看出,雖然我們省缺了索引,但系統(tǒng)自動添加了從0開始的索引值。
19.3 DataFrame的基本操作
1、訪問方式
(1)獲取行
print(df[1:2]) # 獲取第1行的值
輸出結(jié)果:
姓名 性別 年齡
1 李四 女 19
print(df[1:3]) #獲取第1行到第2行的值
輸出結(jié)果:
姓名 性別 年齡
1 李四 女 19
2 王五 男 17
(2)獲取列
print(df['姓名']) #獲取“姓名”列的值
輸出結(jié)果:
0 張三
1 李四
2 王五
Name: 姓名, dtype: object
另一種方法:
print(df[df.columns[0:1]]) #先按照索引號獲取列名,再按照列名讀取
輸出結(jié)果和上面的方法完全一致。
還有一種情況,是獲取唯一值,即將列內(nèi)的重復(fù)值中多余的刪除,僅留下互不相同的值。所用的到方法是unique()。
sex1=Series(df['性別'].unique())
print(sex1)
輸出結(jié)果:
0 男
1 女
dtype: object
(3)獲取指定位置的值
print(df.at[1,'姓名']) # 格式為變量名.at[行號,列名]
輸出結(jié)果:
李四
(4)獲取塊的值
print(df.iloc[0:2,1:3]) # 格式為變量名.iloc[行號1:行號2, 列號1:列號2]
輸出結(jié)果:
性別 年齡
0 男 18
1 女 19
print(df.iloc[:,1:2]) #獲取“性別”列的值
運行結(jié)果:
性別
0 男
1 女
2 男
2、修改、刪除、增加行和列
(1)修改列名
print(df.columns)
df.columns=['name','sex','age']
print(df.columns)
輸出結(jié)果:
Index(['姓名', '性別', '年齡'], dtype='object')
Index(['name', 'sex', 'age'], dtype='object')
可見,列名已經(jīng)由“姓名、性別、年齡”修改為“age、sex、age”了。但這種修改必須把全部列名都一一列舉,不能有遺漏,否則就會出錯。如:
df.columns=['name','sex']
此時會報錯:ValueError: Length mismatch: Expected axis has 3 elements, new values have 2 elements。
(2)修改行索引
df.index=[1,2,3]
(3)刪除行
df.drop(1,axis=0) # axis=0表示行軸,也可以省略
(4)刪除列
df.drop(‘性別’,axis=1) # axis=0表示列軸
也可以使用另一種方法:
del df['性別']
(5)增加列
df['電話']=['1111111','2222222','3333333']
print(df)
運行結(jié)果:
姓名 性別 年齡 電話
0 張三 男 18 1111111
1 李四 女 19 2222222
2 王五 男 17 3333333
(6)增加行
df.loc[len(df)]=['孫六','男','20']
(7)追加
from pandas import Series
from pandas import DataFrame
name=Series(['張三','李四','王五'])
sex=Series(['男','女','男'])
age=Series([18,19,17])
df=DataFrame({'姓名':name,'性別':sex,'年齡':age}) # 建立DataFrame,變量名為df
name1=Series(['孫六','候七'])
sex1=Series(['男','女'])
age1=Series([19,17])
df1=DataFrame({'姓名':name1,'性別':sex1,'年齡':age1})
# 建立DataFrame,變量名為df1
df=df.append(df1,ignore_index=True)
# 將對df1追加到df后面,參數(shù)ignore_index=True表示重新索引
print(df)
運行結(jié)果:
姓名 性別 年齡
0 張三 男 18
1 李四 女 19
2 王五 男 17
3 孫六 男 19
4 候七 女 17
文章名稱:python重置索引函數(shù),python dataframe重新索引
鏈接分享:http://chinadenli.net/article10/heiodo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、定制開發(fā)、營銷型網(wǎng)站建設(shè)、全網(wǎng)營銷推廣、外貿(mào)網(wǎng)站建設(shè)、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)