真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用Python怎么清洗數(shù)據(jù)

今天就跟大家聊聊有關(guān)使用Python怎么清洗數(shù)據(jù),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:空間域名、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、甘泉網(wǎng)站維護(hù)、網(wǎng)站推廣。

下面我們用一副待清洗的撲克牌作為示例,假設(shè)它保存在代碼文件相同的目錄下,在 Jupyter Lab 環(huán)境中運行以下代碼:

import numpy as np import pandas as pd  # 設(shè)置最多顯示 10 行 pd.set_option('max_rows', 10)  # 從 Excel 文件中讀取原始數(shù)據(jù) df = pd.read_excel(     '待清洗的撲克牌數(shù)據(jù)集.xlsx' )  df

返回結(jié)果如下:

使用Python怎么清洗數(shù)據(jù)

這幅待清洗的撲克牌數(shù)據(jù)集,有一些異常情況,包括:大小王的花色是缺失的,有兩張重復(fù)的黑桃:spades: A,還有一張異常的 黑桃 :spades:  30。

1. 如何查找異常?

在正式開始清洗數(shù)據(jù)之前,往往需要先把異常數(shù)據(jù)找出來,觀察異常數(shù)據(jù)的特征,然后再決定清洗的方法。

# 查找「花色」缺失的行 df[df.花色.isnull()]
使用Python怎么清洗數(shù)據(jù)
  1. # 查找完全重復(fù)的行 

  2. df[df.duplicated()]

使用Python怎么清洗數(shù)據(jù)
  1. # 查找某一列重復(fù)的行 

  2. df[df.編號.duplicated()]

使用Python怎么清洗數(shù)據(jù)
  1. # 查找牌面的所有唯一值 

  2. df.牌面.unique()

返回結(jié)果:

array(['大王', '小王', 'A', '30', 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 2, 3],  dtype=object)

根據(jù)常識可以判斷,牌面為 30 的是異常值。

# 查找「牌面」包含 30 的異常值 df[df.牌面.isin(['30'])]
使用Python怎么清洗數(shù)據(jù)
# 查找王牌,模糊匹配 df[df.牌面.str.contains(     '王', na=False )]
使用Python怎么清洗數(shù)據(jù)
# 查找編號在 1 到 5 之間的行 df[df.編號.between(1, 5)]
使用Python怎么清洗數(shù)據(jù)

查找某個區(qū)間,也可以用邏輯運算的方法來實現(xiàn):

# 查找編號在 1 到 5 之間的行 df[(df.編號 >= 1)    & (df.編號 <= 5)]

其中「 & 」代表必須同時滿足兩邊的條件,也就是「且」的意思。

還可以用下面等價的方法:

# 查找編號在 1 到 5 之間的行 df[~((df.編號 < 1)      | (df.編號 > 5))]

其中「 | 」代表兩邊的條件滿足一個即可,也就是「或」的意思,「 ~ 」代表取反,也就是「非」的意思。

2. 如何排除重復(fù)?

使用 drop_duplicates() 函數(shù),在排除重復(fù)之后,會得到一個新的數(shù)據(jù)框。

# 排除完全重復(fù)的行,默認(rèn)保留第一行 df.drop_duplicates()

返回結(jié)果如下:

使用Python怎么清洗數(shù)據(jù)

如果想要改變原來的數(shù)據(jù)框,有兩種方法,一種方法,是增加 inplace 參數(shù):

# 排除重復(fù)后直接替換原來的數(shù)據(jù)框 df.drop_duplicates(     inplace=True )

另一種方法,是把得到的結(jié)果,重新賦值給原來的數(shù)據(jù)框:

# 排除重復(fù)后,重新賦值給原來的數(shù)據(jù)框 df = df.drop_duplicates()

如果想要按某一列排除重復(fù)的數(shù)據(jù),那么指定相應(yīng)的列名即可。

# 按某一列排除重復(fù),默認(rèn)保留第一行 df.drop_duplicates(['花色'])
使用Python怎么清洗數(shù)據(jù)

如果想要保留重復(fù)的最后一行,那么需要指定 keep 參數(shù)。

# 按某一列排除重復(fù),并保留最后一行 df.drop_duplicates(     ['花色'], keep='last' )
使用Python怎么清洗數(shù)據(jù)

從上面兩個返回結(jié)果的編號可以看出,不同方法的差異情況。

3. 如何刪除缺失?

使用 dropna() 函數(shù),默認(rèn)刪除包含缺失的行。為了更加簡單易懂,我們用撲克牌中不重復(fù)的花色作為示例。

# 不重復(fù)的花色 color = df.drop_duplicates(     ['花色'] )  color
使用Python怎么清洗數(shù)據(jù)
# 刪除包含缺失值的行 color.dropna()
使用Python怎么清洗數(shù)據(jù)

如果想要刪除整行全部為空的行,那么需要指定 how 參數(shù)。

# 刪除全部為空的行 color.dropna(how='all')
使用Python怎么清洗數(shù)據(jù)

如果想要刪除包含缺失值的列,那么需要指定 axis 參數(shù)。

# 刪除包含缺失值的列 color.dropna(axis=1)
使用Python怎么清洗數(shù)據(jù)

可以看到,包含缺失值的「花色」這一列被刪除了。

4. 如何補(bǔ)全缺失?

使用 fillna() 函數(shù),可以將缺失值填充為我們指定的值。

# 補(bǔ)全缺失值 color.fillna('Joker')
使用Python怎么清洗數(shù)據(jù)

可以看到,原來的 NaN 被填充為 Joker,在實際工作的應(yīng)用中,通常填充為 0,也就是說, fillna(0) 是比較常見的用法。

如果想要使用臨近的值來填充,那么需要指定 method 參數(shù),例如:

# 用后面的值填充 color.fillna(method='bfill')
使用Python怎么清洗數(shù)據(jù)

可以看到,原來第一行的 NaN 替換成了第二行的「黑桃:spades:」。

其中 method 還有一些其他的可選參數(shù),詳情可以查看相關(guān)的幫助文檔。

還有一種按字典填充的方法。為了讓下面的演示更加直觀易懂,我們先把索引為 2 的牌面設(shè)置為缺失值:

# 為了演示,先指定一個缺失值 color.loc[2, '牌面'] = np.nan  color
使用Python怎么清洗數(shù)據(jù)
# 按列自定義補(bǔ)全缺失值 color.fillna(     {'花色': 0, '牌面': 1} )
使用Python怎么清洗數(shù)據(jù)

可以看出,不同列的缺失值,可以填充為不同的值,花色這一列填充為 0,牌面這一列填充為 1,我在圖中分別用紅色的方框標(biāo)記出來了。

5. 應(yīng)用案例

下面 我們用 Python 代碼,把這幅待清洗的撲克牌數(shù)據(jù)集,變成一副正常的撲克牌數(shù)據(jù)。

import numpy as np import pandas as pd  # 設(shè)置最多顯示 10 行 pd.set_option('max_rows', 10)  # 從 Excel 文件中讀取原始數(shù)據(jù) df = pd.read_excel(     '待清洗的撲克牌數(shù)據(jù)集.xlsx' )  # 補(bǔ)全缺失值 df = df.fillna('Joker')  # 排除重復(fù)值 df = df.drop_duplicates()  # 修改異常值 df.loc[4, '牌面'] = 3  # 增加一張缺少的牌 df = df.append(     {'編號': 4,      '花色': '黑桃♠',      '牌面': 2},     ignore_index=True )  # 按編號排序 df = df.sort_values('編號')  # 重置索引 df = df.reset_index()  # 刪除多余的列 df = df.drop(     ['index'], axis=1 )  # 把清洗好的數(shù)據(jù)保存到 Excel 文件 df.to_excel(     '完成清洗的撲克牌數(shù)據(jù).xlsx',     index=False )  df

看完上述內(nèi)容,你們對使用Python怎么清洗數(shù)據(jù)有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


本文標(biāo)題:使用Python怎么清洗數(shù)據(jù)
標(biāo)題鏈接:http://weahome.cn/article/jgdcdi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部