天天看點

Python資料預處理(删除重複值和空值)

pandas幾個函數的使用,大資料的預處理(删除重複值和空值),人工删除很麻煩

Python恰好能夠解決

注釋很詳細在這不一一解釋了

######################################
##### 讀寫excel(xls\xlsx)檔案
import pandas as pd
import numpy as np
df_excel = pd.read_excel('data3.xlsx')
print('資料量行*列',df_excel.shape)
# # df_excel.to_excel('df_excel.xlsx',header=None)#生成檔案儲存,無表頭
print('資料集中存在重複觀測的數量:\n',np.sum(df_excel.duplicated())) #F為不存在,T為存在,用sum顯示重複的數量
print('删除行重複後的資料\n',df_excel.drop_duplicates(subset=None,keep='first',inplace=None))#excel檔案中設定第一和第二行為重複行,結果删除了第二行保留第一行
                            ###df_excel.drop_duplicates(subset=['A','B'],keep='first',inplace=True)
                            #### 代碼中subset對應的值是列名,表示隻考慮這兩列,将這兩列對應值相同的行進行去重。預設值為subset=None表示考慮所有列。
                            #####keep='first'表示保留第一次出現的重複行,是預設值。keep另外兩個取值為"last"和False,分别表示保留最後一次出現的重複行和去除所有重複行。
                            #####inplace=True表示直接在原來的DataFrame上删除重複項,而預設值False表示生成一個副本

print('資料集列中是否存在缺失值:\n',df_excel.isnull().any())              #F為不存在,T為存在
print('每一行的缺失值個數:',df_excel.isnull().sum(axis=1))
print('每一列的缺失值個數:',df_excel.isnull().sum(axis=0))

                    ####### df.isnull().sum(axis=0)每一列的缺失值個數
                    #####df.isnull().any()則會判斷哪些”列”存在缺失值
df=df_excel.dropna()
print(df_excel.dropna(thresh=5))
                                # #axis=0: 删除包含缺失值(NaN)的行
                                # #axis=1: 删除包含缺失值(NaN)的列
                                # # how=‘any’ :要有缺失值(NaN)出現删除
                                # # how=‘all’: 所有的值都缺失(NaN)才删除
                                # 還有一個thresh參數
                                # thresh=n,保留至少有 n 個非 NaN 數的行

######drop用法
print(df_excel.drop(['edu'],axis=1))#按照列删除edu這一列
print(df_excel.drop([0],axis=0))#按照行删除0這一行