python list tuple str dic series dataframe

拖拖拉拉司機袁發表於2020-09-27


基本用法:新增,刪除,插入,遍歷,查詢,統計

#list
a=[]#空list
a= [1,2,3,4]
#末尾新增
a.append(5)#a=[1,2,3,4,5]或者 a+=[5]
a.append([6])#a=[1,2,3,4,5,[6]]或者 a+=[[6]]
#任意位置新增
a.insert(0,-1)#a=[-1,1,2,3,4,5,[6]]
#末尾刪除
a.pop()#返回[6],a=[-1,1,2,3,4,5]
#任意位置刪除
a.pop(0)#返回-1,a=[1,2,3,4,5]
#遍歷
for i in a:
#查詢
2 in a#返回bool
a.index(2)#返回索引,不存在出錯
#統計
a.count(5)#返回出現的次數

#tuple:是不可變的,要想修改只能通過新建新的拋棄舊的
a=()#空tuple
a= (1,2,3,4)
#末尾新增
a+=5,#(1, 2, 3, 4, 5)或者a=(a,5)
a+=(6,)#(1, 2, 3, 4, 5, 6)
a=(a,(7,))#((1, 2, 3, 4, 5, 6), (7,))
#任意位置新增,通過切片重組
#末尾刪除,切片重組
#任意位置刪除,切片重組
#遍歷
for i in a:
#查詢
2 in a#返回bool
a.index(2)#返回索引,不存在出錯
#統計
a.count(5)#返回出現的次數

#string:是不可變的,要想修改只能通過新建新的拋棄舊的
a=""#空str
a= "abcd"
#末尾新增
a+='e',#'abcde'或者a=a+'e'
#任意位置新增,通過切片重組
#末尾刪除,切片重組
#任意位置刪除,切片重組
#遍歷
for i in a:
#查詢
'e' in a#返回bool
a.index('e')#返回索引,不存在出錯
#統計
a.count('e')#返回出現的次數

#dic:是無序的
a={}#空dic
a = {123:'abc','123':345}
#末尾新增
a['678'] = 678 #存在鍵‘678’,就修改值,不存在就新增
#刪除
a.pop(123)#返回值並刪除該對,不存在保錯
#遍歷
for i in a:#i是鍵
for i in a.keys():#i是鍵
for i in a.values():#i是值
for i,j in a.items():#i是鍵,j是值,items()返回值為元組(123,'abc')
for i in a.items():#i是鍵,值對
#查詢
123 in a#返回bool
'abc' in a.values()#返回bool
(123,'abc') in a.items()#返回bool
#統計無法統計

#series:類似於字典,每個資料對應一個標籤,標籤可以重複
a=pd.Series()#空Series
a=pd.Series(data=[1,2,3,4],index=['a','b','c','d'])#index可以省略,省略之後自動生成range(len(data)),呼叫是a['b'],a[['a','b']],也可以a[0],a[[0,1]],注意index是可以重複的,a['b']返回index = b的所有值
#注意如果index = [10,11,12,13]包含哪怕是一個純數字的話,那麼a[0]將會出錯,a[10]代表第一個數
#為了規範化,一般呼叫的時候使用a.iloc[0]和a.loc['a'],前面是呼叫索引後面是呼叫label
#末尾新增
a.append(pd.Series([7,8],index = ['e','f']))#label重複,都保留
#插入儘量以label呼叫,數字索引的Series上作用不大
#刪除
a.pop('a')#返回值並刪除該對,不存在報錯,有重複的label刪除所有
a.drop(a.index[1])#a.index返回label列表,刪除label標籤中的第二項
#遍歷
for i in a:#i是鍵
for i in a.index:#i是label
for i in a.valuse:#i是值
#查詢
3 in a.values#返回bool
a==3#返回一個和a相同size的Series變數,其數值為True和False組成
a[a==3].tolist()#返回一個list,a==3中所有為True的所有項

#dataframe:二維資料序列
a=a=pd.DataFrame([[1,2,6],[3,4,5]],index=['資料1','資料2'],columns=['x','y','z']) #index是行label,colums是列label,獲取a.index和a.columns
"""
>>> a
     x  y  z
資料1  1  2  6
資料2  3  4  5
"""
#訪問
>>> a.iloc[0,0]#索引訪問
#>>>1
a.loc['資料1','z']#label訪問
#>>>6
#末尾新增
a.loc[:,'u']=[1.1,2.2]#顯然有的話就修改,沒有的話就新增
a.loc['資料3',:]=[3.1,3.2.3.3,3.4]
#插入列
a.insert(0,'v',[1,2,3])#在第0列插入資料列v
#插入行
#切片重組吧,沒找到合適的
#刪除
#按照label刪
a.drop(["資料1"])
a.drop(['x','y'],axis =1)
#按照索引刪除
a.drop(a.index[1])
a.drop(a.columns[1],axis =1)

#遍歷
for i in a: #i列印的是a的columns
for i in range(len(a)):
	a.iloc[i]
for i in a.iterrows():#行,返回顯示航標題,然後是Series,接著第二行標題接著
for i in a.iteritems():#列同上
#查詢
a[a.loc['資料1',:]>3]#選取行名為 資料1中大於3的所有列的所有行,
a[:,a.loc[:,'x']>3]#選取列為 x 中大於3的所有行的所有列

相關文章