from numpy import float64 #----------------------------------------------------- #範例16-11:df的修改,取代,與儲存 #https://www.w3schools.com/python/pandas/ref_df_replace.asp #https://pandas.pydata.org/docs/reference/api/pandas.Series.replace.html #(1)檔案:學生成績檔(excel) #有缺值(NaN)檔案 #https://acupun.site/lecture/python/py_example/chp16/score1.xlsx #(2)重點1:2種格式的修改 # df.loc的修改方法:df.loc["peter","chi"]=100 # df[]的修改方法:df['chi'][0]= 100 #注意:這兩個方法讀取檔案的參數不同,df.loc要指定index_col=1 #(3)重點2:改文字的方法 # 改成大寫:df["name"] = df["name"].str.upper() # 改成小寫:df["name"] = df["name"].str.lower() # 取代文字:df['name'] = df['name'].str.replace('john','john2') # 注意:python的字串處理在pandas內不能直接使用,需要先.str轉資料類型 #(4)重點3:改數字的方法 # df["chi"] = df["chi"].replace(99, 98) #(5)重點4:NAN缺值改數字的3種方法 # 把全部欄位的NAN,取代為0分: #(a) 方法1:NAN = np.nan #import numpy as np #範例:df = df.replace(np.nan, 0) #(b) 方法2:fillna()專業取代NAN函數: #範例:df = df.fillna(0) #(c) 方法3:fillna():df.fillna(被取代值, inplace=True) #範例:df.fillna(0, inplace=True) #(6)重點6:儲存的方法,有2種方法: #(A).儲存到虛擬專案區(暫存幾天):df.to_excel("score1b.xlsx") #(B).加入google雲端的目錄(永久保存): # 先在左邊的『檔案』, # 點按『掛接雲端硬碟』,顯示『drive』 # import os # os.chdir("/content/drive/MyDrive/Colab Notebooks") # df.to_excel("score1b.xlsx") #(7)重點7:修改dataFrame的資料格式: df.astype(dtype='int64') #df = df[['chi','eng','math']].astype(dtype='int64') #df = df[['chi','eng','math']].astype(dtype='float64') #------------------------------ #1.練習1:修改資料 #--------------------- #(1)讀取網路檔案:有缺值(NaN)檔案 #import pandas as pd #df = pd.read_excel("https://acupun.site/lecture/python/py_example/chp16/score1.xlsx","mad3a",index_col=1) print() print("1-1.全部的資料=\n") #--------------------- #(2)修改資料:第1位peter的國文分數, 2種方法:(A)df['chi'][0]= 100, (B)df.loc["peter","chi"]=100 print() #df['chi'][0]= 100 #df.loc["peter","chi"]=100 print() print("1-2.修改peter的國文後的資料=\n") #--------------------- #(3)把姓名全部改成大寫:df["name"] = df["name"].str.upper() # 注意:python的字串處理在pandas內不能直接使用,需要先.str轉資料類型 print() #import pandas as pd #df = pd.read_excel("https://acupun.site/lecture/python/py_example/chp16/score1.xlsx","mad3a") print("1-3.把姓名全部改成大寫=\n") #--------------------- #(4)把姓名全部改成小寫:df["name"] = df["name"].str.lower() print() print("1-4.把姓名全部改成小寫=\n") print() #--------------------- #(5)把國文chi的99分,取代為98分:df["chi"] = df["chi"].replace(99, 98) print() #用df.inf()查看欄位屬性:chi欄位是int64。 #print(df.info()) print() print("1-5.把國文chi的99分,取代為98分=\n") #--------------------- #(6)把姓名name的john,取代為john2:df['name'] = df['name'].str.replace('john','john2') print() print("1-6.把姓名name的john,取代為john2=\n") #--------------------- #(7)把全部欄位的99分,取代為98分:df.replace(99, 98) print() print("1-7.把全部欄位的99分,取代為98分=\n") #--------------------- #(8)把全部欄位的NAN,取代為0分:df = df.fillna(0) print() #方法1:NAN = np.nan #import numpy as np #df = df.replace(np.nan, 0) #方法2:fillna()專業取代NAN函數: df = df.fillna(0) #df = df.fillna(0) #方法3:fillna():df.fillna(被取代值, inplace=True):df.fillna(0, inplace=True) #df.fillna(0, inplace=True) print("1-8. 把全部欄位的NAN,取代為0分=\n") print() #--------------------- #(9)把英文eng,全部都再加上10分:2種寫法: (A).df['eng'] += 10, (B).df['eng'] = df['eng'] + 10B. print() #2種寫法 print("1-9.把英文eng,全部都再加上10分=\n") print() #--------------------- #(10)把資料全部改成整數格式:df = df[['chi','eng','math']].astype(dtype='int64') #https://www.w3schools.com/python/pandas/ref_df_astype.asp #https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.astype.html print() print("1-10.把資料全部改成整數格式=\n") print() #--------------------- #(11)把資料全部改成小數點格式:df = df[['chi','eng','math']].astype(dtype='float64') #https://www.w3schools.com/python/pandas/ref_df_astype.asp #https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.astype.html print() print("1-11.把資料全部改成小數點格式=\n") print() #--------------------- #(12)把修改後的df,儲存為score1b.xlsx print() #(A).儲存到虛擬專案區(暫存幾天):df.to_excel("score1b.xlsx") #(A).加入google雲端的目錄(永久保存):df.to_excel("score1b.xlsx") #.先在左邊的『檔案』, #.點按『掛接雲端硬碟』,顯示『drive』 #import os #os.chdir("/content/drive/MyDrive/Colab Notebooks") #查看目錄的檔案名稱:!ls #-------------------------------------------------------------------- #-------------------------------------------------------------------- #範例16-11:df的修改,取代,與儲存 #https://www.w3schools.com/python/pandas/ref_df_replace.asp #https://pandas.pydata.org/docs/reference/api/pandas.Series.replace.html #(1)檔案:學生成績檔(excel) #有缺值(NaN)檔案 #https://acupun.site/lecture/python/py_example/chp16/score1.xlsx #(2)重點1:2種格式的修改 # df.loc的修改方法:df.loc["peter","chi"]=100 # df[]的修改方法:df['chi'][0]= 100 #注意:這兩個方法讀取檔案的參數不同,df.loc要指定index_col=1 #(3)重點2:改文字的方法 # 改成大寫:df["name"] = df["name"].str.upper() # 改成小寫:df["name"] = df["name"].str.lower() # 取代文字:df['name'] = df['name'].str.replace('john','john2') # 注意:python的字串處理在pandas內不能直接使用,需要先.str轉資料類型 #(4)重點3:改數字的方法 # df["chi"] = df["chi"].replace(99, 98) #(5)重點4:NAN缺值改數字的方法 # 把全部欄位的NAN,取代為60分:df.replace(nan, 60) #(6)重點6:儲存的方法,有2種方法: #(A).儲存到虛擬專案區(暫存幾天):df.to_excel("score1b.xlsx") #(B).加入google雲端的目錄(永久保存): # 先在左邊的『檔案』, # 點按『掛接雲端硬碟』,顯示『drive』 # import os # os.chdir("/content/drive/MyDrive/Colab Notebooks") # df.to_excel("score1b.xlsx") #------------------------------ #1.練習1:修改資料 #--------------------- #(1)讀取網路檔案:有缺值(NaN)檔案 import pandas as pd df = pd.read_excel("https://acupun.site/lecture/python/py_example/chp16/score1.xlsx","mad3a",index_col=1) print() print("1-1.全部的資料=\n", df) #--------------------- #(2)修改資料:第1位peter的國文分數, 2種方法:(A)df['chi'][0]= 100, (B)df.loc["peter","chi"]=100 print() #df['chi'][0]= 100 df.loc["peter","chi"]=100 print() print("1-2.修改peter的國文後的資料=\n", df) #--------------------- #(3)把姓名全部改成大寫:df["name"] = df["name"].str.upper() # 注意:python的字串處理在pandas內不能直接使用,需要先.str轉資料類型 print() import pandas as pd df = pd.read_excel("https://acupun.site/lecture/python/py_example/chp16/score1.xlsx","mad3a") df["name"] = df["name"].str.upper() print("1-3.把姓名全部改成大寫=\n", df) print() #--------------------- #(4)把姓名全部改成小寫:df["name"] = df["name"].str.lower() print() df["name"] = df["name"].str.lower() print("1-4.把姓名全部改成小寫=\n", df) print() #--------------------- #(5)把國文chi的99分,取代為98分:df["chi"] = df["chi"].replace(99, 98) print() #用df.inf()查看欄位屬性:chi欄位是int64。 print(df.info()) print() df["chi"] = df["chi"].replace(99, 98) print("1-5.把國文chi的99分,取代為98分=\n", df) #--------------------- #(6)把姓名name的john,取代為john2:df['name'] = df['name'].str.replace('john','john2') df['name'] = df['name'].str.replace('john','john2') print() print("1-6.把姓名name的john,取代為john2=\n", df) #--------------------- #(7)把全部欄位的99分,取代為98分:df.replace(99, 98) print() df = df.replace(99, 98) print("1-7.把全部欄位的99分,取代為98分=\n", df) #--------------------- #(8)把全部欄位的NAN,取代為0分:df = df.fillna(0) print() #方法1:NAN = np.nan #import numpy as np #df = df.replace(np.nan, 0) #方法2:fillna()專業取代NAN函數: df = df.fillna(0) df = df.fillna(0) #方法3:fillna():df.fillna(被取代值, inplace=True):df.fillna(0, inplace=True) df.fillna(0, inplace=True) print("1-8. 把全部欄位的NAN,取代為0分=\n", df) print() #--------------------- #(9)把英文eng,全部都再加上10分: print() #2種寫法 #df['eng'] = df['eng'] + 10 df['eng'] += 10 print("1-9.把英文eng,全部都再加上10分=\n", df) print() #--------------------- #(10)把資料全部改成整數格式: df = df[['chi','eng','math']].astype(dtype='int64') #https://www.w3schools.com/python/pandas/ref_df_astype.asp #https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.astype.html print() df = df[['chi','eng','math']].astype(dtype='int64') print("1-10.把資料全部改成整數格式=\n", df) print() #--------------------- #(11)把資料全部改成小數點格式: df = df[['chi','eng','math']].astype(dtype='float64') #https://www.w3schools.com/python/pandas/ref_df_astype.asp #https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.astype.html print() df = df[['chi','eng','math']].astype(dtype='float64') print("1-11.把資料全部改成小數點格式=\n", df) print() #--------------------- #(12)把修改後的df,儲存為score1b.xlsx print() #(A).儲存到虛擬專案區(暫存幾天) #df.to_excel("score1b.xlsx") #(A).加入google雲端的目錄(永久保存) #A.先在左邊的『檔案』, #B.點按『掛接雲端硬碟』,顯示『drive』 import os os.chdir("/content/drive/MyDrive/Colab Notebooks") #df.to_excel("score1b.xlsx") #查看目錄的檔案名稱 !ls #--------------------------------------------------------------------