1. 程式人生 > 實用技巧 >pandas的read_csv()和to_csv()使用方法

pandas的read_csv()和to_csv()使用方法

資料處理時經常會涉及csv讀寫操作,存在很多小tip,總結一下,方便使用。首先read_csv()是pandas的方法,to_csv()是DataFrame類的方法。

1. read_csv()

pandas.read_csv(
filepath_or_buffer, sep=',', delimiter=None, header='infer', names=None, 
index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, 
dtype=None, engine=None, converters=None, true_values=None, false_values=None, 
skipinitialspace
=False, skiprows=None, nrows=None, na_values=None, keep_default_na=True,
na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False,
iterator=False, chunksize=None, compression='infer', thousands=None, decimal=b'
.',
lineterminator=None, quotechar='"', quoting=0, escapechar=None, comment=None,
encoding=None, dialect=None, tupleize_cols=None, error_bad_lines=True,
warn_bad_lines=True, skipfooter=0, skip_footer=0, doublequote=True,
delim_whitespace
=False, as_recarray=None, compact_ints=None, use_unsigned=None,
low_memory
=True, buffer_lines=None, memory_map=False, float_precision=None )

引數特別多,挑幾個常用的總結一下

  • filepath_or_buffer:檔案所在處的路徑
pd.read_csv('C:/Users/My/Path/test.csv') #絕對位置
  • sep:指定分隔符,預設為逗號','
pd.read_csv('C:/Users/My/Path/test.csv',sep='?') #以?為分隔符,讀取csv檔案
  • delimiter:定界符,備選分隔符(如果指定該引數,則sep引數失效)
pd.read_csv('C:/Users/My/Path/test.csv',sep='?',delimiter=' ') #以空格作為分隔符讀取檔案,分隔符'?'失效
  • header:預設設定為0(即第一行作為表頭),如果沒有表頭的話,要修改引數,設定header=None
pd.read_csv('C:/Users/My/Path/test.csv',header=None) #讀出csv檔案無表頭
  • names:指定列的名稱,用列表表示。
pd.read_csv('C:/Users/My/Path/test.csv',names=['index','A','B']) #表頭中各列名字為index,A,B
  • index_col:指定哪一列資料作為行索引,可以是一列,也可以多列
pd.read_csv('C:/Users/My/Path/test.csv',index_col='A') #列為A的列作為行索引
  • prefix:給列名新增字首。
pd.read_csv('C:/Users/My/Path/test.csv',prefix='test') #當檔案無表頭,設定表頭中列名全都加上test字首,即test0,test1...
  • nrows:int, default None需要讀取的行數(從檔案頭開始算起)
pd.read_csv('C:/Users/My/Path/test.csv',nrows=10) #讀取10行資料
  • encoding:讀取檔案是使用的編碼方式
pd.read_csv('C:/Users/My/Path/test.csv',encoding='utf-8') 
  • skiprows:需要忽略的行數(從檔案開始處算起),或需要跳過的行號列表(從0開始),預設為None
pd.read_csv('C:/Users/My/Path/test.csv',skiprows=5)  #跳過前五行資料(包括表頭資料) 

2.DataFrame.to_csv()

DataFrame.to_csv(
path_or_buf=None, sep=', ', na_rep='',float_format=None, columns=None, 
header=True, index=True, index_label=None, mode='w', encoding=None, compression=None, 
quoting=None, quotechar='"', line_terminator='\n', chunksize=None, tupleize_cols=None, 
date_format=None, doublequote=True, escapechar=None, decimal='.')

引數相對少很多

  • path_or_buf:儲存檔案的路徑
df.to_csv('test.csv') #相對位置,儲存在os.getcwd()獲得的路徑下
df.to_csv('C:/Users/My/Path/test.csv') #絕對位置
  • sep:輸出檔案的欄位分隔符,預設為”,”
df.to_csv('C:/Users/My/Path/test.csv',sep='?')#使用?分隔需要儲存的資料,如果不寫,預設是,
  • na_rep:替換空值,預設為‘’
df.to_csv('C:/Users/My/Path/test.csv',na_rep='NA') #確實值儲存為NA,如果不寫,預設是空
  • float_format:浮點數格式
df.to_csv('C:/Users/My/Path/test.csv',float_format='%.2f') #保留兩位小數
  • cols:保留某列資料,預設為None
df.to_csv('C:/Users/think/Desktop/Result.csv',columns=['name']) #儲存索引列和name列
  • header:是否保留列名,預設為True
df.to_csv('C:/Users/My/Path/test.csv',header=0) #不儲存列名
  • index:是否保留行索引,預設為True
df.to_csv('C:/Users/My/Path/test.csv',index=False) #不儲存行索引
  • index_label:索引的列標籤,字串或序列,或False,預設為None
df.to_csv('C:/Users/My/Path/test.csv',index_label='Index') #行索引列名為'Index'
  • mode:str儲存模式:值為‘str’,預設“w”
df.to_csv('C:/Users/My/Path/test.csv',mode='a') #增量存入csv
  • encoding:輸出檔案中使用的編碼,預設為“UTF-8”
df.to_csv('C:/Users/My/Path/test.csv',encoding='utf_8_sig') #中文出現亂碼,改用utf_8_sig可解決