<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一個(gè)參數(shù)一張Excel表,玩轉(zhuǎn)Pandas的read_excel()表格讀取

          共 4079字,需瀏覽 9分鐘

           ·

          2020-08-21 17:28

          作者 |?黃偉呢
          來(lái)源 |?數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)之美

          我覺(jué)得很有必要講述這個(gè)文章,進(jìn)行數(shù)據(jù)處理的第一步就是Python數(shù)據(jù)讀取。但是你可能沒(méi)想到,在進(jìn)行數(shù)據(jù)讀取的同時(shí),我們其實(shí)可以配合相關(guān)參數(shù)做很多事兒,這對(duì)于后續(xù)的數(shù)據(jù)處理都是極其有幫助。

          read_excel()函數(shù)和read_csv()函數(shù),在參數(shù)上面有很多相同點(diǎn),因此我就以read_excel()函數(shù)為例,進(jìn)行詳細(xì)的說(shuō)明。



          1)sheet_name參數(shù)




          • 含義:選擇要讀取的sheet表;

          • sheet_name=0表示默認(rèn)讀取第一個(gè)sheet表,等同于sheet_name=“sheet名稱(chēng)”;

          • sheet_name=[“sheet名”,0]會(huì)返回一個(gè)字典,然后可以利用鍵獲取每一個(gè)sheet表中的數(shù)據(jù);

          • sheet_name=None也會(huì)返回一個(gè)字典,但是會(huì)返回全部的sheet表;

          ①?sheet_name=0和sheet_name="Sheet1"
          #?下面這兩個(gè)讀取方式等同。
          #df2?=?pd.read_excel("readexcel.xlsx",sheet_name=0)
          df2?=?pd.read_excel("readexcel.xlsx",sheet_name="Sheet1")
          df2


          結(jié)果如下:


          ②?sheet_name=[“sheet名”,0]
          df2?=?pd.read_excel("readexcel.xlsx",sheet_name=[0,1])
          df2


          結(jié)果如下:
          接著,我們可以使用鍵值對(duì)的方式,獲取每個(gè)sheet表中的數(shù)據(jù)。
          注:關(guān)于sheet_name=None效果同上,只不過(guò)會(huì)返回所有的sheet表中的數(shù)據(jù)。


          2)header參數(shù)

          • 含義:指定某一行作為表頭;
          • header=None專(zhuān)門(mén)針對(duì)沒(méi)有表頭的表,這也是默認(rèn)值;
          • header=1指定第一行作為表頭;
          • header=[]主要針對(duì)復(fù)合表頭的情況;
          ①?header=None
          df3?=?pd.read_excel("header.xlsx",header=None)
          df3


          結(jié)果如下:


          ② ?header=1
          df3?=?pd.read_excel("header.xlsx",sheet_name=2,header=1)?
          df3


          結(jié)果如下:


          ③?header=[]
          df3?=?pd.read_excel("header.xlsx",sheet_name=3,header=[0,1],index_col=0)?
          df3


          結(jié)果如下:
          注意:上述用到了一個(gè)index_col參數(shù),這個(gè)參數(shù)用于指定作為行索引的列,我就不詳細(xì)舉例了,看看下圖。


          3)usecols參數(shù)

          • 含義:選擇讀取一張表中的指定列;
          • usecols=None也是默認(rèn)情況,表示讀取所有列;
          • usecols=[A,C]表示只選取A列和C列。usecols=[A,C:E]表示選擇A列,C列、D列和E列;
          • usecols=[0,2]表示只選擇第一列和第三列;
          • usecols=["列名1","列名2"...]這也是推薦使用的一種寫(xiě)法;
          ①?usecols=None
          df4?=?pd.read_excel("usecols.xlsx",usecols=None)?#?默認(rèn)
          df4


          結(jié)果如下:


          ②?usecols=[A,C]
          df4?=?pd.read_excel("usecols.xlsx",usecols="A,C")?
          df4


          結(jié)果如下:


          ③?usecols=[A,C:D]
          df4?=?pd.read_excel("usecols.xlsx",usecols="A,C:D")?
          df4


          結(jié)果如下:


          ④?usecols=[0,2]
          df4?=?pd.read_excel("usecols.xlsx",usecols=[0,2])?
          df4


          結(jié)果如下:


          ⑤?usecols=["列名1","列名2"...]


          這種方式照說(shuō)是沒(méi)有任何問(wèn)題的,但是在我這邊運(yùn)行總是無(wú)結(jié)果,我很納悶,大家可以下去試試。


          4)names參數(shù)

          • 含義:如果表中沒(méi)有表頭,可以用這個(gè)參數(shù)添加一個(gè)標(biāo)題。如果表中有表頭,可以用這個(gè)參數(shù)修改標(biāo)題。
          names?=?["月份","語(yǔ)文","英語(yǔ)"]
          df6?=?pd.read_excel("names.xlsx",header=None,names=names)?
          df6


          結(jié)果如下:


          5)dtype參數(shù)

          • 含義:讀取數(shù)據(jù)時(shí),設(shè)置每一列的數(shù)據(jù)類(lèi)型(重要);
          • dtype={}傳入一個(gè)字典,類(lèi)似于{"列名":"類(lèi)型"};
          df7?=?pd.read_excel("dtype.xlsx")
          df7.dtypes
          ------------------------------------------------------
          df7?=?pd.read_excel("dtype.xlsx",dtype={"年齡":"str"})
          df7.dtypes


          結(jié)果如下:


          6)parse_dates參數(shù)

          • 含義:指定將哪些列,解析為日期格式;
          • parse_dates=True是專(zhuān)門(mén)用于將行索引,解析為日期格式;
          • parse_dates=[0,1,2,3,4]和parse_dates=["列名1","列名2","列名3","列名4"],都是將指定列一起解析為日期格式;
          • parse_dates=[[1,2,3]]和parse_dates=[["年","月","日"]],都是將多個(gè)列,解析為單個(gè)日期列;
          • parse_dates={"日期":[1,2,3]}不僅將多個(gè)日期列解析為單個(gè)日期列,同時(shí)還為這一列命名;
          ①?parse_dates=True
          df8?=?pd.read_excel("parse_dates",index_col=2,parse_dates=True)
          df8.index


          結(jié)果如下:


          ②?parse_dates=[0,1]和parse_dates=["列名1","列名2"]
          df8?=?pd.read_excel("parse_dates",parse_dates=[0,1,2,3,4])
          df8.dtypes
          #?這個(gè)代碼效果同上
          df8?=?pd.read_excel("parse_dates.xlsx",
          ????????????????????parse_dates=["數(shù)值日期1","文本日期2","文本日期3","文本日期4","文本日期5"])


          結(jié)果如下:


          ③?parse_dates=[[1,2,3]]和parse_dates=[["年","月","日"]]
          #df8?=?pd.read_excel("parse_dates.xlsx",sheet_name="Sheet2",parse_dates=[["年","月","日"]])
          df8?=?pd.read_excel("parse_dates.xlsx",sheet_name="Sheet2",parse_dates=[[1,2,3]])
          df8


          結(jié)果如下:


          ④?parse_dates={"日期":[1,2,3]}
          df8?=?pd.read_excel("parse_dates.xlsx",sheet_name="Sheet2",parse_dates={"日期":[1,2,3]})
          df8


          結(jié)果如下:


          7)date_parser參數(shù)
          • 含義:利用lambda函數(shù),將某個(gè)字符串列,解析為日期格式;
          • 一般是配合parse_dates參數(shù),一起使用;
          df9?=?pd.read_excel("date_parser.xlsx",parse_dates=[1],
          ????????????????????date_parser=lambda?x:?pd.to_datetime(x,format="%Y年%m月%d"))
          print(df9.dtypes)
          df9


          結(jié)果如下:


          8)na_values參數(shù)

          • 含義:用于將某些特定的值,解析為NaN值,然后便于我們后面做缺失值的處理;
          • na_values=”值1“表示將所有數(shù)據(jù)中值1全部替換為NaN;
          • na_values=[”值1“,"值2"]表示將所有數(shù)據(jù)中值1、值2全部替換為NaN;
          • na_values={"列1":[”值1“,"值2"]}表示將第一列中所有的值1、值2全部替換為NaN;
          ①?na_values=”值1“
          df10?=?pd.read_excel("na_values.xlsx",na_values="?")
          df10


          結(jié)果如下:


          ②?na_values=[”值1“,"值2"]
          df10?=?pd.read_excel("na_values.xlsx",na_values=["a","0"])
          df10


          結(jié)果如下:


          ③?na_values={"列1":[”值1“,"值2"]}
          #??只替換某一列中的某些值為NaN
          df10?=?pd.read_excel("na_values.xlsx",na_values={"列2":["0","?"]})
          df10


          結(jié)果如下:


          9)converters參數(shù)
          • 含義:對(duì)某一列使用Lambda函數(shù),進(jìn)行某種運(yùn)算;
          • 例如:converters={"工資":lambda x: x + 1000};
          df11?=?pd.read_excel("converters.xlsx",
          ?????????????????????converters={"地址":lambda?x:?"中國(guó)"+x,"工資":lambda?x:?x?+?1000})
          df11


          結(jié)果如下:
          戀習(xí)Python

          關(guān)注戀習(xí)Python,Python都好練

          推薦閱讀:


          華為鴻蒙手機(jī)終于要來(lái)了!App生態(tài)已解決,網(wǎng)友:炸了!

          適合 Python 入門(mén)的 8 款強(qiáng)大工具!

          Python 代碼便利并行,這個(gè)操作秀??!

          你的pyc文件,泄露了你的秘密!

          好文章,我在看??

          瀏覽 37
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  俺去也影院 | 免费观看日批视频 | 美女操逼的网站 | 高清久久无码视频 | 欧美日韩国产免费电影 |