python數據處理和數據清洗的示例詳解
1.庫的相關簡介
python里面是通過模塊體現庫的,可以降低程序員的使用成本,提高程序的開發(fā)效率;
標準庫:官方提供的;
第三方庫:其他的大佬做出來的(數量龐大);
2.數據處理之添加新列
import pandas as pd df = pd.read_csv("/Users/feifei/hotpot.csv") # 計算性價比評分,通過賦值,將結果添加為df的"性價比評分"列 df["性價比評分"] = (df["口味評分"]/df["人均消費"])*40 # 計算氛圍評分,通過賦值,將結果添加為df的"氛圍評分"列 df["氛圍評分"] = (df["服務評分"]+df["環(huán)境評分"])/2 # 使用print()輸出df print(df)
什么叫做添加新列,就是我們在數學建模對于數據集合進行處理的時候,對于海量的數據,我們可能會根據這個已知的數據添加新的變量之類的,這個新的變量就是我們通過已知的數據得到的新的數據變量;
在上面這個案例里面,我們通過一個店鋪的口味評分和人均消費凝練出來一個性價比評分作為新的數據變量,根據這個店鋪的服務評分和環(huán)境評分凝練出來這個氛圍的評分作為新的數據變量,最后這兩個新的變量就會作為新的表頭顯示在我們原來的數據表格里面去;
3.處理結果的小數位數的處理
我們想要對于這個處理結果的小數的位數進行控制,我們可以使用一個函數:
因為這個里面是進行的多列索引,這個時候我們使用了這個索引的嵌套,round(2)表示對于所選擇的數據進行保留兩位小數的處理,并且更新原來的數據;
import pandas as pd df = pd.read_csv("/Users/feifei/hotpot.csv") # 計算性價比評分,通過賦值,將結果添加為df的"性價比評分"列 df["性價比評分"] = (df["口味評分"]/df["人均消費"])*40 # 計算氛圍評分,通過賦值,將結果添加為df的"氛圍評分"列 df["氛圍評分"] = (df["服務評分"]+df["環(huán)境評分"])/2 # TODO 使用round()函數對2個新列保留2位小數 df[["性價比評分","氛圍評分"]] = df[["性價比評分","氛圍評分"]].round(2) # 使用print()輸出df print(df)
4.對于某一列的數據進行排序
我們上面綜合得到了這個性價比評分和氛圍評分,我們想要根據這兩個指標進行這個店鋪的排名
sort_values就是一個函數的調用,by=""表示的是對于某一列的內容進行處理,ascending=False表示的就是以降序的形式進行排序,如果我們沒有寫這個參數或者是等于true,都是以升序的形式進行排序;
# 使用sort_values()對df的"性價比評分"列進行降序排序,并賦值給df_1 df_1 = df.sort_values(by="性價比評分",ascending=False) # 使用sort_values()對df的"氛圍評分"列進行降序排序,并賦值給df_2 df_2 = df.sort_values(by="氛圍評分",ascending=False) # 使用print()輸出df_1 print(df_1) # 使用print()輸出df_2 print(df_2)
5.選擇我們想要的數據集合
我們的排序也完成了,接下來的就是只保留這個店鋪的名稱和性價比,并且打印顯示出來前面的10名店鋪作為我們的最佳選擇;
head函數就會篩選出來前面的10個店鋪打印出來,df_atmospyere這個里面存儲的就是我們想要的兩列的數據集合;
# TODO 使用sort_values()對df的列"氛圍評分"進行降序排序,并賦值給df_2 df_2 = df.sort_values(by="氛圍評分",ascending=False) # TODO 使用多列索引的方式,訪問df_2的"店鋪名稱"和"氛圍評分"2列,并賦值給df_atmosphere df_atmosphere = df_2[["店鋪名稱","氛圍評分"]] # TODO 使用print()輸出df_atmosphere的前10行 print(df_atmosphere.head(10))
6.臟數據的介紹
6.1背景介紹
臟數據包括異常值,缺失值和重復值,把臟數據篩選出來,進行修正,填補的工作的過程,就是數據的清洗;
我們想要去處理這些臟的數據,就要首先導入這個pandas模塊,進行文件的讀取,然后進行這個數據集的格式轉換,把這個里面的數據類型,單位進行修改;
下面的這個是一個平臺的會員開通情況數據集合:
上面的這個就是我們要處理的數據大致情況,因為數據量很大,我們只截取出來這個里面的一小部分數據,簡單的說明一下,這個表頭的實際含義,分別是訂單的編號,用戶的id,價格(以分為單位),支付平臺,支付渠道,支付方式,交易時間,支付時間;
6.2時間序列轉換
# 導入pandas模塊,簡稱為pd import pandas as pd # 讀取路徑為"/Users/clean/視頻會員訂單數據源.csv"的文件,賦值給變量df df = pd.read_csv("/Users/clean/視頻會員訂單數據源.csv") # 商品價格price,單位分轉化成元 df['price'] = df['price'] /100 # 使用to_datetime()函數,將訂單創(chuàng)建時間create_time,轉化成時間格式 df['create_time'] = pd.to_datetime(df['create_time']) # TODO 使用to_datetime()函數,將訂單支付時間pay_time,轉化成時間格式 df['pay_time'] = pd.to_datetime(df['pay_time']) # 輸出此時的df print(df)
上面做的工作就是在原來的表格的基礎上面進行這個單位的修改,把原來以分為單位的數據轉換為以元為單位,把這個訂單的兩個時間全部轉換為時間格式:使用to_datatime函數;
7.數據清洗
7.1快速瀏覽數據
我們上面已經完成了準備的工作,就是把這個相關的單位進行修正,和我們的這個時間序列的轉換
下面我們使用這個info函數快速地瀏覽全部數據,確定每一列的數據的缺失情況,這個函數相當于print打印功能,顯示出來存在的數據個數,通過這個打印結果,我們就可以發(fā)現,其他列的數據全部是78049,而這個platform這一列卻是77645,這個時候我們就可以知道那些列缺失了多少的數據,因為大部分的數據都是完整的,只需要找出與眾不同的數字;
7.2找到缺失值
我們上面已經確定這個數據是存在缺失的情況的,但是我們應該如何找到缺失數據的具體的位置呢
我們可以使用insull函數:找到一列里面每一行的數據是否缺失;
8.分類對于缺失的數據進行處理
數據缺失了怎么辦,直接刪除還是補全,針對于這個數據的多少和數據的重要程度,我們需要分情況進行處理;
如果是對于我們的研究很重要的數據,我們刪除顯然是不合適的;
但是如果一個數據集合有幾十萬的數據,我們刪除幾百個也是無傷大雅的:drop函數;
如果缺失值的數量較多,并且缺失值所在的這一列(這一個屬性),并不是我們分析的重點時,可以對缺失值進行補全:fillna函數;
8.1對于缺失值的刪除
我們首先篩選出來這個缺失值所在的行標,存儲到dfPayNull這個series里面;
接下來使用drop函數進行數據的刪除(刪除行),參數就是我們得到的這個dfpaynull的index索引
# 使用布爾索引和isnull函數,將payment_provider這一列的缺失值篩選出,賦值給變量dfPayNull # dfPayNull就是,包含所有payment_provider這一列缺失值的行 dfPayNull = df[df['payment_provider'].isnull()] # TODO 使用drop函數,將dfPayNull,也就是包含所有payment_provider這一列缺失值的行刪除 df.drop(index=dfPayNull.index,inplace=True) # 使用df.info(),快速瀏覽數據集 df.info()
8.2對于缺失值的填充
df['platform']使我們需要填充的列對象,這個對象去調用fillna函數,參數有兩個,第一個就是填充的內容,第二個就是缺失的行標;
# TODO 使用fillna()函數,用"unknown"填充platform的缺失值 df['platform'].fillna("unknown",inplace=True) # 輸出df.info() df.info()
9.分析處理異常值
9.1一般處理
首先是一些比較明顯的異常值:例如這個id肯定不可能是負數,這個時候對于id<0這個判斷條件對于異常值進行刪選。但是更多的是下面的情況:
這個時候我們需要使用一個函數進行處理:isin()函數
9.2特殊情況
我們使用這個函數篩選出來不是某些數據的索引,我們使用這個函數,異常數據返回的是false,這個時候我們使用取反運算符,當這個返回false就是我們認定的異常值;
9.3交易時間的篩選
交易時間必須在提交訂單時間的后面,這個才是正常的,這個可以作為一個判斷條件;
# TODO 使用布爾索引,將支付時間pay_time小于創(chuàng)建時間create_time的異常值篩選出來,賦值給變量dfWrongTime dfWrongTime = df[df['pay_time'] < df['create_time']] # 使用print輸出dfWrongTime print(dfWrongTime)
10.分析處理重復值
pandas的duplicated()
函數專門對重復值進行處理。
duplicated()函數,判斷重復的機制,是會把出現相同值的第二個及以后的數據,判斷為True
這樣,保證每個數據都保留一個唯一值。
# 使用布爾索引、duplicated函數,將order_id這一列的重復值篩選出來,賦值給變量dfOrderDu dfOrderDu = df[df['order_id'].duplicated()]
以上就是python數據處理和數據清洗的示例詳解的詳細內容,更多關于python數據處理和清洗的資料請關注腳本之家其它相關文章!
相關文章
Paddle模型性能分析工具Profiler定位瓶頸點優(yōu)化程序詳解
這篇文章主要為大家介紹了Paddle模型性能分析工具Profiler定位瓶頸點優(yōu)化程序詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03flask 使用 flask_apscheduler 做定時循環(huán)任務的實現
這篇文章主要介紹了flask 使用 flask_apscheduler 做定時循環(huán)任務的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-12-12