博客專欄

        EEPW首頁 > 博客 > Pandas數據清理

        Pandas數據清理

        發布人:ygtu 時間:2023-09-13 來源:工程師 發布文章
        推薦:使用NSDT場景編輯器快速搭建3D應用場景
        介紹

        如果您喜歡數據科學,那么數據清理對您來說可能聽起來像是一個熟悉的術語。如果沒有,讓我向你解釋一下。我們的數據通常來自多個資源,并不干凈。它可能包含缺失值、重復項、錯誤或不需要的格式等。對這些混亂的數據運行實驗會導致不正確的結果。因此,有必要在將數據饋送到模型之前準備數據。通過識別和解決潛在的錯誤、不準確和不一致來準備數據稱為數據清理

        在本教程中,我將引導您完成使用 Pandas 清理數據的過程。

        數據

        我將使用著名的鳶尾花數據集。鳶尾花數據集包含三種鳶尾花的四個特征的測量值:萼片長度、萼片寬度、花瓣長度和花瓣寬度。我們將使用以下庫:

        • pandas: 用于數據操作和分析的強大庫

        • Scikit-learn: 提供用于數據預處理和機器學習的工具

        數據清理步驟1. 加載數據集

        使用 Pandas 的 read_csv() 函數加載鳶尾花數據集:

        column_names = ['id', 'sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species']
        iris_data = pd.read_csv('data/Iris.csv', names= column_names, header=0)
        iris_data.head()

        輸出:

        編號sepal_lengthsepal_widthpetal_lengthpetal_width物種
        15.13.51.40.2鳶尾花
        24.93.01.40.2鳶尾花
        34.73.21.30.2鳶尾花
        44.63.11.50.2鳶尾花
        55.03.61.40.2鳶尾花

        header=0 參數指示 CSV 文件的第一行包含列名(標題)。

        2. 瀏覽數據集

        為了深入了解我們的數據集,我們將使用 pandas 中的內置函數打印一些基本信息

        print(iris_data.info())
        print(iris_data.describe())

        輸出:

        RangeIndex: 150 entries, 0 to 149
        Data columns (total 6 columns):
         #   Column        Non-Null Count  Dtype  
        ---  ------        --------------  -----  
         0   id            150 non-null    int64  
         1   sepal_length  150 non-null    float64
         2   sepal_width   150 non-null    float64
         3   petal_length  150 non-null    float64
         4   petal_width   150 non-null    float64
         5   species       150 non-null    object 
        dtypes: float64(4), int64(1), object(1)
        memory usage: 7.2+ KB
        None

        熊貓數據清理


        iris_data.describe() 的輸出

        info() 函數可用于了解數據幀的整體結構、每列中非空值的數量以及內存使用情況。而匯總統計數據則提供了數據集中數值要素的概述。

        3. 檢查類分布

        這是了解類如何在分類列中分布的重要步驟,這是分類的重要任務。您可以使用 pandas 中的 value_counts() 函數執行此步驟。

        print(iris_data['species'].value_counts())

        輸出:

        Iris-setosa        50
        Iris-versicolor    50
        Iris-virginica     50
        Name: species, dtype: int64

        我們的結果表明,數據集是平衡的,每個物種的表示數量相等。這為所有 3 個班級的公平評估和比較奠定了基礎。

        4. 刪除缺失值

        由于從 info() 方法中可以明顯看出我們有 5 列沒有缺失值,因此我們將跳過此步驟。但是,如果遇到任何缺失值,請使用以下命令來處理它們:

        iris_data.dropna(inplace=True)
        5. 刪除重復項

        重復項可能會扭曲我們的分析,因此我們會將它們從數據集中刪除。我們將首先使用下面提到的命令檢查它們的存在:

        duplicate_rows = iris_data.duplicated()
        print("Number of duplicate rows:", duplicate_rows.sum())

        輸出:

        Number of duplicate rows: 0

        此數據集沒有任何重復項。盡管如此,可以通過 drop_duplicates() 函數刪除重復項。

        iris_data.drop_duplicates(inplace=True)
        6. 獨熱編碼

        對于分類分析,我們將對物種列執行獨熱編碼。執行此步驟是由于機器學習算法傾向于更好地處理數值數據。獨熱編碼過程將分類變量轉換為二進制(0 或 1)格式。

        encoded_species = pd.get_dummies(iris_data['species'], prefix='species', drop_first=False).astype('int')
        iris_data = pd.concat([iris_data, encoded_species], axis=1)
        iris_data.drop(columns=['species'], inplace=True)

        熊貓數據清理


        圖片來源:作者

        7. 浮點值列的規范化

        歸一化是將數值特征縮放為平均值為 0 且標準差為 1 的過程。執行此過程是為了確保要素對分析的貢獻相同。我們將規范化浮點值列以實現一致的縮放。

        from sklearn.preprocessing import StandardScaler
        
        scaler = StandardScaler()
        cols_to_normalize = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
        scaled_data = scaler.fit(iris_data[cols_to_normalize])
        iris_data[cols_to_normalize] = scaler.transform(iris_data[cols_to_normalize])

        熊貓數據清理


        規范化
        后 iris_data.describe() 的輸出

        8. 保存已清理的數據集

        將清理后的數據集保存到新的 CSV 文件。

        iris_data.to_csv('cleaned_iris.csv', index=False)
        總結

        祝賀!您已成功使用 pandas 清理了第一個數據集。在處理復雜數據集時,您可能會遇到其他挑戰。但是,此處提到的基本技術將幫助您入門并準備數據以進行分析。

        原文鏈接:Pandas數據清理 (mvrlink.com)


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: 數據分析 Pandas

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 阳江市| 谷城县| 兴城市| 仁怀市| 桂阳县| 新源县| 清丰县| 和硕县| 盘山县| 青海省| 辉南县| 枝江市| 宁德市| 牡丹江市| 新津县| 永川市| 遵义市| 汤阴县| 招远市| 马鞍山市| 固镇县| 历史| 宜良县| 固始县| 和林格尔县| 安乡县| 靖宇县| 麻江县| 宁城县| 普格县| 介休市| 凤冈县| 买车| 万安县| 思茅市| 曲麻莱县| 集安市| 遂平县| 云梦县| 武隆县| 阳东县|