<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>

          手把手教你使用Pandas讀取結(jié)構(gòu)化數(shù)據(jù)

          共 4768字,需瀏覽 10分鐘

           ·

          2022-01-01 16:16

          導(dǎo)讀:Pandas是一個基于Numpy庫開發(fā)的更高級的結(jié)構(gòu)化數(shù)據(jù)分析工具,提供了Series、DataFrame、Panel等數(shù)據(jù)結(jié)構(gòu),可以很方便地對序列、截面數(shù)據(jù)(二維表)、面板數(shù)據(jù)進行處理。


          作者:張秋劍 張浩 周大川 常國珍
          來源:大數(shù)據(jù)DT(ID:hzdashuju)


          • DataFrame是我們常見的二維數(shù)據(jù)表,包含多個變量(列)和樣本(行),通常被稱為數(shù)據(jù)框。
          • Series是一個一維結(jié)構(gòu)的序列,包含指定的索引信息,可以被視作DataFrame中的一列或一行。其操作方法與DataFrame十分相似。
          • Panel是包含序列及截面信息的三維結(jié)構(gòu),通常被稱為面板數(shù)據(jù)。

          我們可通過限定時間ID和樣本ID獲得對應(yīng)的Series和DataFrame。

          由于這些對象的常用操作方法十分相似,因此本文主要使用DataFrame進行演示。


          01 讀取文件

          Pandas庫提供了便捷讀取本地結(jié)構(gòu)化數(shù)據(jù)的方法。這里主要以csv數(shù)據(jù)為例,read_csv函數(shù)可以讀取csv數(shù)據(jù),代碼如下:

          import pandas as pd
          csv = pd.read_csv('data/sample.csv')
          csv

          id name   scores
          0   1  小明    78.0
          1   2  小紅    87.0
          2   3  小白    99.0
          3   4  小青 99999.0
          4   5  小蘭     NaN

          按照慣例,Pandas會以pd為別名,以read_csv函數(shù)讀取指定路徑下的文件,然后返回一個DataFrame對象。如果在命令行中打印DataFrame對象,可讀性可能會略差一些;如果在Jupyter Notebook中打印的話,可讀性會大幅提升。

          打印出來的DataFrame包含索引(第一列),列名(第一行)及數(shù)據(jù)內(nèi)容(除第一行和第一列之外的部分)。

          此外,read_csv函數(shù)有很多參數(shù)可以設(shè)置,如下所示。

          • filepath_or_buffer csv文件的路徑
          • sep = ',' 分隔符,默認為逗號
          • header = 0 int類型,0代表第一行為列名,若設(shè)定為None將使用數(shù)值列名
          • names = [] list,重新定義列名,默認為None
          • usecols = [] list,定義讀取的列,設(shè)定后將縮短讀取數(shù)據(jù)的時間,并減小內(nèi)存消耗,適合讀取大量數(shù)據(jù),默認為None
          • dtype = {} dict,定義讀取列的數(shù)據(jù)類型,默認為None
          • nrows = None int類型,指定讀取數(shù)據(jù)的前n行,默認為None
          • na_values = ... str類型,list或dict,指定缺失值的填充值
          • na_filter = True bool類型,自動發(fā)現(xiàn)數(shù)據(jù)中的缺失值,默認值為True,若確定數(shù)據(jù)無缺失,可以設(shè)定值為False,以提高數(shù)據(jù)載入的速度
          • chunksize = 1000 int類型,分塊讀取,當(dāng)數(shù)據(jù)量較大時,可以設(shè)定分塊讀取的行數(shù),默認為None
          • encoding = 'utf-8' str類型,數(shù)據(jù)的編碼,Python3默認編碼為UTF-8,Python2默認編碼為ASCII

          Pandas除了可以直接讀取csv、excel、json、html等文件生成的DataFrame,也可以在列表、元組、字典等數(shù)據(jù)結(jié)構(gòu)中創(chuàng)建DataFrame。


          02 讀取指定行和指定列

          使用參數(shù)usecol和nrows讀取指定的列和前n行,這樣可以加快數(shù)據(jù)讀取速度。讀取原數(shù)據(jù)的兩列、兩行示例如下。

          csv = pd.read_csv('data/sample.csv',\
                            usecols=['id','name'],\
                            nrows=2#讀取'id'和'name'兩列,僅讀取前兩行
          csv

          id name
          0   1  小明
          1   2  小紅


          03 分塊讀取

          參數(shù)chunksize可以指定分塊讀取的行數(shù),并返回一個可迭代對象。這里,big.csv是一個4500行、4列的csv數(shù)據(jù),設(shè)定chunksize=900,分5塊讀取數(shù)據(jù),每塊900行,4個變量,如下所示:

          csvs = pd.read_csv('data/big.csv',chunksize=900)
          for i in csvs:
             print (i.shape)

          (9004)
          (9004)
          (9004)
          (9004)
          (9004)

          可以使用pd.concat函數(shù)讀取全部數(shù)據(jù):

          csvs = pd.read_csv('data/big.csv',chunksize=900)
          dat = pd.concat(csvs,ignore_index=True)
          dat.shape

          (45004)


          04 將不合理數(shù)據(jù)讀取為缺失值

          在數(shù)據(jù)sample.csv中,“小青”的分數(shù)中有的取值為99999,這里令其讀取為缺失值,操作如下:

          csv = pd.read_csv('data/sample.csv',
                            na_values='99999')
          csv

          id name  scores
          0   1  小明   78.0
          1   2  小紅   87.0
          2   3  小白   99.0
          3   4  小青    NaN
          4   5  小蘭    NaN


          05 以指定編碼方式讀取

          讀取數(shù)據(jù)時,亂碼情況經(jīng)常出現(xiàn)。這里需要先弄清楚原始數(shù)據(jù)的編碼形式,再以指定的編碼形式讀取,例如sample.csv編碼為UTF-8,這里以指定編碼(參數(shù)encoding)方式讀取。

          csv = pd.read_csv('data/sample.csv',
                            encoding='utf-8')
          csv

          id name   scores
          0   1  小明    78.0
          1   2  小紅    87.0
          2   3  小白    99.0
          3   4  小青 99999.0
          4   5  小蘭     NaN

          關(guān)于作者:張秋劍,就職于騰訊云金融拓展中心,從事微信財富營銷管理、數(shù)據(jù)中臺、AI應(yīng)用等解決方案拓展工作,研究方向包括數(shù)字化轉(zhuǎn)型、創(chuàng)新實踐等。
          張浩,曾任騰訊云金融首席架構(gòu)師和星環(huán)科技金融行業(yè)技術(shù)總監(jiān),主要從事大數(shù)據(jù)、人工智能、云計算、區(qū)塊鏈、聯(lián)邦學(xué)習(xí)等相關(guān)技術(shù)研發(fā)與產(chǎn)品設(shè)計,具有豐富的企業(yè)架構(gòu)設(shè)計、企業(yè)數(shù)字化戰(zhàn)略轉(zhuǎn)型運營與業(yè)務(wù)咨詢經(jīng)驗。
          周大川,就職于某中央金融企業(yè)金融科技研發(fā)中心,主要從事企業(yè)級數(shù)據(jù)平臺開發(fā)、核心業(yè)務(wù)平臺建設(shè)、AI賦能金融科技創(chuàng)新等工作,具有豐富的新一代金融業(yè)務(wù)系統(tǒng)建設(shè)經(jīng)驗。
          常國珍,曾任畢馬威咨詢大數(shù)據(jù)總監(jiān),具有近20年數(shù)據(jù)挖掘、精益數(shù)據(jù)治理、數(shù)字化運營咨詢經(jīng)驗,是金融信用風(fēng)險、反欺詐和反洗錢算法領(lǐng)域的專家。

          本文摘編自金融商業(yè)數(shù)據(jù)分析:基于Python和SAS》,經(jīng)出版方授權(quán)發(fā)布。(ISBN:9787111695837)

          《金融商業(yè)數(shù)據(jù)分析:基于Python和SAS》
          點擊上圖了解及購買
          轉(zhuǎn)載請聯(lián)系微信:DoctorData

          推薦語:騰訊云等資深數(shù)據(jù)架構(gòu)師、商業(yè)分析師20年經(jīng)驗,全流程講解金融數(shù)據(jù)分析思路、方法、技巧,快速入門到精通。


          劃重點??



          干貨直達??



          更多精彩??

          在公眾號對話框輸入以下關(guān)鍵詞
          查看更多優(yōu)質(zhì)內(nèi)容!

          讀書 | 書單 | 干貨 | 講明白 | 神操作 | 手把手
          大數(shù)據(jù) | 云計算 | 數(shù)據(jù)庫 | Python | 爬蟲 | 可視化
          AI | 人工智能 | 機器學(xué)習(xí) | 深度學(xué)習(xí) | NLP
          5G | 中臺 | 用戶畫像 數(shù)學(xué) | 算法 數(shù)字孿生

          據(jù)統(tǒng)計,99%的大咖都關(guān)注了這個公眾號
          ??
          瀏覽 110
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  人人草人人看人人摸 | 日本尤物在线免费观看 | 中文字幕在线免费观看视频 | 骚综合网 | 俩小伙3p老熟女露脸 |