出現的問題:如圖,總消費金額本應該為float類型,此處卻顯示object
需求:將 TotalCharges 的類型轉換成float
使用 pandas.to_numeric(arg, errors='raise', downcast=None) 方法,可將參數轉換為數字類型。
(別的類型轉換,遇到再補充)
1 df = pd.read_excel('./data_files/Using_Customer-Churn.xlsx') 2 3 # 將df.TotalCharges 轉成數字類型的數據,則將無效解析設置為NaN 4 df.TotalCharges = pd.to_numeric(df.TotalCharges, errors='coerce') 5 df.isnull().sum()
此時,轉換完成!
關於pandas.to_numeric 方法的詳細信息可參見:https://www.cjavapy.com/article/532/
—————————— 手動分隔,以下為原來的野生思路 —————————
1 首先要找出本特征中,包含的數據類型究竟有哪些
1 # 創建一個用於盛放數據類型的列表 2 test_type = list() 3 4 for i in churn["TotalCharges"]: 5 6 # 將數據類型 不重復的放入列表中 7 if type(i) not in test_type: 8 test_type.append(type(i)) 9 print(test_type) 10 11 """ 12 [<class 'float'>, <class 'int'>, <class 'str'>] 13 """
2 查看除 float 和 int 之外的類型的數據有哪些
# 創建用於盛放數據的列表 str_values= list() for i in churn["TotalCharges"]: if type(i) != float and type(i) != int: # 將既不是 float 也不是 int 的數據加到列表 str_values.append(i) print(str_values) """ [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '] """
此時得到:非數值型數據均為空格。
3 將數據統一為 float 類型
1 # 空值替換所有空格 2 churn['TotalCharges'] = churn["TotalCharges"].replace(" ",np.nan) 3 # 去掉含有空值的樣本 4 churn = churn[churn["TotalCharges"].notnull()] 5 # 將 TotalCharges 轉換成 float類型 6 churn['TotalCharges'] = churn['TotalCharges'].astype(float)
此時
大功告成!
遍歷的方法,相對來說效率略低,Pandas 應該有什么方法,更加直接吧
純野生思路,找到更好的辦法再更新~