Pandas之read_csv()函數中文詳解

從事數據分析工作,經常需要進行數據清洗,pandas庫是數據分析最常用的庫之一。本文根據官方文檔對pandas的read_csv()函數進行說明。read_csv()函數是用來讀取csv文件的內容進而轉化爲易於操作的數據結構dataframe的常用函數。具有十分強大的功能,可以傳入多種參數,下面就根據官方文檔以及自己的實踐,詳細介紹各個參數,對於不易理解的參數會附上示例代碼。

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, doublequote=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)

filepath_or_buffer:任何有效的字符串路徑。

有效的字符串路徑包括文件路徑對象類文件對象。文件路徑對象包括csv文件的絕對路徑、相對路徑和URL,如本地的文件路徑就可以寫成file://localhost/path/to/table.csv;類文件對象則是先對csv文件進行IO封裝,再使用read_csv()函數進行調用,比如說Python內置的open()函數。以下給出示例代碼。

from pandas import read_csv

# 文件路徑對象
result1 = read_csv('table.csv')  # 相對路徑
result2 = read_csv('E://demo/table.csv')  # 絕對路徑
result3 = read_csv('file://localhost/E://demo/table.csv')  # URL

# 類文件對象
f = open('table.csv')
result4 = read_csv(f)

sep:str,default ','.

一般csv默認逗號爲分隔符,如果想使用其他字符對csv文件進行分隔可以指定爲其他的字符,此外,還可以指定正則表達式爲分隔符。

delimiter:str,默認爲None。sep的別名。

header:int,list of int, default 'infer'.

指定DataFrame的某行爲列標籤,默認爲第一行,等同於header=0。如果header=1,則第二行選爲列標籤。特別的,如果header=None,則列名爲0,1,2,3......如果設置header=[0,1,2],則將0,1,2中的值組合爲列名。注意:header=0表示數據的第一行而不是文件的第一行,因爲有時我們會跳過空白行,此時header=0不會指定跳過的空白行作爲列標籤。

namesarray-like, optional.

可以將header設爲None然後傳入一個類數組結構自定義列標籤。

index_colint, str, sequence of int / str, or False, default None.

與header類似,指定列作爲Dataframe的行標籤,可以選擇多列組合爲行標籤。

usecolslist-like or callable.

可以選擇想要返回的列,可以按列數取,也可以按列名取。

squeezebool, default False.

如果參數數據只包含一列,則返回的是一個Series。

prefixbool, default True.

當header=None時給列標籤添加前綴。如:prefix='X',則列標籤爲['X1', 'X2', 'X3'......]。

mangle_dupe_colsbool, default True.

區分重複的列,示例如下:

# csv文件中的第一行爲['x', 'x', 'x']
file.columns == ['x', 'x', 'x']
# 如果mangle_dupe_cols是True
if mangle_dupe_cols is True:
    # dataframe的第一行是['x', 'x.1', 'x.2']
    dataframe.columns = ['x', 'x.1', 'x.2']
# 如果mangle_dupe_cols是False
else:
    # dataframe的第一行是['x'],x對應csv文件中的第三列,因爲後面的列會將前面的列覆蓋掉
    dataframe.columns = ['x']

dtypeType name or dict of column -> type.

設置數據類型,可以整個data設置爲string,也可以按列設置。當converters函數被指定,則會優先使用converters中指定的數據類型。示例如下:

from pandas import read_csv

# 爲整個data集指定數據類型
read_csv('table.csv', dtype=str)
# 爲指定列設置數據類型
read_csv('table.csv', dtype={'r1': str, 'r2': int})

convertersdict.

爲指定列設置數據類型,Keys可以是字符串(列名),也可以是整型(列的位置)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章