第二節
1、Series的屬性與方法:
Series中一般常用的引數就是data、index,其中的data就是我們處理的資料,index就是這個資料的行索引
Series中的函式一般有index、values以及items,values、index、items返回的物件分別是List、Index、
Zip型別的資料,為了方便我們使用和觀察資料,可以使用series.index.tolist()和list(series.items())
方法轉化成List型別。用法如下:
***
from pandas import Series
name=["小明","小花","小東","小李"]
S1=Series(data=name)
print(S1)
print(S1.values)
print(S1.index.tolist()) #這裡的tolist函式就是把index函式生成的物件轉換為列表
print(list(S1.items())) #這裡的list同樣是把zip物件轉換為列表
***
Series中的資料除了可以通過索引進行獲取,還可以通過切片操作進行獲取元素,而且如果一次性獲取多個元素
還可以把這些元素的索引直接放在列表中進行多個元素的獲取
***
from pandas import Series
emp=['001','002','003','004','005','006']
name=['亞瑟', '後裔','小喬','哪吒' ,'虞姬','王昭君']
series = Series(data=name,index=emp)
# 使用索引值獲取單個資料
print(series['001'])
# 使用索引值獲取多個不連續的資料
print('索引下標',series[['002','004']])
# 使用切片獲取連續的資料
print('索引切片',series['001':'004'])
***
除此之外Series物件可以直接使用迴圈遍歷出裡面的值,也可以使用Series.keys()獲取該物件的索引,同時也可以通過
Series物件中的items()函式把裡面的索引和值找出來
2、DataFrame中的資料是按著行和列進行排列的,可以根據行和列進行選擇、遍歷和修改
***
df_dict = {
'name':['ZhangSan','LiSi','WangWu','ZhaoLiu'],
'age':['18','20','19','22'],
'weight':['50','55','60','80']
}
df = pd.DataFrame(data=df_dict,index=['001','002','003','004'])
***
(1)檢視DataFrame中資料的維度:
weidu=df.ndim
(2)獲取DataFrame的行數和列數:
hanglie=df.shape 注:返回值是一個元組,表示的就是行數和列數
(3)獲取行索引和列索引:
print(df.index.tolist())————返回行索引
print(df.columns.tolist())————返回列索引
(4)獲取DataFrame資料中的前面幾行或者是後面幾行可以通過切片或者是函式:
print(df[0:2])———————————————用切片獲取前2行的資料
print(df.head(2))————————————用函式獲取前2行的資料
print(df[索引的長度-2::])————用切片獲取後2行的資料
print(df,tail(2))—————————————用函式獲取後2行的資料
【神仙的自我修養】
# df[]不支援直接輸入標籤索引獲取行資料,例如:df['001']
# 這種方式可以獲取一列資料,列如:df['name']
# 如果想獲取多行裡面的某幾列可寫成:df[行][列],例如:df[1:3][['name','age']],將列索引值放
到同一個列表中,再將列表放到第二個方括號中
(5)獲取資料:
通過標籤索引來獲取資料,即使用loc函式來獲取資料,用法:
df.loc(行,列)
5.1、獲取某一行某一列的資料
print(df.loc['001','name'])
5.2、某一行多列的資料
print(df.loc['001',['name','weight']])
5.3、一行所有列
print(df.loc['001',:])
5.4、選擇間隔的多行多列
print(df.loc[['001','003'],['name','weight']])
5.5、選擇連續的多行和間隔的多列
print(df.loc['001':'003','name':'weight'])
也可以直接通過位置索引來獲取資料,即使用iloc函式獲取資料,用法:
df.iloc(行,列)
5.6、取一行
print(df.iloc[1])
5.7、取連續多行
print(df.iloc[0:2])
5.8、取間斷的多行
print(df.iloc[[0,2],:])
5.9、取某一列
print(df.iloc[:,1])
5.10、某一個值
print(df.iloc[1,0])
注:loc函式和iloc函式在進行切片操作時對於切片終點的取值是不一樣的,loc函式使用即根據標籤索引是包含終點資料的,
而iloc函式即使用位置索引獲取資料是不包含終點資料,和列表的切片類似
(6)按行/列遍歷資料
按行遍歷
iterrows(): 按行遍歷,將DataFrame的每一行轉化為(index, Series)對。index為行索引值,Series為該行對應的資料。
for index,row_data in df.iterrows():
print(index,row_data)
按列遍歷
iteritems():按列遍歷,將DataFrame的每一列轉化為(column, Series)對。column為列索引的值,Series為該列對應的資料。
for col,col_data in df.iteritems():
print(col)