#範例16-6:DataFrame第2種取值方法:row列索引鍵取值法 #https://www.runoob.com/pandas/pandas-dataframe.html #https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html #(1)檔案:學生成績檔(excel) #https://acupun.site/lecture/python/py_example/chp16/score2.xlsx #(2)重點1: # pandas有2種資料結構(2維,1維) # (A).df:是2維DataFrame資料 # (B).df[欄位]:是1維Series資料 # df[ [欄位1,欄位2] ]:是多欄位的2維DataFrame資料 #(3)重點2: # 2維DataFrame資料表取值的方法,有2種: # (A).第1種取值方法:columns欄索引鍵取值法:df["欄名稱"] # (B).第2種取值方法:row列索引鍵取值法:df.loc["列名稱"] #(4)重點3: # row列索引鍵取值法,有2種: # (A).第1種row列索引鍵取值:df.loc["列名稱"] # (B).第2種row列索引鍵取值:df.iloc[列編號:列編號:] # 說明: # (A).loc = location,用法類似字典dict,例如:loc['jimmy','simon']。取出2列資料,分別是jimmy列,simon列 # (B).iloc = index location,用法類似串列list,例如:iloc[0:2]。取出3列資料,分別是第0列,第1列,第2列 #(5)重點4: # 若想要使用df.loc["列名稱"], # (A).方法1:讀檔時,必須指定哪個欄位是列的索引欄位(index_col=1) # 範例:df = pd.read_excel("score1.xlsx","mad3a", index_col=1) # (B).方法2:讀檔後:df.set_index('name', inplace=True) # 範例df = pd.read_excel("score1.xlsx","mad3a") # df.set_index('name', inplace=True) #------------------------------ #1.練習1:分析學生成績檔(excel) #--------------------- #(1)讀取網路檔案 #--------------------- #(2)DataFrame是2維資料,series是1維資料:type(df), type(df["math"]), type(df.iloc[0]),type(df.iloc[0:2] print("2. df的資料結構是2維(DataFrame)=:\n") print() print('df["math"]的資料結構是1維(Series)=') print() print('df.iloc[0],1列的資料結構是1維(Series)=') print() print('df.iloc[0:2],3列的資料結構是2維(DataFrame)=') #--------------------- #(3)如何讀取DataFrame裡2維表格的值(1):df.iloc[0]["name"]) print() print("3. 第1位同學的學號=") print("第1位同學的姓名=") print("第1位同學的數學分數=") print("第2位同學的學號=") print("第2位同學的姓名=") print("第2位同學的數學分數=") print() #--------------------- #(4)如何讀取DataFrame裡2維表格的值(2): df.loc['john']['id'] #重點:讀入score2.xlsx資料的時候,必須指定index_col=欄位數(1),以第2個column,作為列row的名稱 #讀入:score2.xlsx(index_col=1,表示以第2個columns作為索引),(第2個columns:peter,mike.....) #import pandas as pd #df = pd.read_excel("score2.xlsx","mad3a", index_col=0) print("4. john的學號(3)=") print("john的數學(3)=") print() #--------------------- #(5)印出DataFrame前2筆資料, df.head(2)), df.iloc[:2]),df[['id','eng','math']][:2]) print() print("5. 印出DataFrame前2筆資料=\n") print() print("印出DataFrame前2筆資料=\n") print() print("印出DataFrame前2筆資料=\n") print() #--------------------- #(6)印出DataFrame最後2筆資料, df.tail(2)),df.iloc[-2:], df[['id','eng','math']][-2:] print() print("6. 印出DataFrame最後2筆資料=\n") print() print("印出DataFrame最後2筆資料=\n") print() print("印出DataFrame最後2筆資料=\n") print() #----------------------------------------------------- #----------------------------------------------------- #範例16-6:DataFrame第2種取值方法:row列索引鍵取值法 #https://www.runoob.com/pandas/pandas-dataframe.html #https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html #(1)檔案:學生成績檔(excel) #https://acupun.site/lecture/python/py_example/chp16/score2.xlsx #(2)重點1: # pandas有2種資料結構(2維,1維) # (A).df:是2維DataFrame資料 # (B).df[欄位]:是1維Series資料 # df[ [欄位1,欄位2] ]:是多欄位的2維DataFrame資料 #(3)重點2: # 2維DataFrame資料表取值的方法,有2種: # (A).第1種取值方法:columns欄索引鍵取值法:df["欄名稱"] # (B).第2種取值方法:row列索引鍵取值法:df.loc["列名稱"] #(4)重點3: # row列索引鍵取值法,有2種: # (A).第1種row列索引鍵取值:df.loc["列名稱"] # (B).第2種row列索引鍵取值:df.iloc[列編號:列編號:] # 說明: # (A).loc = location,用法類似字典dict,例如:loc['jimmy','simon']。取出2列資料,分別是jimmy列,simon列 # (B).iloc = index location,用法類似串列list,例如:iloc[0:2]。取出3列資料,分別是第0列,第1列,第2列 #(5)重點4: # 若想要使用df.loc["列名稱"], # (A).方法1:讀檔時,必須指定哪個欄位是列的索引欄位(index_col=1) # 範例:df = pd.read_excel("score1.xlsx","mad3a", index_col=1) # (B).方法2:讀檔後:df.set_index('name', inplace=True) # 範例df = pd.read_excel("score1.xlsx","mad3a") # df.set_index('name', inplace=True) #------------------------------ #1.練習1:分析學生成績檔(excel) #--------------------- #(1)讀取網路檔案 import pandas as pd df = pd.read_excel("https://acupun.site/lecture/python/py_example/chp16/score2.xlsx","mad3a") #--------------------- #(2)DataFrame是2維資料,series是1維資料:type(df), type(df["math"]), type(df.iloc[0]),type(df.iloc[0:2] print("2. df的資料結構是2維(DataFrame)=:\n",type(df)) print() print('df["math"]的資料結構是1維(Series)=',type(df["math"])) print() print('df.iloc[0],1列的資料結構是1維(Series)=',type(df.iloc[0])) print() print('df.iloc[0:2],3列的資料結構是2維(DataFrame)=',type(df.iloc[0:2])) #--------------------- #(3)如何讀取DataFrame裡2維表格的值(1):df.iloc[0]["name"]) print() print("3. 第1位同學的學號=", df.iloc[0]["id"]) print("第1位同學的姓名=", df.iloc[0]["name"]) print("第1位同學的數學分數=", df.iloc[0]["math"]) print("第2位同學的學號=", df.iloc[1]["id"]) print("第2位同學的姓名=", df.iloc[1]["name"]) print("第2位同學的數學分數=", df.iloc[1]["math"]) print() #--------------------- #(4)如何讀取DataFrame裡2維表格的值(2): df.loc['john']['id'] #重點:讀入score2.xlsx資料的時候,必須指定index_col=欄位數(1),以第2個column,作為列row的名稱 #讀入:score2.xlsx(index_col=1,表示以第2個columns作為索引),(第2個columns:peter,mike.....) import pandas as pd #方法1:讀檔時,index_col=1 df = pd.read_excel("https://acupun.site/lecture/python/py_example/chp16/score2.xlsx","mad3a", index_col=1) #方法2:讀檔後:df.set_index('name', inplace=True) #df = pd.read_excel("https://acupun.site/lecture/python/py_example/chp16/score2.xlsx","mad3a") #df.set_index('name', inplace=True) print("4. john的學號(3)=", df.loc['john']['id']) print("john的數學(3)=", df.loc['john']['math']) print() #--------------------- #(5)印出DataFrame前2筆資料, df.head(2)), df.iloc[:2]),df[['id','eng','math']][:2]) print() print("5. 印出DataFrame前2筆資料=\n", df.head(2)) print() print("印出DataFrame前2筆資料=\n", df.iloc[:2]) print() print("印出DataFrame前2筆資料=\n", df[['id','eng','math']][:2]) print() #--------------------- #(6)印出DataFrame最後2筆資料, df.tail(2)),df.iloc[-2:], df[['id','eng','math']][-2:] print() print("6. 印出DataFrame最後2筆資料=\n", df.tail(2)) print() print("印出DataFrame最後2筆資料=\n", df.iloc[-2:]) print() print("印出DataFrame最後2筆資料=\n", df[['id','eng','math']][-2:]) print() #-----------------------------------------------------