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

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

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

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

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

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

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

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

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

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

 此部分不再詳述,請見第一篇。

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一列表示該列有幾個非缺省值,5 non-null表示該列中的每一個單元格都有內(nèi)容填入,沒有缺省值;Dtype一列則為每一列的數(shù)據(jù)類型,分別為object,int64,datetime64[ns]類型。

 1.3 head

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

形式為:head()需要預(yù)覽前面幾行就在括號里填數(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ù)的個數(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ù)據(jù)為int64類型的數(shù)據(jù),因此該方法最終輸出的結(jié)果只有識別碼的結(jié)果。

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

2.1 缺省值的處理

2.1.1 isnull()檢查缺省值

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

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

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

2.1.2 dropna()缺省值的刪除

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

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

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

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

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

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

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

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

可以看到,王五那一行因為有一個缺省值,整行都被刪除掉了。

2.1.3 fillna()缺省值的填充

對于缺省值,我們也可以選擇對其進行填充。

為了對比,我刪除了兩個單元格的值。

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

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

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

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

2.2 重復(fù)值的處理

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

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

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

接下來使用所介紹的方法來解決重復(fù)項的問題,代碼與結(jié)果如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.4 索引的設(shè)置

2.4.1 添加索引

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

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

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

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

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

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

需要注意的是,有多少行多少列就要添加多少行多少列的索引,不然會報錯。

2.4.2 重新設(shè)置索引

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

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

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

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

2.4.3 索引的重命名

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

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

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

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

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

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

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

2.4.4 重置索引 

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

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

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

三、結(jié)語

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

到此這篇關(guān)于使用Python處理EXCEL基礎(chǔ)操作篇2Python對EXCEL數(shù)據(jù)的預(yù)處理的文章就介紹到這了,更多相關(guān)Python對EXCEL數(shù)據(jù)預(yù)處理內(nèi)容請搜索腳本之家以前的文章或繼續(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)資料,我們在使用pycharm的時候,pycharm中的虛擬環(huán)境依賴包需要導(dǎo)出成一個文件,需要的朋友可以參考下
    2023-11-11
  • Python實現(xiàn)繪制水平線

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

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

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

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

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

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