Python實(shí)現(xiàn)數(shù)據(jù)清洗的示例詳解
前言
Python實(shí)際針對(duì)數(shù)據(jù)分析的學(xué)習(xí)是庫(kù),用庫(kù)來(lái)解決一系列的數(shù)據(jù)分析問(wèn)題
去掉信息不全的用戶
描述
現(xiàn)有一個(gè)Nowcoder.csv文件,它記錄了??途W(wǎng)的部分用戶數(shù)據(jù),包含如下字段(字段與字段之間以逗號(hào)間隔):
- Nowcoder_ID:用戶ID
- Level:等級(jí)
- Achievement_value:成就值
- Num_of_exercise:刷題量
- Graduate_year:畢業(yè)年份
- Language:常用語(yǔ)言
- Continuous_check_in_days:最近連續(xù)簽到天數(shù)
- Number_of_submissions:提交代碼次數(shù)
- Last_submission_time:最后一次提交題目日期
運(yùn)營(yíng)同學(xué)正在做用戶調(diào)研,為了保證調(diào)研的可靠性,想要去掉那些信息不全的用戶,即去掉有缺失數(shù)據(jù)的行,請(qǐng)你幫助他去掉后輸出全部數(shù)據(jù)。
輸入描述
數(shù)據(jù)集直接從當(dāng)前目錄下的Nowcoder.csv文件中讀取。
輸出描述:
直接輸出清洗后的全部數(shù)據(jù)。
答案
import pandas as pd Nowcoder = pd.read_csv('Nowcoder.csv', sep=',', dtype=object) pd.set_option('display.width', 300) # 設(shè)置字符顯示寬度 pd.set_option('display.max_rows', None) # 設(shè)置顯示最大行 pd.set_option('display.max_columns', None) print(Nowcoder[Nowcoder.isna() == False])
修補(bǔ)缺失的用戶數(shù)據(jù)
描述
現(xiàn)有一個(gè)Nowcoder.csv文件,它記錄了牛客網(wǎng)的部分用戶數(shù)據(jù),包含如下字段(字段與字段之間以逗號(hào)間隔):
- Nowcoder_ID:用戶ID
- Level:等級(jí)
- Achievement_value:成就值
- Num_of_exercise:刷題量
- Graduate_year:畢業(yè)年份
- Language:常用語(yǔ)言
- Continuous_check_in_days:最近連續(xù)簽到天數(shù)
- Number_of_submissions:提交代碼次數(shù)
- Last_submission_time:最后一次提交題目日期
運(yùn)營(yíng)同學(xué)拿到了這份用戶文件,但是由于系統(tǒng)BUG,出現(xiàn)了部分缺失的值,請(qǐng)你使用當(dāng)前的最大年份填充缺失的畢業(yè)年份(“Graduate_year”),用Python填充缺失的常用語(yǔ)言(“Language”),用成就值的均值(四舍五入保留整數(shù))填充缺失的成就值(“Achievement_value”)。
輸入描述
數(shù)據(jù)集直接從當(dāng)前目錄下的Nowcoder.csv文件中讀取。
輸出描述:
輸出修改后的全部數(shù)據(jù),不用處理輸出時(shí)年份與成就值的小數(shù)點(diǎn)問(wèn)題。
答案
import pandas as pd Nowcoder = pd.read_csv('Nowcoder.csv', sep=',') pd.set_option('display.width', 300) # 設(shè)置字符顯示寬度 pd.set_option('display.max_rows', None) # 設(shè)置顯示最大行 pd.set_option('display.max_columns', None) Nowcoder["Graduate_year"].fillna(Nowcoder["Graduate_year"].max()) Nowcoder["Language"].fillna("Python") Nowcoder["Achievement_value"].fillna(Nowcoder["Achievement_value"].mean().round(0)) print(Nowcoder)
解決??途W(wǎng)用戶重復(fù)的數(shù)據(jù)
描述
現(xiàn)有一個(gè)Nowcoder.csv文件,它記錄了??途W(wǎng)的部分用戶數(shù)據(jù),包含如下字段(字段與字段之間以逗號(hào)間隔):
- Nowcoder_ID:用戶ID
- Level:等級(jí)
- Achievement_value:成就值
- Num_of_exercise:刷題量
- Graduate_year:畢業(yè)年份
- Language:常用語(yǔ)言
- Continuous_check_in_days:最近連續(xù)簽到天數(shù)
- Number_of_submissions:提交代碼次數(shù)
- Last_submission_time:最后一次提交題目日期
牛牛拿到這份文件的時(shí)候一臉懵逼,因?yàn)橄到y(tǒng)錯(cuò)誤將很多相同用戶的數(shù)據(jù)輸出了多條,導(dǎo)致文件中有很多重復(fù)的行,請(qǐng)先檢查每一行是否重復(fù),然后輸出刪除重復(fù)行后的全部數(shù)據(jù)。
輸入描述
數(shù)據(jù)集直接從當(dāng)前目錄下的Nowcoder.csv文件中讀取。
輸出描述
先輸出每一行是否重復(fù),再輸出去重后的文件全部數(shù)據(jù)
答案
import pandas as pd Nowcoder = pd.read_csv('Nowcoder.csv', sep=',', dtype=object) pd.set_option('display.width', 1000) pd.set_option('display.max_rows', None) print(Nowcoder.duplicated()) print(Nowcoder.drop_duplicates(0))
統(tǒng)一最后刷題日期的格式
描述
現(xiàn)有一個(gè)Nowcoder.csv文件,它記錄了牛客網(wǎng)的部分用戶數(shù)據(jù),包含如下字段(字段與字段之間以逗號(hào)間隔):
- Nowcoder_ID:用戶ID
- Level:等級(jí)
- Achievement_value:成就值
- Num_of_exercise:刷題量
- Graduate_year:畢業(yè)年份
- Language:常用語(yǔ)言
- Continuous_check_in_days:最近連續(xù)簽到天數(shù)
- Number_of_submissions:提交代碼次數(shù)
- Last_submission_time:最后一次提交題目日期
運(yùn)營(yíng)同學(xué)發(fā)現(xiàn)最后一次提交題目日期這一列有各種各樣的日期格式,這對(duì)于他分析用戶十分不友好,你能夠幫他輸出用戶ID、等級(jí)以及統(tǒng)一后的日期嗎?(日期格式統(tǒng)一為yyyy-mm-dd)
輸入描述
數(shù)據(jù)集直接從當(dāng)前目錄下的Nowcoder.csv文件中讀取。
輸出描述
輸出用戶ID、等級(jí)與最后提交日期三列,包括行號(hào)。
答案
import pandas as pd Nowcoder = pd.read_csv('Nowcoder.csv',sep=',',dtype=object) Nowcoder['Last_submission_time'] = pd.to_datetime(Nowcoder["Last_submission_time"],format="%Y-%m-%d") print(Nowcoder[['Nowcoder_ID','Level','Last_submission_time']])
將用戶的json文件轉(zhuǎn)換為表格形式
描述
現(xiàn)有一個(gè)Nowcoder.json文件,它記錄了??途W(wǎng)的部分用戶數(shù)據(jù),包含如下字段(字段與字段之間以逗號(hào)間隔):
- Nowcoder_ID:用戶ID
- Level:等級(jí)
- Achievement_value:成就值
- Graduate_year:畢業(yè)年份
- Language:常用語(yǔ)言
如果你讀入了這個(gè)json文件,能將其轉(zhuǎn)換為pandas的DataFrame格式嗎?
輸入描述:
數(shù)據(jù)集直接從當(dāng)前目錄下的Nowcoder.json文件中讀取。
輸出描述:
輸出轉(zhuǎn)換為DataFrame的全部數(shù)據(jù),包括行號(hào)。
答案
import pandas as pd import json pd.set_option('display.width', 300) # 設(shè)置字符顯示寬度 pd.set_option('display.max_rows', None) # 設(shè)置顯示最大行 pd.set_option('display.max_columns', None) with open('Nowcoder.json', 'r') as f: data = json.loads(f.read()) df = pd.DataFrame.from_dict(data) print(df)
以上就是Python實(shí)現(xiàn)數(shù)據(jù)清洗的示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Python數(shù)據(jù)清洗的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 使用Python進(jìn)行數(shù)據(jù)清洗與存儲(chǔ)的基本方法
- 如何使用Python數(shù)據(jù)清洗庫(kù)
- 使用python數(shù)據(jù)清洗代碼實(shí)例
- 用Python進(jìn)行數(shù)據(jù)清洗以及值處理
- Python常用的數(shù)據(jù)清洗方法詳解
- 一文帶你深入了解Python中的數(shù)據(jù)清洗
- 三個(gè)Python常用的數(shù)據(jù)清洗處理方式總結(jié)
- Python數(shù)據(jù)清洗&預(yù)處理入門教程
- python?文件讀寫和數(shù)據(jù)清洗
- python數(shù)據(jù)清洗中的時(shí)間格式化實(shí)現(xiàn)
- Python實(shí)現(xiàn)數(shù)據(jù)清洗的18種方法
相關(guān)文章
Python pandas讀取CSV文件的注意事項(xiàng)(適合新手)
這篇文章主要給大家介紹了關(guān)于Python pandas讀取CSV文件的注意事項(xiàng),非常適合新手,csv是我接觸的比較早的一種文件,比較好的是這種文件既能夠以電子表格的形式查看又能夠以文本的形式查看,需要的朋友可以參考下2021-06-06Flask項(xiàng)目中實(shí)現(xiàn)短信驗(yàn)證碼和郵箱驗(yàn)證碼功能
這篇文章主要介紹了Flask項(xiàng)目中實(shí)現(xiàn)短信驗(yàn)證碼和郵箱驗(yàn)證碼功能,需本文通過(guò)截圖實(shí)例代碼的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2019-12-12對(duì)python使用telnet實(shí)現(xiàn)弱密碼登錄的方法詳解
今天小編就為大家分享一篇對(duì)python使用telnet實(shí)現(xiàn)弱密碼登錄的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Python 如何修改程序默認(rèn)時(shí)區(qū)
這篇文章主要介紹了Python 如何修改程序默認(rèn)時(shí)區(qū),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09PyTorch: Softmax多分類實(shí)戰(zhàn)操作
這篇文章主要介紹了PyTorch: Softmax多分類實(shí)戰(zhàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07菜鳥(niǎo)使用python實(shí)現(xiàn)正則檢測(cè)密碼合法性
本文給大家分享了2則使用Python實(shí)現(xiàn)正則表達(dá)式檢測(cè)密碼合法性的代碼,由于是新手,所以方法比較笨,不過(guò)還是分享給小伙伴,希望對(duì)大家能夠有所幫助。2016-01-01Python中的集合一起來(lái)學(xué)習(xí)一下
這篇文章主要為大家詳細(xì)介紹了Python集合,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03