第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Pandas讀取數(shù)據(jù)文件

1. 前言

上節(jié)課我們一同通過安裝 Anaconda 快速的配置好了開發(fā)環(huán)境,那么從本節(jié)課開始我們將正式學習 Pandas 庫的強大功能。我們在簡介中也說到了 Pandas 是一個用來做數(shù)據(jù)處理和分析的工具。

既然要做數(shù)據(jù)處理和分析,那么首先肯定要有數(shù)據(jù)對不對?這也正是我們這節(jié)課的主題:使用 Pandas 讀取數(shù)據(jù)文件。一般意義上的數(shù)據(jù)文件包括:TXT 文件,CSV 文件以及 Excel 文件,Pandas 庫中提供了簡潔而強大的方法可以快速從這些數(shù)據(jù)文件中讀取我們需要的數(shù)據(jù),進而對數(shù)據(jù)進行處理和分析。

2. 使用 Pandas 讀取 txt 數(shù)據(jù)文件

2.1 TXT 數(shù)據(jù)文件格式

TXT 文件是一種文本文件,里面存儲的數(shù)據(jù)格式每一行表示行數(shù)據(jù),列數(shù)據(jù)則是通過某種分隔符對一行的數(shù)據(jù)進行拆分的,下面是一個 TXT 數(shù)據(jù)文件舉例。

書名,作者,出版日期,價格
python從入門到實戰(zhàn),埃里克,2020,85
python數(shù)據(jù)分析,丹尼爾,2020,80
python爬蟲技術,李寧,2020,79
瘋狂python講義,李剛,2019,113
大數(shù)據(jù)處理,石宣化,2018,43
人工智能,史蒂芬,2018,97
深度學習,伊恩,2017,152
人工智能算法,杰弗瑞,2020,53
人工智能簡史,尼克,2017,24

我們新建了一個記事本文件命名為: pandasDataDemo.txt ,里面添加了一些人工智能相關的書名、作者名、出版日期和書的價格,這里我們使用的是 “,” 分割符進行分割列數(shù)據(jù)的。

2.2 read_csv()函數(shù)

read_csv() 函數(shù)為 Pandas 讀取 txt、csv 數(shù)據(jù)文件提供了強力的支持,該函數(shù)含有四五十個參數(shù),默認是 從文件、URL、文件新對象中加載帶有分隔符的數(shù)據(jù),默認分隔符是逗號。下面我們列舉出它最常用的幾個參數(shù)。

參數(shù)名稱 描述
filepath_or_buffer 可以是url,類型包括(http, ftp, s3和文件),比如上面我們 pandasDataDemo.txt 文件的位置為:C:\Users\13965\Documents\myFuture\IMOOC\pandasCourse-progress\data_source\pandasDataDemo.txt ,如果不指定類型,默認是 file 類型
sep 指定數(shù)據(jù)的分隔符,默認是 “,”
header 指定數(shù)據(jù)的從第幾行解析,默認是文件數(shù)據(jù)的第1行,header=0,如果不用文件中的某行作為列名,要寫上 header=None
names 指定列名,如 names=[‘A’,‘B’,‘C’,‘D’,‘E’]
nrows 指定數(shù)據(jù)文件中讀取多少行的數(shù)據(jù),從數(shù)據(jù)第一行開始
skiprows 指定忽略的行數(shù),從數(shù)據(jù)文件頭開始
skipfooter 指定忽略的行數(shù),從文件的尾部開始(c引擎不支持)
encoding 指定數(shù)據(jù)解析時,字符的集類型,通常指定為 “utf-8”
engine 指定數(shù)據(jù)分析的引擎,默認是 c,c 引擎雖然快但是 Python 引擎的功能更多。
na_filter 是否檢查缺失值(空字符串或者是空值),當數(shù)據(jù)文件較大時,并且很少有缺失值,設置 na_filter=False能有效的提升讀取的速度

2.3 read_csv() 函數(shù)的使用

我們這里自建了一個 pandasDataDemo.txt 數(shù)據(jù)文件,通過 Pandas 讀取該文件數(shù)據(jù),進行上述各項參數(shù)的詳細講解。

1. 讀取數(shù)據(jù)

首先這里我們通過默認的文件讀取類型,讀取我們的 pandasDataDemo.txt 數(shù)據(jù)文件

# 導入pandas包
import pandas as pd
# 指定導入的文件地址 默認是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/pandasDataDemo.txt"
data = pd.read_csv(data_path)
print(data)

# --- 輸出結果 ---
            書名   作者  出版日期   價格
0  python從入門到實戰(zhàn)  埃里克  2020   85
1    python數(shù)據(jù)分析  丹尼爾  2020   80
2    python爬蟲技術   李寧  2020   79
3    瘋狂python講義   李剛  2019  113
4         大數(shù)據(jù)處理  石宣化  2018   43
5          人工智能  史蒂芬  2018   97
6          深度學習   伊恩  2017  152
7        人工智能算法  杰弗瑞  2020   53
8        人工智能簡史   尼克  2017   24

可以看到輸出結果數(shù)據(jù)內容和我們 TXT 中的數(shù)據(jù)一樣,在數(shù)據(jù)的格式上進行了行和列的解析,并自動生成了行索引 0-8,共 9 行數(shù)據(jù)。

2. 參數(shù) sep

sep 參數(shù)的作用是指定數(shù)據(jù)的分隔符,默認是 “,”。我們首先將 pandasDataDemo.txt 中的數(shù)據(jù)列改成以 “=” 進行分割:

書名=作者=出版日期=價格
python從入門到實戰(zhàn)=埃里克=2020=85
python數(shù)據(jù)分析=丹尼爾=2020=80
python爬蟲技術=李寧=2020=79
瘋狂python講義=李剛=2019=113
大數(shù)據(jù)處理=石宣化=2018=43
人工智能=史蒂芬=2018=97
深度學習=伊恩=2017=152
人工智能算法=杰弗瑞=2020=53
人工智能簡史=尼克=2017=24

接下來我們通過 sep 設置解析列的分隔符:

# 導入pandas包
import pandas as pd
# 指定導入的文件地址 默認是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/pandasDataDemo.txt"
# 這里我們傳入?yún)?shù) sep
data = pd.read_csv(data_path,sep="=")
print(data)

# --- 輸出結果 ---
             書名   作者  出版日期   價格
0  python從入門到實戰(zhàn)  埃里克  2020   85
1    python數(shù)據(jù)分析  丹尼爾  2020   80
2    python爬蟲技術   李寧  2020   79
3    瘋狂python講義   李剛  2019  113
4         大數(shù)據(jù)處理  石宣化  2018   43
5          人工智能  史蒂芬  2018   97
6          深度學習   伊恩  2017  152
7        人工智能算法  杰弗瑞  2020   53
8        人工智能簡史   尼克  2017   24

通過指定 sep 參數(shù)將數(shù)據(jù)以 “=” 進行各列的分割。

3. 參數(shù) header

指定數(shù)據(jù)的解析,從哪一行開始,指定的這一行將默認的作為列索引。

# 導入pandas包
import pandas as pd
# 指定導入的文件地址 默認是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/pandasDataDemo.txt"
# 這里我們傳入?yún)?shù) header,指定從第4行開始解析
data = pd.read_csv(data_path,sep="=",header=3)
print(data)

# --- 輸出結果 ---
   python爬蟲技術   李寧  2020   79    #該行數(shù)據(jù)在源文件中是  第4行
0  瘋狂python講義   李剛  2019  113
1       大數(shù)據(jù)處理  石宣化  2018   43
2        人工智能  史蒂芬  2018   97
3        深度學習   伊恩  2017  152
4      人工智能算法  杰弗瑞  2020   53
5      人工智能簡史   尼克  2017   24

輸出解析:這里可以看到,我們參數(shù) header 傳的是 3,輸出結果的第一行為“python 爬蟲技術 李寧 2020 79”,在源數(shù)據(jù)中是第4行數(shù)據(jù),因為 Pandas 解析數(shù)據(jù)的行數(shù)是從0下標開始的,并且將第4行默認作為列索引的值。

如果不使用數(shù)據(jù)中的某行作為列名,要聲明 header=None ,Pandas 會默認以數(shù)字編號為各列名稱。

# 導入pandas包
import pandas as pd
# 指定導入的文件地址 默認是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/pandasDataDemo.txt"
# 這里我們傳入?yún)?shù) header=None
data = pd.read_csv(data_path,sep="=",header=None)
print(data)

# --- 輸出結果 ---
              0    1     2    3
0            書名   作者  出版日期   價格
1  python從入門到實戰(zhàn)  埃里克  2020   85
2    python數(shù)據(jù)分析  丹尼爾  2020   80
3    python爬蟲技術   李寧  2020   79
4    瘋狂python講義   李剛  2019  113
5         大數(shù)據(jù)處理  石宣化  2018   43
6          人工智能  史蒂芬  2018   97
7          深度學習   伊恩  2017  152
8        人工智能算法  杰弗瑞  2020   53
9        人工智能簡史   尼克  2017   24

4. 參數(shù) names

通過該參數(shù),我們可以為解析的數(shù)據(jù),添加列索引值。

# 導入pandas包
import pandas as pd
# 指定導入的文件地址 默認是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/pandasDataDemo.txt"
# 這里我們傳入?yún)?shù) names,傳入列名稱
data = pd.read_csv(data_path,sep="=",header=None,names=["AA","BB","CC","DD"])
print(data)

# --- 輸出結果 ---
             AA   BB    CC   DD
0            書名   作者  出版日期   價格
1  python從入門到實戰(zhàn)  埃里克  2020   85
2    python數(shù)據(jù)分析  丹尼爾  2020   80
3    python爬蟲技術   李寧  2020   79
4    瘋狂python講義   李剛  2019  113
5         大數(shù)據(jù)處理  石宣化  2018   43
6          人工智能  史蒂芬  2018   97
7          深度學習   伊恩  2017  152
8        人工智能算法  杰弗瑞  2020   53
9        人工智能簡史   尼克  2017   24

輸出解析:通指定 names 的值,我們看到輸出中列名稱已經(jīng)變成我們指定的 AA,BB,CC,DD了。

5. 參數(shù) nrows

指定解析數(shù)據(jù)的行數(shù):

# 導入pandas包
import pandas as pd
# 指定導入的文件地址 默認是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/pandasDataDemo.txt"
# 這里我們傳入?yún)?shù) nrows
data = pd.read_csv(data_path,sep="=",nrows=3)
print(data)

# --- 輸出結果 ---
             書名   作者  出版日期  價格
0  python從入門到實戰(zhàn)  埃里克  2020  85
1    python數(shù)據(jù)分析  丹尼爾  2020  80
2    python爬蟲技術   李寧  2020  79

輸出解析:這里可以看到輸出結果,包含了數(shù)據(jù)文件中的四行,而不是 3 行數(shù)據(jù),這是因為默認的數(shù)據(jù)的第一行解析為列索引后,然后再進行 3 行數(shù)據(jù)的解析。

Tips:read_csv() 函數(shù)解析數(shù)據(jù)的邏輯為,根據(jù)里面參數(shù)設置,逐行的去解析文件中的數(shù)據(jù),如果不指定 names,會先把第一行的數(shù)據(jù)解析為 列索引,然后再去根據(jù)條件,繼續(xù)向下解析。

下面我們通過設置 names 的值(或者設置 names=None),并傳入解析的 nrows 數(shù)量,看一下輸出結果:

import pandas as pd
# 指定導入的文件地址 默認是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/pandasDataDemo.txt"
# 這里我們傳入?yún)?shù) nrows 和 names
data = pd.read_csv(data_path,sep="=",nrows=3,names=["AA","BB","CC","DD"])
print(data)

# --- 輸出結果 ---
             AA   BB    CC  DD
0            書名   作者  出版日期  價格
1  python從入門到實戰(zhàn)  埃里克  2020  85
2    python數(shù)據(jù)分析  丹尼爾  2020  80

輸出解析:可以看到這里的 3 行正是我們數(shù)據(jù)文件中的前三行數(shù)據(jù)。

6. 參數(shù) skiprows

解析數(shù)據(jù),從數(shù)據(jù)開始忽略多少行開始解析:

# 導入pandas包
import pandas as pd
# 指定導入的文件地址 默認是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/pandasDataDemo.txt"
# 這里我們傳入?yún)?shù) skiprows
data = pd.read_csv(data_path,sep="=",skiprows=5)
print(data)

# --- 輸出結果 ---
    大數(shù)據(jù)處理  石宣化  2018   43
0    人工智能  史蒂芬  2018   97
1    深度學習   伊恩  2017  152
2  人工智能算法  杰弗瑞  2020   53
3  人工智能簡史   尼克  2017   24

輸出解析:這里可以看到數(shù)據(jù)在忽略了 5 行之后,將第 6 行數(shù)據(jù)解析為列名稱,繼續(xù)向下進行數(shù)據(jù)的解析。

7. 參數(shù) skipfooter ,encoding ,engine

skipfooter 參數(shù):解析數(shù)據(jù),忽略從后向前說多少條的數(shù)據(jù)行;

encoding 參數(shù):制定解析的編碼方式;

engine 參數(shù):指定解析的引擎類型;

# 導入pandas包
import pandas as pd
# 指定導入的文件地址 默認是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/pandasDataDemo.txt"
# 這里我們傳入?yún)?shù) skiprows
data = pd.read_csv(data_path,sep="=",skipfooter=7)
print(data)

# --- 輸出結果 ---
               涔﹀悕   浣滆??  鍑虹増鏃ユ湡  浠鋒牸
0  python浠庡叆闂ㄥ埌瀹炴垬  鍩冮噷鍏?    2020   85
1     python鏁版嵁鍒嗘瀽  涓瑰凹灝?    2020   80
<ipython-input-7-44f2a64e80bb>:6: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.
  data = pd.read_csv(data_path,sep="=",skipfooter=7)

輸出解析:這里可以看到輸出結果存在的問題,首先根據(jù)提示可以看出是 c 引擎不支持 skipfooter 的解析;其實是存在中文亂碼的問題,為了解決這兩個問題,我們通過 encoding 和 engine 分別制定編碼方式和引擎類型。

# 導入pandas包
import pandas as pd
# 指定導入的文件地址 默認是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/pandasDataDemo.txt"
# 這里我們傳入?yún)?shù) skiprows,engine,encoding
data = pd.read_csv(data_path,sep="=",skipfooter=7, engine='python',encoding='utf-8')
print(data)

# --- 輸出結果 ---
             書名   作者  出版日期  價格
0  python從入門到實戰(zhàn)  埃里克  2020  85
1    python數(shù)據(jù)分析  丹尼爾  2020  80

輸出解析:這里我們通過指定編碼 encoding=‘utf-8’ 和解析引擎 engine=‘python’ ,可以看到修復了上面存在的問題,并且看到結果是忽略了數(shù)據(jù)的后7行,只解析了前 3 行數(shù)據(jù)。

Tips:所謂引擎,最通俗的理解就是動力的來源,我們這里提到的 C 引擎和 Python 引擎,主要是指在 Pandas 解析數(shù)據(jù)時,解析函數(shù)最底層主要運行程序的編寫語言,在使用這兩個解析器引擎時,C引擎的速度更快,但是 Python 引擎的功能更多更齊全。

8. 參數(shù) na_filter

該參數(shù)可配置解析文件時是否檢查(空字符串或者是空值),如果一個文件比較大的話,指定 na_filter 能有效的提高解析數(shù)據(jù)的速度:

首先我們將源數(shù)據(jù)最后兩行的作者這一列刪掉內容,如下所示:

書名=作者=出版日期=價格
python從入門到實戰(zhàn)=埃里克=2020=85
python數(shù)據(jù)分析=丹尼爾=2020=80
python爬蟲技術=李寧=2020=79
瘋狂python講義=李剛=2019=113
大數(shù)據(jù)處理=石宣化=2018=43
人工智能=史蒂芬=2018=97
深度學習=伊恩=2017=152
人工智能算法==2020=53
人工智能簡史==2017=24

針對缺失值,read_csv() 函數(shù)默認是將缺失值解析后,展示為 NaN ,這里我們看一下解析出來的數(shù)據(jù)結果:

# 導入pandas包
import pandas as pd
# 指定導入的文件地址 默認是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/pandasDataDemo.txt"
data = pd.read_csv(data_path,sep="=", engine='python',encoding='utf-8')
print(data)

# ---輸出結果---
             書名   作者  出版日期   價格
0  python從入門到實戰(zhàn)  埃里克  2020   85
1    python數(shù)據(jù)分析  丹尼爾  2020   80
2    python爬蟲技術   李寧  2020   79
3    瘋狂python講義   李剛  2019  113
4         大數(shù)據(jù)處理  石宣化  2018   43
5          人工智能  史蒂芬  2018   97
6          深度學習   伊恩  2017  152
7        人工智能算法  NaN  2020   53
8        人工智能簡史  NaN  2017   24      # 這里看到最后良好的作者都解析為 NaN

下面我們在 read_csv() 函數(shù)中,加入 na_filter=False屬性:

# 導入pandas包
import pandas as pd
# 指定導入的文件地址 默認是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/pandasDataDemo.txt"
# 這里我們傳入?yún)?shù) na_filter
data = pd.read_csv(data_path,sep="=",na_filter=False, engine='python',encoding='utf-8')
print(data)

# ---輸出結果---
             書名   作者  出版日期   價格
0  python從入門到實戰(zhàn)  埃里克  2020   85
1    python數(shù)據(jù)分析  丹尼爾  2020   80
2    python爬蟲技術   李寧  2020   79
3    瘋狂python講義   李剛  2019  113
4         大數(shù)據(jù)處理  石宣化  2018   43
5          人工智能  史蒂芬  2018   97
6          深度學習   伊恩  2017  152
7        人工智能算法       2020   53
8        人工智能簡史       2017   24

輸出解析:這里可以看到,通過 na_filter=False 參數(shù)指定后,read_csv() 函數(shù)將不對缺失值進行解析。

3. Pandas 讀取csv數(shù)據(jù)文件

3.1 CSV數(shù)據(jù)文件

CSV 即 Comma Separate Values 是逗號分隔文件的縮寫,它是一種用來存儲數(shù)據(jù)的純文本文件,每一欄的數(shù)據(jù)是通過 “,” 進行分割的,每一行數(shù)據(jù)都以回車符結束。csv文件的創(chuàng)建方式有兩種:第一種是通過新建記事本,填寫好每行以 “,” 分列,回車結尾的數(shù)據(jù)保存后,將記事本的后綴名改為 .csv 即可;第二種是通過 Excel 創(chuàng)建 CSV 文件。

首先新建Excel表文件,打開進行編輯:

圖片描述

接下來我們將數(shù)據(jù)文件存儲為CSV格式:

圖片描述

我們將生成的 CSV 數(shù)據(jù) Demo.csv 數(shù)據(jù)文件,右鍵通過記事本打開,可以看到里面的數(shù)據(jù)格式如下:

編程語言,推出時間,主要創(chuàng)始人
java,1995年,James Gosling
python,1991年,Guido van Rossum
C,1972年,Dennis MacAlistair Ritchie
js,1995年,Brendan Eich
php,2012年,Rasmus Lerdorf
C++,1983年,Bjarne Stroustrup

3.2 CSV 數(shù)據(jù)文件的讀取

Pandas 讀取 CSV 文件用的也是 read_csv()函數(shù),解析數(shù)據(jù)是默認的使用 “,” 進行劃分列,當然對應的參數(shù)也是適用的,這里我們就不一一贅述,我們演示一下讀取 csv 文件數(shù)據(jù)。

# 導入pandas包
import pandas as pd
# 指定導入的文件地址 默認是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/CSV數(shù)據(jù)Demo.csv"
# 這里我們指定解析引擎為 python
data = pd.read_csv(data_path, engine='python')
print(data)

# ---輸出結果---
     編程語言   推出時間             主要創(chuàng)始人
0    java  1995年               James Gosling
1  python  1991年            Guido van Rossum
2       C  1972年  Dennis MacAlistair Ritchie
3      js  1995年                Brendan Eich
4     php  2012年              Rasmus Lerdorf
5     C++  1983年           Bjarne Stroustrup

4. Pandas 讀取 excel 數(shù)據(jù)文件

4.1 Excel數(shù)據(jù)文件

Excel 是我們比較常見的辦公文件之一,經(jīng)常用于數(shù)據(jù)的整理、分析和可視化方面的工作,具有行和列的數(shù)據(jù)格式,自身含有大量的數(shù)據(jù)處理和分析函數(shù),但是如果我們 Excel 的數(shù)據(jù)量比較大,他在數(shù)據(jù)的處理上就會很慢,甚至有打不開的情況發(fā)生,而 Pandas 不僅功能分析上比較強大,在速度上也遠遠優(yōu)于 Excel 的處理。下面將具體看一下 Pandas 是如何讀取 Excel 數(shù)據(jù)的,首先我們先創(chuàng)建一個 Excel 數(shù)據(jù)文件: excel 數(shù)據(jù)demo.xlsx:

圖片描述

4.2 read_excel() 函數(shù)

Pandas 提供了 read_excel() 函數(shù)用于 Excel 數(shù)據(jù)文件的讀取,并為其提供了很多的參數(shù)用于解析 Excel 數(shù)據(jù)的設置,接下來我們列舉一些該函數(shù)中常用的幾個參數(shù)設置:

參數(shù)名稱 描述
io 傳入 execl 文件的對象,字符串可能是一個 URL 包括的類型(http,ftp,s3和文件)
sheet_name 指定讀取第幾個 sheet 表,默認是第一個,sheet_name=None 可以讀取所有的 sheet
header 指定哪一行作為列名,如果不需要里面的行作為列名,要寫上 header = None
names 指定列名,如 names=[‘A’,‘B’,‘C’,‘D’,‘E’]

1. 首先,我們通過 read_excel() 的 io 將 “execl數(shù)據(jù)demo.xlsx ”中的數(shù)據(jù)解析出來:

# 導入pandas包
import pandas as pd
# 指定導入的文件地址 默認是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/execl數(shù)據(jù)demo.xlsx"
data = pd.read_excel(data_path)
print(data)

# --- 輸出結果 ---
     編程語言   推出時間              主要創(chuàng)始人
0    java  1995年               James Gosling
1  python  1991年            Guido van Rossum
2       C  1972年  Dennis MacAlistair Ritchie
3      js  1995年                Brendan Eich
4     php  2012年              Rasmus Lerdorf
5     C++  1983年           Bjarne Stroustrup

輸出解析:這里是將 Excel 中的第一個工作表的數(shù)據(jù)解析出來 Excel 中行和列分別解析為行數(shù)據(jù)和列數(shù)據(jù),默認第一行作為列名稱。

2. 參數(shù) sheet_name

該參數(shù)用于設置讀取 Excel 數(shù)據(jù)中的哪個工作表,值為工作表名稱,首先我們在 “execl數(shù)據(jù)demo.xlsx” 文件中新增一個工作表 Sheet2 ,數(shù)據(jù)的內容直接從工作表1 中復制,并為每一項數(shù)據(jù)添加 “_2” 作為區(qū)分:

圖片描述

首先我們通過設置 sheet_name=‘Sheet2’ 來讀取 Sheet2 中的數(shù)據(jù):

# 導入pandas包
import pandas as pd
# 指定導入的文件地址 默認是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/execl數(shù)據(jù)demo.xlsx"
# 這里我們傳入?yún)?shù) sheet_name
data = pd.read_excel(data_path,sheet_name='Sheet2')
print(data)

# --- 輸出結果 ---
編程語言_2   推出時間_2                       主要創(chuàng)始人_2
0    java_2  1995年_2               James Gosling_2
1  python_2  1991年_2            Guido van Rossum_2
2       C_2  1972年_2  Dennis MacAlistair Ritchie_2
3      js_2  1995年_2                Brendan Eich_2
4     php_2  1996年_2              Rasmus Lerdorf_2
5     C++_2  1997年_2           Bjarne Stroustrup_2

輸出解析:這里可以看到解析的數(shù)據(jù)為 Sheet2 中的數(shù)據(jù)內容。

接下來我們設置 sheet_name=None ,來解析所有工作表的數(shù)據(jù):

# 導入pandas包
import pandas as pd
# 指定導入的文件地址 默認是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/execl數(shù)據(jù)demo.xlsx"
# 這里我們傳入?yún)?shù) sheet_name
data = pd.read_excel(data_path,sheet_name=None)
print(data)

# --- 輸出結果 ---
{'Sheet1':      編程語言   推出時間                       主要創(chuàng)始人
0    java  1995年               James Gosling
1  python  1991年            Guido van Rossum
2       C  1972年  Dennis MacAlistair Ritchie
3      js  1995年                Brendan Eich
4     php  2012年              Rasmus Lerdorf
5     C++  1983年           Bjarne Stroustrup, 'Sheet2':      編程語言_2   推出時間_2                       主要創(chuàng)始人_2
0    java_2  1995年_2               James Gosling_2
1  python_2  1991年_2            Guido van Rossum_2
2       C_2  1972年_2  Dennis MacAlistair Ritchie_2
3      js_2  1995年_2                Brendan Eich_2
4     php_2  1996年_2              Rasmus Lerdorf_2
5     C++_2  1997年_2           Bjarne Stroustrup_2}

輸出解析:可以看到輸出結果是將 Sheet1 和 Sheet2 的數(shù)據(jù)都進行了解析,格式是字典形式,工作表名為 key,值是解析的工作表的數(shù)據(jù)值。

3. 參數(shù) header

header 參數(shù)用于指定哪一行作為列名:

# 導入pandas包
import pandas as pd
# 指定導入的文件地址 默認是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/execl數(shù)據(jù)demo.xlsx"
# 這里我們傳入?yún)?shù) header 
data = pd.read_excel(data_path,header =2)
print(data)

# ---輸出結果---
 python  1991年            Guido van Rossum
0      C  1972年  Dennis MacAlistair Ritchie
1     js  1995年                Brendan Eich
2    php  2012年              Rasmus Lerdorf
3    C++  1983年           Bjarne Stroustrup

輸出解析:這里可以看到將第二行的數(shù)據(jù)解析為列名,并從改行詳細繼續(xù)解析數(shù)據(jù)。

4. 參數(shù) names

names 用于手動傳入列名的值:

# 導入pandas包
import pandas as pd
# 指定導入的文件地址 默認是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/execl數(shù)據(jù)demo.xlsx"
# 這里我們傳入?yún)?shù) header 
data = pd.read_excel(data_path,names =["a1","a2","a3"])
print(data)

# ---輸出結果---
  a1     a2                          a3
0    java  1995年               James Gosling
1  python  1991年            Guido van Rossum
2       C  1972年  Dennis MacAlistair Ritchie
3      js  1995年                Brendan Eich
4     php  2012年              Rasmus Lerdorf
5     C++  1983年           Bjarne Stroustrup

輸出解析:這里手動傳入了列的名稱為 a1 , a2 , a3。

3.小結

本節(jié)課程我們主要學習了 Pandas 解析 TXT、CSV 、Execl 文件的數(shù)據(jù)方法,講到了 read_csv() ,read_execl() 兩個函數(shù),他們之間有很多方法參數(shù)是相同的,大家多加練習具體感受一下。本節(jié)課程的重點如下:

  • txt 、csv 、execl 各數(shù)據(jù)文件自身的格式特點;
  • read_csv() 函數(shù)具有的常用參數(shù)設置;
  • read_excel() 函數(shù)具有的常用參數(shù)設置。

圖片描述