python數(shù)據(jù)分析4:修改、刪除、清洗數(shù)據(jù)

1.修改數(shù)據(jù)

【修改學(xué)生成績(jī)數(shù)據(jù):整行】

import pandas as pd

pd.set_option('display.unicode.east_asian_width',True)

data = [[110, 105, 99], [105, 88, 115], [109, 120, 130], [112, 115, 140]]

name = ['明日', '七月流火', '高袁圓', '二月二']

columns = ['語(yǔ)文', '數(shù)學(xué)', '英語(yǔ)']

df = pd.DataFrame(data=data, index=name, columns=columns)

df.loc['明日'] = [120, 115, 109]

【在原值上加10】

df.loc['明日']= df.loc['明日']+10

df.iloc[0,:] = [120, 115, 109]

? ? ? ? ? 語(yǔ)文? 數(shù)學(xué)? 英語(yǔ)

明日? ? ? 120? 115? ? 109

七月流火? 105? ? 88? 115

高袁圓? ? 109? 120? 130

二月二? ? 112? 115? 140

【修改整列數(shù)據(jù)】

df.loc[:,'語(yǔ)文'] = [115, 108, 112, 118]

df.iloc[:,0] = [115, 108, 112, 118]

? ? ? ? ? 語(yǔ)文? 數(shù)學(xué)? 英語(yǔ)

明日? ? ? 115? 105? ? 99

七月流火? 108? ? 88? 115

高袁圓? ? 112? 120? 130

二月二? ? 118? 115? 140

【修改某一處數(shù)據(jù)】

df.loc['明日','語(yǔ)文'] = 115

df.iloc[0,0] = 115

? ? ? ? ? 語(yǔ)文? 數(shù)學(xué)? 英語(yǔ)

明日? ? ? 115? 105? ? 99

七月流火? 105? ? 88? 115

高袁圓? ? 109? 120? 130

二月二? ? 112? 115? 140

2.刪除數(shù)據(jù)

import pandas as pd

pd.set_option('display.unicode.east_asian_width',True)

data = [[110, 105, 99], [105, 88, 115], [109, 120, 130], [112, 115, 140]]

name = ['明日', '七月流火', '高袁圓', '二月二']

columns = ['語(yǔ)文', '數(shù)學(xué)', '英語(yǔ)']

df = pd.DataFrame(data=data, index=name, columns=columns)

# DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')

labels 表示行標(biāo)簽或列標(biāo)簽

axis=0 表示按行刪除 axis=1表示按列刪除,默認(rèn)值為0

index刪除行,默認(rèn)為None

columns 刪除列,默認(rèn)為None

level 針對(duì)有兩級(jí)索引的數(shù)據(jù)? level=0表示按第1級(jí)索引刪除整行? level=1表示按第2級(jí)索引刪除整行,默認(rèn)值為None

inplace 可選參數(shù),對(duì)原數(shù)組作出修改并返回一個(gè)新數(shù)組,默認(rèn)為False,如為T(mén)rue,原數(shù)組直接被替換

errors 參數(shù)值為ignore(忽略,取消錯(cuò)誤)或raise,默認(rèn)值為raise

【刪除行列數(shù)據(jù)】

df.drop(['數(shù)學(xué)'], axis=1, inplace=True)

<刪除columns為數(shù)學(xué)的列>

df.drop(columns='數(shù)學(xué)', inplace=True)

<刪除列標(biāo)簽為“數(shù)學(xué)”的列>

df.drop(labels='數(shù)學(xué)', axis=1, inplace=True)

? ? ? ? ? 語(yǔ)文? 英語(yǔ)

明日? ? ? 110? ? 99

七月流火? 105? 115

高袁圓? ? 109? 130

二月二? ? 112? 140

【刪除某一行】

df.drop(['明日','二月二'], inplace=True)

? ? ? ? ? 語(yǔ)文? 數(shù)學(xué)? 英語(yǔ)

七月流火? 105? ? 88? 115

高袁圓? ? 109? 120? 130

【刪除index為“明日”的行】

df.drop(index='明日', inplace=True)

? ? ? ? ? 語(yǔ)文? 數(shù)學(xué)? 英語(yǔ)

七月流火? 105? ? 88? 115

高袁圓? ? 109? 120? 130

二月二? ? 112? 115? 140

【刪除行標(biāo)簽為“明日”的行】

df.drop(labels='明日', axis=0, inplace=True)

? ? ? ? ? 語(yǔ)文? 數(shù)學(xué)? 英語(yǔ)

七月流火? 105? ? 88? 115

高袁圓? ? 109? 120? 130

二月二? ? 112? 115? 140

【刪除特定條件的行】

# 刪除數(shù)學(xué)中包含分?jǐn)?shù)88的行,語(yǔ)文小于110的行

df.drop(index=df[df['數(shù)學(xué)'].isin([88])].index[0], inplace=True)

df.drop(index=df[df['語(yǔ)文']<110].index[0], inplace=True)

print(df)

3.數(shù)據(jù)清洗

# 缺失值指的是由于某種原因?qū)е聰?shù)據(jù)為空

import pandas as pd

df = pd.read_excel('NBA.xlsx')

print(df)

print(df.info())

# 判斷數(shù)據(jù)是否存在缺失值

import pandas as pd

df = pd.read_excel('NBA.xlsx')

print(df)

print(df.isnull())

# 缺失值返回True,非缺失值返回False

print(df.notnull())

# 缺失值返回False,非缺失值返回True

【缺失值刪除處理】

import pandas as pd

df = pd.read_excel('NBA.xlsx')

df.dropna()

print(df)

# 判斷一列的數(shù)據(jù)是否缺失

df1 = df[df['寶貝總數(shù)量'].notnull()]

【缺失值填充】

import pandas as pd

df = pd.read_excel('NBA2.xlsx')

# DataFrame對(duì)象中的fillna函數(shù)可以實(shí)現(xiàn)填充缺失數(shù)據(jù)

# pad/ffill函數(shù)表示用前一個(gè)非缺失值去填充該缺失值

# backfill/bfill函數(shù)表示用下一個(gè)非缺失值填充該缺失值

# None用于指定一個(gè)值去替換缺失值

# 將NaN填充為0

df['寶貝數(shù)量'] = df['寶貝數(shù)量'].fillna(0)

print(df)

【重復(fù)值處理】

# 先判斷每一行數(shù)據(jù)是否重復(fù)(完全相同)

import pandas as pd

df = pd.read_excel('NBA2.xlsx')

df.duplicated()

# 返回為False,表示不重復(fù);返回為T(mén)rue,表示重復(fù)

df.drop_duplicates()

# 去除提定列的重復(fù)數(shù)據(jù)

df.drop_duplicates(['會(huì)員名'])

# 保留重復(fù)行中的最后一行

df.drop_duplicates(['會(huì)員名'], keep='last')

# keep = 'first'表示保留第一次出現(xiàn)的重復(fù)行時(shí)(默認(rèn)值)

# keep = 'last' 表示保留最后一次出現(xiàn)的重復(fù)行

# keep = False 表示去除所有的重復(fù)行

# 直接刪除,保留一個(gè)副本

df.drop_duplicates(['會(huì)員名','支付寶賬號(hào)'], inplace=False)

# inplace=True表示直接在原來(lái)的DataFrame對(duì)象上刪除重復(fù)項(xiàng)

# inplace=False表示刪除重復(fù)項(xiàng)目后再生成一個(gè)副本(默認(rèn)值)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容