pandas21 讀csv檔案read_fwf讀固定寬度資料(詳細 tcy)
阿新 • • 發佈:2018-12-29
讀固定寬度資料 2018/12/27
目錄: 第1部分:csv文字檔案讀寫 pandas 讀csv檔案read_csv(1.文字讀寫概要)https://mp.csdn.net/postedit/85289371 pandas 讀csv檔案read_csv(2.read_csv引數介紹)https://mp.csdn.net/postedit/85289928 pandas 讀csv檔案read_csv(3.dtypes指定列資料型別)https://mp.csdn.net/postedit/85290575 pandas 讀csv檔案read_csv(4.to_csv文字資料寫)https://mp.csdn.net/postedit/85290962 pandas 讀csv檔案read_csv(5.文字資料讀寫例項)https://mp.csdn.net/postedit/85291123 pandas 讀csv檔案read_csv(6.命名和使用列)https://mp.csdn.net/postedit/85291430 pandas 讀csv檔案read_csv(7.索引)https://mp.csdn.net/postedit/85291658 pandas 讀csv檔案read_csv(8.方言和分隔符)https://mp.csdn.net/postedit/85291994 pandas 讀csv檔案read_csv(9.浮點轉換和NA值)https://mp.csdn.net/postedit/85292391 pandas 讀csv檔案read_csv(10.註釋和空行)https://mp.csdn.net/postedit/85292609 pandas 讀csv檔案read_csv(11.日期時間處理) https://mp.csdn.net/postedit/85292925 pandas 讀csv檔案read_csv(12.迭代和塊)https://mp.csdn.net/postedit/85293639 pandas 讀csv檔案read_csv(13.read_fwf讀固定寬度資料)https://mp.csdn.net/postedit/85294010 第2部分: pandas hdf檔案讀寫簡要https://mp.csdn.net/postedit/85294299 pandas excel讀寫簡要https://mp.csdn.net/postedit/85294545 第3部分: python中csv模組用法tcy https://mp.csdn.net/postedit/85228189 pandas讀csv檔案read_csv錯誤解決辦法7種https://mp.csdn.net/postedit/85228808 pandas to_string用法https://mp.csdn.net/postedit/85294935
函式:
pd.read_fwf(filepath_or_buffer, colspecs='infer', widths=None, **kwds) 用途: # 將固定寬度格式化的行表讀入DataFrame;支援迭代或中斷檔案分塊 引數: # 函式引數read_fwf與read_csv大致相同,帶有兩個額外引數,delimiter引數的用法不同 filepath_or_buffer:str 含路徑的檔名 # read()方法物件如檔案控制代碼或StringIO # URL:方案包括http,ftp,s3和檔案。對於檔案URL,需要主機。如本地檔案://localhost/path/to/table.csv colspecs:元祖列表或'infer'#給出固定寬度範圍 #如[(1,7),(10,22),...]每個欄位為半開區間即[int,int) #字串值'infer'可用於指示解析器嘗試檢測前100行的列規格 width:int列表 #欄位寬度列表,如果間隔是連續的用於代替'colspecs' delimiter:str,預設''+'' #要考慮作為固定寬度檔案中的填充字元的字元。 #用於指定欄位的填充字元例如不是空格用'〜' 返回: # DataFrame或TextParser
例項1:colspecs指定欄位位置
# 固定寬度資料檔案: # 位置1 6 11 20 24 33 37 43 data=' id8141 360.242940 149.910199 11950.7\n' \ ' id1594 444.953632 166.985655 11788.4\n' \ ' id1849 364.136849 183.628767 11806.2\n' \ ' id1230 413.836124 184.375703 11916.8\n' \ ' id1948 502.953953 173.237159 12468.3' colspecs = [(1, 7), (11, 21), (24, 34), (37, 44)]#欄位嚴格的位置 pd.read_fwf(pd.io.common.StringIO(data), colspecs=colspecs, header=None, index_col=0) 1 2 3 0 id8141 360.242940 149.910199 11950.7 id1594 444.953632 166.985655 11788.4 id1849 364.136849 183.628767 11806.2 id1230 413.836124 184.375703 11916.8 id1948 502.953953 173.237159 12468.3 colspecs = [(0, 7), (10, 21), (23, 34), (36, 44)] #欄位前後可以包含一些空格 df = pd.read_fwf(pd.io.common.StringIO(data), colspecs=colspecs, header=None, index_col=0)#結果同上:
例項2:widths指定欄位長度
# Widths are a list of integers
from io import StringIO
widths = [7, 14, 13, 10] #必須將資料前空白數量包含進來
pd.read_fwf(StringIO(data), widths=widths, header=None)
0 1 2 3
0 id8141 360.242940 149.910199 11950.7
1 id1594 444.953632 166.985655 11788.4
2 id1849 364.136849 183.628767 11806.2
3 id1230 413.836124 184.375703 11916.8
4 id1948 502.953953 173.237159 12468.3
例項3:用前100行資料自動推斷資料
# 預設read_fwf嘗試colspecs使用檔案前100行來推斷檔案。
# 只能在列對齊並且delimiter分隔符為空格(預設)情況下執行
pd.read_fwf(StringIO(data), header=None, index_col=0)#結果同例1
# 指定列的資料型別
pd.read_fwf(StringIO(data), header=None, index_col=0).dtypes
1 float64
2 float64
3 float64
dtype: object
pd.read_fwf(StringIO(data), header=None, dtype={2: 'object'}).dtypes
0 object
1 float64
2 object
3 float64
dtype: object