溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么使用Python實現(xiàn)數(shù)據(jù)清洗

發(fā)布時間:2022-08-09 11:53:33 來源:億速云 閱讀:181 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“怎么使用Python實現(xiàn)數(shù)據(jù)清洗”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么使用Python實現(xiàn)數(shù)據(jù)清洗”吧!

去掉信息不全的用戶

描述

現(xiàn)有一個Nowcoder.csv文件,它記錄了??途W(wǎng)的部分用戶數(shù)據(jù),包含如下字段(字段與字段之間以逗號間隔):

  • Nowcoder_ID:用戶ID

  • Level:等級

  • Achievement_value:成就值

  • Num_of_exercise:刷題量

  • Graduate_year:畢業(yè)年份

  • Language:常用語言

  • Continuous_check_in_days:最近連續(xù)簽到天數(shù)

  • Number_of_submissions:提交代碼次數(shù)

  • Last_submission_time:最后一次提交題目日期

運(yùn)營同學(xué)正在做用戶調(diào)研,為了保證調(diào)研的可靠性,想要去掉那些信息不全的用戶,即去掉有缺失數(shù)據(jù)的行,請你幫助他去掉后輸出全部數(shù)據(jù)。

輸入描述

數(shù)據(jù)集直接從當(dāng)前目錄下的Nowcoder.csv文件中讀取。

怎么使用Python實現(xiàn)數(shù)據(jù)清洗

輸出描述:

直接輸出清洗后的全部數(shù)據(jù)。

怎么使用Python實現(xiàn)數(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])

怎么使用Python實現(xiàn)數(shù)據(jù)清洗

修補(bǔ)缺失的用戶數(shù)據(jù)

描述

現(xiàn)有一個Nowcoder.csv文件,它記錄了??途W(wǎng)的部分用戶數(shù)據(jù),包含如下字段(字段與字段之間以逗號間隔):

  • Nowcoder_ID:用戶ID

  • Level:等級

  • Achievement_value:成就值

  • Num_of_exercise:刷題量

  • Graduate_year:畢業(yè)年份

  • Language:常用語言

  • Continuous_check_in_days:最近連續(xù)簽到天數(shù)

  • Number_of_submissions:提交代碼次數(shù)

  • Last_submission_time:最后一次提交題目日期

運(yùn)營同學(xué)拿到了這份用戶文件,但是由于系統(tǒng)BUG,出現(xiàn)了部分缺失的值,請你使用當(dāng)前的最大年份填充缺失的畢業(yè)年份(“Graduate_year”),用Python填充缺失的常用語言(“Language”),用成就值的均值(四舍五入保留整數(shù))填充缺失的成就值(“Achievement_value”)。

輸入描述

數(shù)據(jù)集直接從當(dāng)前目錄下的Nowcoder.csv文件中讀取。

怎么使用Python實現(xiàn)數(shù)據(jù)清洗

輸出描述:

輸出修改后的全部數(shù)據(jù),不用處理輸出時年份與成就值的小數(shù)點問題。

怎么使用Python實現(xiàn)數(shù)據(jù)清洗

答案

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)

怎么使用Python實現(xiàn)數(shù)據(jù)清洗

解決??途W(wǎng)用戶重復(fù)的數(shù)據(jù)

描述

現(xiàn)有一個Nowcoder.csv文件,它記錄了??途W(wǎng)的部分用戶數(shù)據(jù),包含如下字段(字段與字段之間以逗號間隔):

  • Nowcoder_ID:用戶ID

  • Level:等級

  • Achievement_value:成就值

  • Num_of_exercise:刷題量

  • Graduate_year:畢業(yè)年份

  • Language:常用語言

  • Continuous_check_in_days:最近連續(xù)簽到天數(shù)

  • Number_of_submissions:提交代碼次數(shù)

  • Last_submission_time:最后一次提交題目日期

牛牛拿到這份文件的時候一臉懵逼,因為系統(tǒng)錯誤將很多相同用戶的數(shù)據(jù)輸出了多條,導(dǎo)致文件中有很多重復(fù)的行,請先檢查每一行是否重復(fù),然后輸出刪除重復(fù)行后的全部數(shù)據(jù)。

輸入描述

數(shù)據(jù)集直接從當(dāng)前目錄下的Nowcoder.csv文件中讀取。

怎么使用Python實現(xiàn)數(shù)據(jù)清洗

輸出描述

先輸出每一行是否重復(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))

怎么使用Python實現(xiàn)數(shù)據(jù)清洗

統(tǒng)一最后刷題日期的格式

描述

現(xiàn)有一個Nowcoder.csv文件,它記錄了??途W(wǎng)的部分用戶數(shù)據(jù),包含如下字段(字段與字段之間以逗號間隔):

  • Nowcoder_ID:用戶ID

  • Level:等級

  • Achievement_value:成就值

  • Num_of_exercise:刷題量

  • Graduate_year:畢業(yè)年份

  • Language:常用語言

  • Continuous_check_in_days:最近連續(xù)簽到天數(shù)

  • Number_of_submissions:提交代碼次數(shù)

  • Last_submission_time:最后一次提交題目日期

運(yùn)營同學(xué)發(fā)現(xiàn)最后一次提交題目日期這一列有各種各樣的日期格式,這對于他分析用戶十分不友好,你能夠幫他輸出用戶ID、等級以及統(tǒng)一后的日期嗎?(日期格式統(tǒng)一為yyyy-mm-dd)

輸入描述

數(shù)據(jù)集直接從當(dāng)前目錄下的Nowcoder.csv文件中讀取。

怎么使用Python實現(xiàn)數(shù)據(jù)清洗

輸出描述

輸出用戶ID、等級與最后提交日期三列,包括行號。

怎么使用Python實現(xiàn)數(shù)據(jù)清洗

答案

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']])

怎么使用Python實現(xiàn)數(shù)據(jù)清洗

將用戶的json文件轉(zhuǎn)換為表格形式

描述

現(xiàn)有一個Nowcoder.json文件,它記錄了??途W(wǎng)的部分用戶數(shù)據(jù),包含如下字段(字段與字段之間以逗號間隔):

  • Nowcoder_ID:用戶ID

  • Level:等級

  • Achievement_value:成就值

  • Graduate_year:畢業(yè)年份

  • Language:常用語言

如果你讀入了這個json文件,能將其轉(zhuǎn)換為pandas的DataFrame格式嗎?

輸入描述:

數(shù)據(jù)集直接從當(dāng)前目錄下的Nowcoder.json文件中讀取。

怎么使用Python實現(xiàn)數(shù)據(jù)清洗

輸出描述:

輸出轉(zhuǎn)換為DataFrame的全部數(shù)據(jù),包括行號。

怎么使用Python實現(xiàn)數(shù)據(jù)清洗

答案

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實現(xiàn)數(shù)據(jù)清洗

到此,相信大家對“怎么使用Python實現(xiàn)數(shù)據(jù)清洗”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI