亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

1. pandas介紹

Pandas是一個強大的數(shù)據(jù)分析庫,它的Series和DataFrame數(shù)據(jù)結(jié)構(gòu),使得處理起二維表格數(shù)據(jù)變得非常簡單。

基于后面需要對Excel表格數(shù)據(jù)進行處理,有時候使用Pandas庫處理表格數(shù)據(jù),會更容易、更簡單,因此我這里必須要講述。

Pandas庫是一個內(nèi)容極其豐富的庫,這里并不會面面俱到。我這里主要講述的是如何利用Pandas庫完成 “表格讀取”、“表格取數(shù)” 和 “表格合并” 的任務(wù)。其實Pandas能實現(xiàn)的功能,遠(yuǎn)遠(yuǎn)不止這些,關(guān)于利用該庫如何實現(xiàn)數(shù)據(jù)清晰和圖表制作,不是本書的研究范圍,大家可以下去好好學(xué)習(xí)這個庫。

在使用這個庫之前,需要先導(dǎo)入這個庫。為了使用方便,習(xí)慣性給這個庫起一個別名pd,本書中只要是見到pd,指的都是Pandas。

2. Excel數(shù)據(jù)的讀取

Pandas支持讀取csv、excel、json、html、數(shù)據(jù)庫等各種形式的數(shù)據(jù),非常強大。但是我們這里僅以讀取excel文件為例,講述如何使用Pandas庫讀取本地的excel文件。

在Pandas庫中,讀取excel文件使用的是pd.read_excel()函數(shù),這個函數(shù)強大的原因是由于有很多參數(shù)供我們使用,是我們讀取excel文件更方便。在這里我們僅僅講述sheet_name、header、usecols和names四個常用參數(shù)。

① sheet_name參數(shù)詳解

我們知道一個excel文件是一個工作簿,一個工作簿有多個sheet表,每個sheet表中是一個表格數(shù)據(jù)。sheet_name參數(shù)就是幫助我們選擇要讀取的sheet表,具體用法如下。

sheet_name=正整數(shù)值,等于0表示讀取第一個sheet表,等于1表示讀取第二個sheet表,以此類推下去。

sheet_name=”sheet名稱”,我們可以利用每張sheet表的名稱,讀取到不同的sheet表,更方便靈活。

注意:如果不指定該參數(shù),那么默認(rèn)讀取的是第一個sheet表。

用法1:sheet_name=正整數(shù)值

df = pd.read_excel("readexcel.xlsx",sheet_name=1)
df

結(jié)果如下:

一文講述Pandas庫的數(shù)據(jù)讀取、數(shù)據(jù)獲取、數(shù)據(jù)拼接、數(shù)據(jù)寫出

 

用法2:sheet_name=”sheet名稱”

df = pd.read_excel("readexcel.xlsx",sheet_name="考試成績表")
df

結(jié)果如下:

一文講述Pandas庫的數(shù)據(jù)讀取、數(shù)據(jù)獲取、數(shù)據(jù)拼接、數(shù)據(jù)寫出

 

② header參數(shù)詳解

有時候待讀取的excel文件,可能有標(biāo)題行,也有可能沒有標(biāo)題行。但是默認(rèn)都會將第一行讀取為標(biāo)題行,這個對于沒有標(biāo)題行的excel文件來說,顯得不太合適了,因此header參數(shù)可以很好的解決這個問題。

header=None,主要針對沒有標(biāo)題行的excel文件,系統(tǒng)不會將第一行數(shù)據(jù)作為標(biāo)題,而是默認(rèn)取一個1,2,3…這樣的標(biāo)題。

header=正整數(shù)值,指定哪一行作為標(biāo)題行。

用法1:header=None

df = pd.read_excel("readexcel.xlsx",sheet_name="copy",header=None)
df

結(jié)果如下:

一文講述Pandas庫的數(shù)據(jù)讀取、數(shù)據(jù)獲取、數(shù)據(jù)拼接、數(shù)據(jù)寫出

 

用法2:header=正整數(shù)值

df = pd.read_excel("readexcel.xlsx",sheet_name="基本信息表",header=1)
df

結(jié)果如下:

一文講述Pandas庫的數(shù)據(jù)讀取、數(shù)據(jù)獲取、數(shù)據(jù)拼接、數(shù)據(jù)寫出

 

③ usecols參數(shù)詳解

當(dāng)一張表有很多列的時候,如果你僅僅想讀取 這張表中的指定列,使用usecols參數(shù)是一個很好的選擇。

關(guān)于usecols參數(shù),這里有多種用法,我們分別進行說明。

usecols=None,表示選擇一張表中的所有列,默認(rèn)情況不指定該參數(shù),也表示選擇表中的所有列。

usecols=[A,C],表示選擇A列(第一列)和C列(第三列)。而usecols=[A,C:E],表示選擇A列,C列、D列和E列。

usecols=[0,2],表示選擇第一列和第三列。

# 下面這兩行代碼,均表示獲取前2列的數(shù)據(jù)
df = pd.read_excel("readexcel.xlsx",sheet_name="考試成績表",usecols=[1,2])
df = pd.read_excel("readexcel.xlsx",sheet_name="考試成績表",usecols="A:B")
df

結(jié)果如下:

一文講述Pandas庫的數(shù)據(jù)讀取、數(shù)據(jù)獲取、數(shù)據(jù)拼接、數(shù)據(jù)寫出

 

④ names參數(shù)詳解

如果一張表沒有標(biāo)題行,我們就需要為其指定一個標(biāo)題,使用names參數(shù),可以在讀取數(shù)據(jù)的時候,為該表指定一個標(biāo)題。

names=[“列名1”,”列名2”…]:傳入一個列表,指明每一列的列名。

name_list = ["學(xué)號","姓名","性別","籍貫"]
df = pd.read_excel("readexcel.xlsx",sheet_name="copy",header=None,names=name_list)
df

結(jié)果如下:

一文講述Pandas庫的數(shù)據(jù)讀取、數(shù)據(jù)獲取、數(shù)據(jù)拼接、數(shù)據(jù)寫出

 

3. Excel數(shù)據(jù)的獲取

知道怎么讀取excel文件中的數(shù)據(jù)后,接下來我們就要學(xué)著如何靈活獲取到excel表中任意位置的數(shù)據(jù)了。

這里我一共提供了5種需要掌握的數(shù)據(jù)獲取方式,分別是 “訪問一列或多列” ,“訪問一行或多行” ,“訪問單元格中某個值” ,“訪問多行多列” 。

① 什么是“位置索引”和標(biāo)簽索引

一文講述Pandas庫的數(shù)據(jù)讀取、數(shù)據(jù)獲取、數(shù)據(jù)拼接、數(shù)據(jù)寫出

 

在講述如何取數(shù)之前,我們首先需要理解“位置索引”和“標(biāo)簽索引”這兩個概念。

每個表的行索引就是一個“標(biāo)簽索引”,而標(biāo)識每一行位置的數(shù)字就是 “位置索引”,如圖所示。

在pandas中,標(biāo)簽索引使用的是loc方法,位置索引用的是iloc方法。接下來就基于圖中這張表,來帶著大家來學(xué)習(xí)如何 “取數(shù)”

首先,我們需要先讀取這張表中的數(shù)據(jù)。

df = pd.read_excel("readexcel.xlsx",sheet_name="地區(qū)")
df

結(jié)果如下:

一文講述Pandas庫的數(shù)據(jù)讀取、數(shù)據(jù)獲取、數(shù)據(jù)拼接、數(shù)據(jù)寫出

 

② 訪問一列或多列

“訪問一列或多列”,相對來說比較容易,直接采用中括號“標(biāo)簽數(shù)組”的方式,就可以獲取到一列或多列。

方法1:訪問一列

df["武漢"]

方法2:訪問多列

df[["武漢","廣水"]]

③ 訪問一行或多行

“訪問一行或多行”,方法就比較多了,因此特別容易出錯,因此需要特別注意。

方法1:訪問一行

# 位置索引
df.iloc[0]
# 標(biāo)簽索引
df.loc["地區(qū)1"]

方法2:訪問多行

# 位置索引
df.iloc[[0,1,3]]
# 標(biāo)簽索引
df.loc[["地區(qū)1","地區(qū)2","地區(qū)4"]]

④ 訪問單元格中某個值

“訪問單元格中某個值”,也有很多種方式,既可以使用“位置索引”,也可以使用“標(biāo)簽索引”。

# 使用位置索引
df.iloc[2,1]
# 使用標(biāo)簽索引
df.loc["地區(qū)3","天門"]

⑤ 訪問多行多列

“訪問多行多列”,方法就更多了。我一共為大家總結(jié)了5種方法。第一,iloc+切片;第二種,loc+標(biāo)簽數(shù)組;第三種,iloc+切片+位置數(shù)組;第四種,loc+切片+標(biāo)簽數(shù)組。

方法1:iloc+切片

# 選取前3行數(shù)據(jù)的所有列
df.iloc[:3,:]

方法2:loc+標(biāo)簽數(shù)組

# 選取地區(qū)1和地區(qū)3這兩行的武漢、孝感、廣水列
df.loc[["地區(qū)1","地區(qū)3"],['武漢','孝感','廣水']]

方法3:iloc+切片+位置數(shù)組

# 選取所有行的第2和第5列數(shù)據(jù)
df.iloc[:,[1,4]]

方法4:loc+切片+標(biāo)簽數(shù)組

# 選取地區(qū)1和地區(qū)2這兩行的武漢和廣水列
df.loc[:"地區(qū)2":,["武漢","廣水"]]

4. Excel數(shù)據(jù)的拼接

在進行多張表合并的時候,我們需要將多張表的數(shù)據(jù),進行縱向(上下)拼接。在pandas中,直接使用pd.concat()函數(shù),就可以完成表的縱向合并。

關(guān)于pd.concat()函數(shù),用法其實很簡單,里面有一個參數(shù)ignore_index需要我們注意,ignore_index=True,表示會忽略原始索引,生成一組新的索引。

如果不使用ignore_index參數(shù)

df1 = pd.read_excel("concat.xlsx",sheet_name="Sheet1")
df2 = pd.read_excel("concat.xlsx",sheet_name="Sheet2")
pd.concat([df1,df2],ignore_index=True)

結(jié)果如下:

一文講述Pandas庫的數(shù)據(jù)讀取、數(shù)據(jù)獲取、數(shù)據(jù)拼接、數(shù)據(jù)寫出

 

從上表可以看到,里面有兩條記錄是完全重復(fù)的,我們直接可以再調(diào)用drop_duplicates()函數(shù),實現(xiàn)去重操作。

df1 = pd.read_excel("concat.xlsx",sheet_name="Sheet1")
df2 = pd.read_excel("concat.xlsx",sheet_name="Sheet2")
pd.concat([df1,df2],ignore_index=True).drop_duplicates()

結(jié)果如下:

一文講述Pandas庫的數(shù)據(jù)讀取、數(shù)據(jù)獲取、數(shù)據(jù)拼接、數(shù)據(jù)寫出

 

5. Excel數(shù)據(jù)寫出

當(dāng)我們將某個Excel文件中的表,進行讀取、數(shù)據(jù)整理等一系列操作后,就需要將處理好的數(shù)據(jù),導(dǎo)出到本地。其實Pandas庫中可以導(dǎo)出的數(shù)據(jù)格式有很多種,我們同樣以導(dǎo)出xlsx文件為例,進行講述。

在Pandas庫中,將數(shù)據(jù)導(dǎo)出為xlsx格式,使用的是DataFrame對象的to_excle()方法,其中這里面有4個常用的參數(shù),詳情如下。

  • excel_writer:表示數(shù)據(jù)寫到哪里去,可以是一個路徑,也可以是一個ExcelWriter對象。
  • sheet_name:設(shè)置導(dǎo)出到本地的Excel文件的Sheet名稱。
  • index:新導(dǎo)出到本地的文件,默認(rèn)是有一個從0開始的索引列,設(shè)置index=False可以去掉這個索引列。
  • columns:選擇指定列導(dǎo)出,默認(rèn)情況是導(dǎo)出所有列。
  • encoding:有時候?qū)С龅奈募霈F(xiàn)亂碼的格式,這個時候就需要使用該參數(shù)設(shè)置文件編碼格式。
df1 = pd.read_excel("concat.xlsx",sheet_name="Sheet1")
df2 = pd.read_excel("concat.xlsx",sheet_name="Sheet2")
df3 = pd.concat([df1,df2],ignore_index=True)
df3.to_excel(excel_writer="to_excel.xlsx",sheet_name="to_excel",index=None)

6. ExcelWriter的使用

有時候我們需要將多excel表寫入同一個工作簿,這個時候就需要借助Pandas中的pd.ExcelWriter()對象,默認(rèn)對于xls使用xlwt引擎,對于xlsx使用openpyxl引擎。

這里面有兩個參數(shù),一個是路徑參數(shù)Path,表示生成文件的存放路徑,一個是時間格式化參數(shù)datetime_format,可以將生成文件中的時間列,按照指定時間格式化輸出。

df1 = pd.read_excel("concat.xlsx",sheet_name="Sheet1")
df2 = pd.read_excel("concat.xlsx",sheet_name="Sheet2")
with pd.ExcelWriter("excel_writer.xlsx",datetime_format="YYYY-MM-DD") as writer:
    df1.to_excel(excel_writer=writer,sheet_name="df1",index=None)
    df2.to_excel(excel_writer=writer,sheet_name="df2",index=None)

上面第三行代碼,我們打開了一個ExcelWriter對象的同時,將所有設(shè)計到時間列的數(shù)據(jù),進行格式化輸出為年-月-日。

接著第四行代碼,我們將df1中的數(shù)據(jù)寫到這個ExcelWriter對象中,將這個Sheet取名為df1。

最后第五行代碼,再將df2中的數(shù)據(jù)寫入到這個ExcelWriter對象中,同樣將Sheet取名為df1。

分享到:
標(biāo)簽:Pandas
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定