1. 程式人生 > 其它 >padas讀取檔案的read_csv()函式使用方法

padas讀取檔案的read_csv()函式使用方法



  1 import pandas as pd
  2 pd.read_csv(filepath_or_buffer,header,parse_dates,index_col)
  3 引數:
  4 filepath_or_buffer:
  5 字串,或者任何物件的read()方法。這個字串可以是URL,有效的URL方案包括http、ftp、s3和檔案。可以直接寫入"檔名.csv"
  6 
  7 header:
  8 將行號用作列名,且是資料的開頭。
  9 注意當skip_blank_lines=True時,這個引數忽略註釋行和空行。所以header=0表示第一行是資料而不是檔案的第一行。
10 11 【注】:如果csv檔案中含有中文,該如何? 12 1、可修改csv檔案的編碼格式為unix(不能是windows)(用notepad++開啟修改) 13 2、df = pd.read_csv(csv_file, encoding="utf-8"),設定讀取時的編碼或 encoding="gbk" 14 3、在使用列名來訪問DataFrame裡面的資料時,對於中文列名,應該在列名前面加'u',表示後面跟的字串以unicode格式儲存,如下所示 15 print(df[u"經度(度)"]) 16 17 (1)、header=None 18 即指定原始檔案資料沒有列索引,這樣read_csv為其自動加上列索引{從0開始}
19 ceshi.csv原檔案內容: 20 c1,c2,c3,c4 21 a,0,5,10 22 b,1,6,11 23 c,2,7,12 24 d,3,8,13 25 e,4,9,14 26 27 df=pd.read_csv("ceshi.csv",header=None) 28 print(df) 29 結果: 30 0 1 2 3 31 0 c1 c2 c3 c4 32 1 a 0 5 10 33 2 b 1 6 11 34 3 c 2 7 12 35 4 d 3 8 13 36 5 e 4 9 14 37
38 (2)、header=None,並指定新的索引的名字names=seq序列 39 df=pd.read_csv("ceshi.csv",header=None,names=range(2,6)) 40 print(df) 41 結果: 42 2 3 4 5 43 0 c1 c2 c3 c4 44 1 a 0 5 10 45 2 b 1 6 11 46 3 c 2 7 12 47 4 d 3 8 13 48 5 e 4 9 14 49 50 51 (3)、header=None,並指定新的索引的名字names=seq序列;如果指定的新的索引名字的序列比原csv檔案的列數少,那麼就擷取原csv檔案的倒數列新增上新的索引名字 52 df=pd.read_csv("ceshi.csv",header=0,names=range(2,4)) 53 print(df) 54 結果: 55 2 3 56 c1 c2 c3 c4 57 a 0 5 10 58 b 1 6 11 59 c 2 7 12 60 d 3 8 13 61 e 4 9 14 62 63 64 (4)、header=0 65 表示檔案第0行(即第一行,索引從0開始)為列索引 66 df=pd.read_csv("ceshi.csv",header=0) 67 print(df) 68 結果: 69 c1 c2 c3 c4 70 0 a 0 5 10 71 1 b 1 6 11 72 2 c 2 7 12 73 3 d 3 8 13 74 4 e 4 9 14 75 76 (5)、header=0,並指定新的索引的名字names=seq序列 77 df=pd.read_csv("ceshi.csv",header=0,names=range(2,6)) 78 print(df) 79 結果: 80 2 3 4 5 81 0 a 0 5 10 82 1 b 1 6 11 83 2 c 2 7 12 84 3 d 3 8 13 85 4 e 4 9 14 86 注:這裡是把原csv檔案的第一行換成了range(2,6)並將此作為列索引 87 88 (6)、header=0,並指定新的索引的名字names=seq序列;如果指定的新的索引名字的序列比原csv檔案的列數少,那麼就擷取原csv檔案的倒數列新增上新的索引名字 89 df=pd.read_csv("ceshi.csv",header=0,names=range(2,4)) 90 print(df) 91 結果: 92 2 3 93 a 0 5 10 94 b 1 6 11 95 c 2 7 12 96 d 3 8 13 97 e 4 9 14 98 99 100 parse_dates: 101 布林型別值 or int型別值的列表 or 列表的列表 or 字典(預設值為 FALSE) 102 (1)True:嘗試解析索引 103 (2)由int型別值組成的列表(如[1,2,3]):作為單獨資料列,分別解析原始檔案中的1,2,3列 104 (3)由列表組成的列表(如[[1,3]]):將1,3列合併,作為一個單列進行解析 105 (4)字典(如{'foo':[1, 3]}):解析1,3列作為資料,並命名為foo 106 107 108 index_col: 109 int型別值,序列,FALSE(預設 None) 110 將真實的某列當做index(列的數目,甚至列名) 111 index_col為指定資料中那一列作為Dataframe的行索引,也可以可指定多列,形成層次索引,預設為None,即不指定行索引,這樣系統會自動加上行索引。 112 113 舉例: 114 df=pd.read_csv("ceshi.csv",index_col=0) 115 print(df) 116 結果: 117 c2 c3 c4 118 c1 119 a 0 5 10 120 b 1 6 11 121 c 2 7 12 122 d 3 8 13 123 e 4 9 14 124 表示:將第一列作為索引index 125 126 df=pd.read_csv("ceshi.csv",index_col=1) 127 print(df) 128 結果: 129 c1 c3 c4 130 c2 131 0 a 5 10 132 1 b 6 11 133 2 c 7 12 134 3 d 8 13 135 4 e 9 14 136 表示:將第二列作為索引index 137 138 139 df=pd.read_csv("ceshi.csv",index_col="c1") 140 print(df) 141 結果: 142 c2 c3 c4 143 c1 144 a 0 5 10 145 b 1 6 11 146 c 2 7 12 147 d 3 8 13 148 e 4 9 14 149 表示:將列名"c1"這裡一列作為索引index 150 【注】:這裡將"c1"這一列作為索引即行索引後,"c1"這列即不在屬於列名這類,即不能使用df['c1']獲取列值 151 【注】:read_csv()方法中header引數和index_col引數不能混用,因為header指定列索引,index_col指定行索引,一個DataFrame物件只有一種索引 152 153 squeeze: 154 布林值,預設FALSE 155 TRUE 如果被解析的資料只有一列,那麼返回Series型別。
轉載至:https://www.jianshu.com/p/ebb64a159104