數據預處理 | 使用 Pandas 統一同一特征中不同的數據類型


出現的問題:如圖,總消費金額本應該為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 應該有什么方法,更加直接吧

純野生思路,找到更好的辦法再更新~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM