欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python對(duì)EXCEL數(shù)據(jù)的預(yù)處理

 更新時(shí)間:2023年03月22日 15:54:13   作者:二十六夜.  
這篇文章主要介紹了使用Python處理EXCEL基礎(chǔ)操作篇2,如何使用Python對(duì)EXCEL數(shù)據(jù)的預(yù)處理,文中提供了解決思路和部分實(shí)現(xiàn)代碼,一起來(lái)看看吧

一、熟悉數(shù)據(jù)

我們將EXCEL中的數(shù)據(jù)導(dǎo)入之后,需要對(duì)數(shù)據(jù)進(jìn)行大致性的了解,當(dāng)對(duì)數(shù)據(jù)充分地了解之后,才便于后期的分析工作。

該部分涉及到四個(gè)基本方法,分別為“shape”“info”“head”“describe”。下面會(huì)具體介紹四者的用法與功能。

以下是我準(zhǔn)備好的一組簡(jiǎn)單的excel數(shù)據(jù):

其中:“編號(hào)”“姓名”“識(shí)別碼”“時(shí)間”稱為索引列;左邊的“1”“2”···“6”稱為索引行。

通過(guò)第一篇的方法,將數(shù)據(jù)導(dǎo)入python中。代碼與輸出結(jié)果如下所示:

import pandas as pd
df=pd.read_excel(r"D:\雜貨\新編碼.xlsx",sheet_name='Sheet1')
print(df)

 此部分不再詳述,請(qǐng)見(jiàn)第一篇。

1.1 shape

在導(dǎo)入excel表格數(shù)據(jù)后,使用該方法可以查看該表格的數(shù)據(jù)一共有多少行多少列,并以元組的形式輸出。需要表明的是,該方法輸出的行數(shù)和列數(shù)不包括索引行和索引列。

代碼與輸出結(jié)果如下:

m=df.shape#輸出導(dǎo)入的列表有多少行多少列
print(m)

 最下面的(5,4)即為該方法輸出的結(jié)果,解釋為5行4列。

 1.2 info

該方法可以幫助我們查看所導(dǎo)入的每一列的數(shù)據(jù)類型,并且還能查看是否有缺省值。

代碼與結(jié)果如下:

import pandas as pd
df=pd.read_excel(r"D:\雜貨\新編碼.xlsx",sheet_name='Sheet1')
df.info()#查看每一列的數(shù)據(jù)類型

 從輸出結(jié)果可以看到,Column一列顯示為頭部的名稱,即為我們的索引列;Non-Null Count一列表示該列有幾個(gè)非缺省值,5 non-null表示該列中的每一個(gè)單元格都有內(nèi)容填入,沒(méi)有缺省值;Dtype一列則為每一列的數(shù)據(jù)類型,分別為object,int64,datetime64[ns]類型。

 1.3 head

該方法能夠幫助我們預(yù)覽表格的前幾行的內(nèi)容。

形式為:head()需要預(yù)覽前面幾行就在括號(hào)里填數(shù)字幾。

代碼與結(jié)果如下:

import pandas as pd
df=pd.read_excel(r"D:\雜貨\新編碼.xlsx",sheet_name='Sheet1')
n=df.head(1)#可選擇預(yù)覽前幾行
k=df.head(2)
j=df.head(3)
print(n)
print(k)
print(j)

 以上分別輸出了前1行,前2行,前3行。

1.4 describe

該方法能夠幫助我們查看某一列int64類型數(shù)據(jù)的個(gè)數(shù)、平均數(shù)、標(biāo)準(zhǔn)差、最大值、最小值、分位數(shù)。

代碼與結(jié)果如下:

import pandas as pd
df=pd.read_excel(r"D:\雜貨\新編碼.xlsx",sheet_name='Sheet1')
i=df.describe()#可查看數(shù)據(jù)的基本情況,int64類型的數(shù)據(jù)
print(i)

 由于只有“識(shí)別碼”一列的數(shù)據(jù)為int64類型的數(shù)據(jù),因此該方法最終輸出的結(jié)果只有識(shí)別碼的結(jié)果。

二、數(shù)據(jù)預(yù)處理

2.1 缺省值的處理

2.1.1 isnull()檢查缺省值

首先我們要查看我們的數(shù)據(jù)里是否含有缺省值。在1.2部分已經(jīng)介紹了使用info()方法查看缺省值,以下將介紹另一個(gè)檢查缺省值的方法。代碼與結(jié)果如下:

n=df.isnull()#true為缺省值print(n)

 可以看到,F(xiàn)alse表示該單元格不是缺省值,若該單元格為缺省值,則結(jié)果會(huì)顯示為True。

2.1.2 dropna()缺省值的刪除

 對(duì)于缺省值,我們可以選擇刪除它,代碼與結(jié)果如下:

n=df.isnull()#true為缺省值
print(n)

上面介紹了兩條代碼,第一條從其注釋可知道,當(dāng)某一行存在一個(gè)單元格的內(nèi)容為缺省值,那么無(wú)論其他單元格是否為缺省值,該行整行都會(huì)被刪除;第二條代碼的不同之處即在括號(hào)中有how='all',該方法下,只有當(dāng)某一行的所有單元格皆為缺省值時(shí),才會(huì)將該行整行刪除,否則不會(huì)刪除該行。

作為對(duì)比,我將一個(gè)單元格的內(nèi)容刪除。

 輸出后的內(nèi)容可以看到,王五所對(duì)應(yīng)的識(shí)別碼為NaN,這就表示該單元格無(wú)內(nèi)容,是空的,即所說(shuō)的缺省值。

首先輸出的是dropna(how='all')的結(jié)果:

 可以看到,當(dāng)只有王五的識(shí)別碼為缺省值時(shí),并沒(méi)有刪除該行。

接下來(lái)輸出dropna()的結(jié)果:

可以看到,王五那一行因?yàn)橛幸粋€(gè)缺省值,整行都被刪除掉了。

2.1.3 fillna()缺省值的填充

對(duì)于缺省值,我們也可以選擇對(duì)其進(jìn)行填充。

為了對(duì)比,我刪除了兩個(gè)單元格的值。

輸出結(jié)果可知,姓名一列于識(shí)別碼一列共有兩個(gè)缺省值。 

x=df.dropna()#只要帶有缺省值就整行刪除
print(x)
y=df.dropna(how='all')#只刪除整行是缺省值的行
print(y)

上面提供了兩條代碼,第一條代碼表示將所有的缺省值都用“好”這個(gè)值填充,結(jié)果如下:

 第二條代碼為指定用某個(gè)值填充某一列的缺省部分,即將姓名一列的缺省部分都用“王五”填充,識(shí)別碼一列的缺省部分都用“103”填充。結(jié)果如下:

2.2 重復(fù)值的處理

對(duì)于表單中出現(xiàn)的重復(fù)項(xiàng),我們可以使用drop_duplicates()方法來(lái)保留其中一個(gè)。默認(rèn)保留第一個(gè)值。

為了對(duì)比,將數(shù)據(jù)修改為以下形式:

 可以看到,此時(shí)有兩行的內(nèi)容是相同的。

接下來(lái)使用所介紹的方法來(lái)解決重復(fù)項(xiàng)的問(wèn)題,代碼與結(jié)果如下:

x=df.fillna("好")#填缺省值,括號(hào)里寫要填入的值
print(x)
y=df.fillna({'姓名':'王五','識(shí)別碼':'103'})#指定列填入值,且可以多列填寫,但都寫在同一個(gè)字典里
print(y)

首先來(lái)看代碼的第一行,該方法的作用在其注釋處已經(jīng)說(shuō)明,不再贅述,從其輸出結(jié)果看,索引行為“3”的那一行“王五”重復(fù)項(xiàng)被刪除了,只保留了索引行為“2”的那一行“王五”。

接著看第二行代碼的結(jié)果:

其輸出的結(jié)果其實(shí)和第一種是一樣的,雖然結(jié)果一樣,但是兩者的目的是不一樣的,第二行代碼括號(hào)中寫入了一個(gè)列表['姓名','識(shí)別碼'],該列表達(dá)到的作用就是指明我們要?jiǎng)h除的哪一列中存在的重復(fù)項(xiàng),即是說(shuō):我想將“姓名”一列中的重復(fù)項(xiàng)和“識(shí)別碼”一列中的重復(fù)項(xiàng)進(jìn)行處理。在此我以兩個(gè)列名作為示例,若只想按照一個(gè)列名來(lái)刪除重復(fù)項(xiàng)的,則只需寫入一個(gè)列名即可。

 2.3 數(shù)據(jù)類型的轉(zhuǎn)換

2.3.1 數(shù)據(jù)類型的查看

在前面已經(jīng)介紹了使用info()方法查看數(shù)據(jù)類型,在此再介紹一種方法,代碼與結(jié)果如下:

x=df['姓名'].dtype#針對(duì)查看某一列的數(shù)據(jù)類型print(x)

 該方法是只能查看某一列的數(shù)據(jù)類型,只能查看一列,不能查看多列。只需將想查看的那一列的索引列名稱寫入中括號(hào)即可。最后輸出結(jié)果可以看到“姓名”一列的數(shù)據(jù)類型為object。

2.3.2 數(shù)據(jù)類型的轉(zhuǎn)換

這里我們使用的方法為astype()方法,首先查看原始數(shù)據(jù)中“識(shí)別碼”的數(shù)據(jù)類型。

 可以看到其數(shù)據(jù)類型為int64。

接下來(lái)我們來(lái)修改該列的數(shù)據(jù)類型為float64,代碼與結(jié)果如下:

y=df['識(shí)別碼'].astype('float64')print(y)

 可以看到輸出結(jié)果中識(shí)別碼一列的數(shù)據(jù)有了小數(shù)點(diǎn)后一位,且其dtype顯示為float64。

2.4 索引的設(shè)置

2.4.1 添加索引

索引的添加很簡(jiǎn)單,以下是索引列的添加(修改)代碼與結(jié)果如下:

df.columns=['號(hào)編','名姓','碼別識(shí)','間時(shí)']print(df)

 可以看到,最上面的索引列名稱被我替換掉了。

以下是索引行的添加(修改)。

df.index=['2','4','6','8','10']print(df)

可以看到,最左邊的索引行名稱被我改成了2,4,6,8,10。

需要注意的是,有多少行多少列就要添加多少行多少列的索引,不然會(huì)報(bào)錯(cuò)。

2.4.2 重新設(shè)置索引

我們還可以使用列表中的某一列數(shù)據(jù)作為索引。方法是set_index()。

代碼與結(jié)果如下:

x=df.set_index("姓名")print(x)

 從結(jié)果可以看出,最左邊的索引不再是數(shù)字,而成了姓名。

2.4.3 索引的重命名

針對(duì)重命名索引,有以下三種寫法:

df.rename(columns={"原來(lái)的索引":"想要修改成的索引"})        該方法只修改索引列的名稱

df.rename(index={"原來(lái)的索引":"想要修改成的索引"})        該方法只修改索引行的名稱

df.rename(columns={"原來(lái)的索引":"想要修改成的索引"},index={"原來(lái)的索引":"想要修改成的索引"})        該方法能同時(shí)修改索引列和索引行的名稱

需要注意:該方法都使用了列表。代碼與結(jié)果如下:

x=df.drop_duplicates()#對(duì)所有值進(jìn)行重復(fù)值判斷,并且默認(rèn)保留第一個(gè)(行)值
y=df.drop_duplicates(subset=['姓名','識(shí)別碼'])#只針對(duì)某一列或某幾列進(jìn)行重復(fù)值刪除的判斷。
print(x)
print(y)

上面的結(jié)果可以看出,索引行與索引列都分別修改成功,成為我所想要修改的名稱。

2.4.4 重置索引 

該部分主要是針對(duì)層次化的excel表格使用,相對(duì)而言較為繁瑣,在這里暫時(shí)不過(guò)多講述,僅僅對(duì)方法進(jìn)行展示。

x=df['姓名'].dtype#針對(duì)查看某一列的數(shù)據(jù)類型
print(x)

由于本人在使用該方法時(shí)無(wú)法成功重置,因此暫時(shí)不對(duì)該方法進(jìn)行詳解,待之后找到原因再詳細(xì)介紹該方法。

三、結(jié)語(yǔ)

本篇內(nèi)容較多,但仍然是基于已有的表格進(jìn)行的一些基礎(chǔ)操作,后期介紹會(huì)逐步深入。若有錯(cuò)誤還請(qǐng)指出。

到此這篇關(guān)于使用Python處理EXCEL基礎(chǔ)操作篇2Python對(duì)EXCEL數(shù)據(jù)的預(yù)處理的文章就介紹到這了,更多相關(guān)Python對(duì)EXCEL數(shù)據(jù)預(yù)處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PyCharm更換pip源、模塊安裝以及PyCharm依賴包導(dǎo)入導(dǎo)出功能

    PyCharm更換pip源、模塊安裝以及PyCharm依賴包導(dǎo)入導(dǎo)出功能

    這篇文章主要給大家介紹了關(guān)于PyCharm更換pip源、模塊安裝以及PyCharm依賴包導(dǎo)入導(dǎo)出功能的相關(guān)資料,我們?cè)谑褂胮ycharm的時(shí)候,pycharm中的虛擬環(huán)境依賴包需要導(dǎo)出成一個(gè)文件,需要的朋友可以參考下
    2023-11-11
  • Python實(shí)現(xiàn)繪制水平線

    Python實(shí)現(xiàn)繪制水平線

    這篇文章主要為大家詳細(xì)介紹如何了在Python中創(chuàng)建一條水平線以及Python?中的?Matplotlib?庫(kù)的使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2023-10-10
  • python定時(shí)執(zhí)行指定函數(shù)的方法

    python定時(shí)執(zhí)行指定函數(shù)的方法

    這篇文章主要介紹了python定時(shí)執(zhí)行指定函數(shù)的方法,涉及Python中sleep方法延時(shí)執(zhí)行的相關(guān)使用技巧,需要的朋友可以參考下
    2015-05-05
  • python通過(guò)設(shè)置WordCloud參數(shù)實(shí)現(xiàn)定制詞云

    python通過(guò)設(shè)置WordCloud參數(shù)實(shí)現(xiàn)定制詞云

    這篇文章主要為大家詳細(xì)介紹了python如何通過(guò)設(shè)置WordCloud參數(shù)實(shí)現(xiàn)定制詞云,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • 最新評(píng)論