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)值)