程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Pandas.read_csv()函數及全部參數使用方法一文詳解+實例代碼

編輯:Python

目錄

前言

一、基礎語法與功能

二、參數說明和代碼演示

1.filepath_or_buffer

2.sep

3.delimiter

 4.header

 5.names

 6.index_col

7.usecols

 8.squeeze

9.prefix

 10.mangle_dupe_cols

11.dtype

 12.engine

13.converters

 14.true_values

15.false_values

16.skipinitialspace

17. skiprows

​編輯 18.skipfooter

 19.nrows

 20.na_values

 21.keep_default_na

22. na_filter

23.verbose

 24.skip_blank_lines

 25.parse_dates

 26.infer_datetime_format

 27.keep_date_col

 28.date_parser

29. dayfirst

 30.cache_dates

31.iterator

32.chunksize

33.compression

 34.thousands

35.decimal

36.lineterminator

 37.quotechar

38.quoting

39.doublequote

40.escapechar

41.comment

 42.encoding

43.encoding_errors

44.dialect

45. error_bad_lines

46.warn_bad_lines

47.on_bad_lines

 48.delim_whitespace

49.low_memory

50.memory_map

51.float_precision

52.storage_options

點關注,防走丟,如有纰漏之處,請留言指教,非常感謝



前言

Pandas常用作數據分析工具庫以及利用其自帶的DataFrame數據類型做一些靈活的數據轉換、計算、運算等復雜操作,但都是建立在我們獲取數據源的數據之後。因此作為讀取數據源信息的接口函數必然擁有其強大且方便的能力,在讀取不同類源或是不同類數據時都有其對應的read函數可進行先一步處理,這會減少我們相當大的一部分數據處理操作。每一個read()函數,作為一名數據分析師我個人認為都應該掌握且熟悉它對應的參數,相對應的read()函數博主已有三篇文章詳細解讀了read_json、read_excel和read_sql:

Pandas獲取SQL數據庫read_sql()函數及參數一文詳解+實例代碼

Pandas處理JSON文件read_json()一文詳解+代碼展示

Pandas中read_excel函數參數使用詳解+實例代碼

縱觀整個數據源路徑來看,最常用的數據存儲對象:SQL、JSON、EXCEL以及這次要詳解的CSV都遍及全了。 如果能夠懂得該函數參數的使用可以減少大量後續處理DataFrame數據結構的代碼,僅需要設置幾個read_csv參數就可實現,因此本篇文章初衷為詳細介紹並運用此函數來達到徹底掌握的目的。希望讀者看完能夠提出問題或者看法,博主會長期維護博客做及時更新,希望大家喜歡。 


這裡拿脫敏後的user_info.csv文件作為展示:

一、基礎語法與功能

read_csv基礎語法格式為:

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

可以看到參數是相當多的,比起read_excel、read_json和read_sql加起來還要多。說明了使用csv文件存儲數據的頻率是其他記錄數據文件的幾倍之高,因此關於csv文件的處理參數也會有如此之多。這是好事,等到我們將csv文件轉換為了DataFrame數據再處理時,就需要寫很多代碼去處理,提供了這麼多參數可以大大加快我們處理文件的效率。 

read_csv的基本功能就是將csv文件轉化為DataFrame或者是TextParser,還支持可選地將文件迭代或分解為塊。

import numpy as np
import pandas as pd
df_csv=pd.read_csv('user_info.csv')

二、參數說明和代碼演示

以下為官方文檔,文字實在是太多了推薦直接點目錄看:

pandas.read_csv

首先我們將逐個了解每個參數的功能和作用,在了解參數意義後再進行實例使用。

1.filepath_or_buffer

接受類型:{str, path object or file-like object}字符串(一般為文件名且在當前運行程序的目錄下才能讀取到)、文件路徑(一般推薦為絕對路徑)、或者為其他可引用的數據類型。如url,http這種類型。

此參數為指定讀入文件的路徑。可以接受任何有效的字符串路徑。字符串可以是URL。有效的URL包括http、ftp、s3、gs和文件。對於文件URL,本地文件可以是:file://localhost/path/to/table.csv.
如果要傳入路徑對象,pandas接受任何路徑。
對於類文件對象,我們使用read()方法引用對象,例如文件句柄(例如通過內置的open函數)或StringIO。

df_csv=pd.read_csv('user_info.csv')
df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv')
df_csv=pd.read_csv('C:\\Users\\10799\\test-python\\user_info.csv')

2.sep

接受類型{str, default ‘,’}

csv文件一般默認是用','來分隔每個字符串的,而sep就是指定分隔的符號是什麼類型。

如果sep為None,則C引擎無法自動檢測分隔符,但Python解析引擎可以,這意味著Python的內置嗅探器工具csv將使用後者並自動檢測分隔符。此外,長度超過1個字符且與“\s+”不同的分隔符將被解釋為正則表達式,並將強制使用Python解析引擎。請注意regex分隔符容易忽略引用的數據。regex正則表達式示例:“\r\t”。

df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',sep=',')
df_csv

 對於sep字符可以參照轉義字符:

轉義字符描述\(在行尾時)續行符\\反斜槓符號\‘單引號\”雙引號\a響鈴\b退格(Backspace)\e轉義\000空\n換行\v縱向制表符\t橫向制表符\r回車\f換頁\oyy八進制數yy代表的字符,例如:\o12代表換行\xyy十進制數yy代表的字符,例如:\x0a代表換行\other其它的字符以普通格式輸出
df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',sep='/t')

 這樣不再重復實驗,有興趣的大家可以自行嘗試。

3.delimiter

接受類型:{str, default None

sep的別名,可以設置為想要名字,沒有什麼很大的意義。

df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',delimiter=',')
df_csv

 4.header

接受類型:{int, list of int, None, default ‘infer’}整數、整數列表、None。默認為infer

指定要用作列名的行號,以及數據的開頭。默認行為是推斷列名:如果未傳遞任何名稱,則行為與header=0相同,並且從文件的第一行推斷列名,如果顯式傳遞列名,則行為與header=None相同。顯式傳遞header=0,以便能夠替換現有名稱。標題可以是整數列表,指定列上多索引的行位置,例如[0,1,3]。將跳過未指定的中間行(例如,跳過本例中的2)。請注意,如果skip_blank_lines=True,此參數將忽略注釋行和空行,因此header=0表示數據的第一行,而不是文件的第一行。

df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',header=1)

df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',header=[0,1,3])

這樣的話。第二例就會消失:

 

df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',header=None)

 5.names

接受類型:{array-like, optional}

指定要使用的列名列表。如果文件包含標題行,則應顯式傳遞header=0以覆蓋列名。此列表中不允許重復。

df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',
header=0,names=['id','time','name1','name2','name3','name4','name5','name6'])

 6.index_col

接受類型:{int, str, sequence of int / str, or False, optional}默認為None。

指定要用作DataFrame行標簽的列,以字符串名稱或列索引的形式給出。如果給定int/str序列,則使用多索引。
注意:index_col=False可用於強制pandas不使用第一列作為索引,例如,當您有一個格式錯誤的文件,每行末尾都有分隔符時。

df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',index_col='user_id')

df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',index_col=0)

 

 

df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',index_col=[1,'user_id'])

 當index_col為False時,將不指定索引列。

7.usecols

接受類型:{list-like or callable, optional}

返回列的子集。如果為列表形式,則所有元素必須是位置元素(即文檔列中的整數索引)或與用戶在名稱中提供的列名或從文檔標題行推斷的列名相對應的字符串。如果給定了names參數,則不考慮文檔標題行。例如,像usecols參數這樣的有效列表應該是[0、1、2]或['foo',bar',baz']。

指定的列表順序是不給予考慮的,與原csv文件的列原始順序一樣,因此usecols=[0,1]與[1,0]相同。如果可調用,將根據列名計算可調用函數,返回可調用函數計算為True的名稱。有效的可調用參數的一個示例是['AAA','BBB','DDD'中的lambda x:x.upper()。使用此參數可以加快解析時間並降低內存使用率。

df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',usecols=['age_month'])

 

df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',usecols=[0,2])

 

 

df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',
header=0,
names=['id','time','name1','name2','name3','name4','name5','name6'],
usecols=['id','name1'])

 

df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',
usecols=['age_month','first_order_time'])

 

 可見給定的列表但生成的DataFrame的順序是不會根據給的列表順序改變的。

 8.squeeze

接受類型:{bool, default False}

如果解析的數據只包含一列,則返回一個序列。

df_csv=pd.read_csv('user_info.csv',usecols=['age_month'],squeeze=True)

 

9.prefix

接受類型:{str, optional} 

無標題時添加到列號的前綴,例如“X”表示X0,X1。

df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',header=None,prefix='name')

 10.mangle_dupe_cols

接受類型:{bool, default True}

重復列將指定為“X”、“X.1”、“X.N”,而不是“X”…“X”。如果列中有重復的名稱,傳入False將導致數據被覆蓋。

df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',header=0,names=['id','time','name1','name2','name3','name4','name5','name6'],mangle_dupe_cols=False)
ValueError: Setting mangle_dupe_cols=False is not supported yet

設置為False時現在還不支持。

11.dtype

接受類型:{Type name or dict of column -> type, optional}

指定數據或列的數據類型。例如:{‘a’: np.float64, ‘b’: np.int32, ‘c’: ‘Int64’} 。

將str或object與適當的na_values設置一起使用,以保留而不是解釋數據類型。如果指定了轉換器,則將應用INSTEAD而不是數據類型轉換。

df_csv=pd.read_csv('user_info.csv')
df_csv.dtypes

df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',dtype={'user_id':'str'})
df_csv.dtypes

 

 12.engine

接受類型:{‘c’, ‘python’, ‘pyarrow’}

指定要使用的解析器引擎。C和pyarrow引擎的速度更快,而python引擎目前的功能更加完整。多線程目前僅由pyarrow引擎支持。

time_start=time.time()
df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',engine='python')
time_end=time.time()
print('time cost',time_end-time_start,'s')
time cost 1.0299623012542725 s
time_start=time.time()
df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',engine='c')
time_end=time.time()
print('time cost',time_end-time_start,'s')
time cost 0.20297026634216309 s

13.converters

接受類型:{dict, optional}

用於轉換某些列中的值的函數的功能。鍵可以是整數或列標簽。

df_csv=pd.read_csv(r'C:\Users\10799\test-python\user_info.csv',converters={'city_num':lambda x:x})

 14.true_values

接受類型:{list, optional}

指定列表要視為真,當讀出的csv太多時該參數會有BUG,讀不出來:

df_csv=pd.read_csv('user_info.csv',true_values=['廣州'])

 這個廣州沒變,我也試了試很多值也沒用,估計內部參數邏輯不適用大含量的csv數據。

 跑個簡單的就行:

from io import StringIO
data = ('a,b,c\n1,Yes,2\n3,No,4')
pd.read_csv(StringIO(data),
true_values=['Yes'], false_values=['No'])

 

 不推薦大家使用該參數來調TRUE,自己寫個lambda函數或者replace是一樣的,這個作用於全局會出問題。只有當某一列的數據全部出現在true_values + false_values裡面,才會被替換。

15.false_values

接受類型:{list, optional}

指定列表要視為假。和上個參數一樣,屬於無用參數,坑人、跳過。只有當某一列的數據全部出現在true_values + false_values裡面,才會被替換。

16.skipinitialspace

接受類型:{bool, default False}

跳過分隔符後的空格。

df_csv=pd.read_csv('user_info.csv',skipinitialspace=True)

 沒啥區別:

17. skiprows

接受類型:{list-like,int或callable,可選}

指定文件開頭要跳過的行號(0初始索引)或要跳過的行數(int)。
如果可調用,將根據行索引計算可調用函數,如果應跳過該行,則返回True,否則返回False。有效的可調用參數的一個示例是[0,2]中的lambda x:x。

df_csv=pd.read_csv('user_info.csv',skiprows=[0,1,2,3])

 

 例如選擇行為偶數的行:

df_csv=pd.read_csv('user_info.csv',skiprows=lambda x :x%2==0)

 18.skipfooter

接受類型:{int, default 0}

指定 要跳過的文件底部的行數(engine='c'不支持)。

df_csv=pd.read_csv('user_info.csv',skipfooter=1)

跳過底部指定數目的行:

 19.nrows

接受類型:{int, optional}

指定要讀取的文件行數。用於讀取大型文件。

df_csv=pd.read_csv('user_info.csv',nrows=50)

 20.na_values

接受類型:{scalar, str, list-like, or dict, optional}

要識別為NA/NaN的其他字符串。如果dict通過,則指定每列NA值。默認情況下,以下值被解釋為 NaN: ‘’, ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’, ‘-NaN’, ‘-nan’, ‘1.#IND’, ‘1.#QNAN’, ‘<NA>’, ‘N/A’, ‘NA’, ‘NULL’, ‘NaN’, ‘n/a’, ‘nan’, ‘null’.

df_csv=pd.read_csv('user_info.csv',na_values='0')

df_csv=pd.read_csv('user_info.csv',na_values=['0','32'])

 21.keep_default_na

接受類型:{bool, default True}

解析數據時是否包括默認的NaN值。根據是否傳入na_values,行為如下:

  • 如果keep_default_na為True,並且指定了na_value,則將na_value附加到用於解析的默認NaN值。
  • 如果keep_default_na為True,並且未指定na_value,則僅使用默認的NaN值進行解析。
  • 如果keep_default_na為False,並且指定了na_value,則僅使用指定的NaN值na_value進行解析。
  • 如果keep_default_na為False,並且未指定na_value,則不會將任何字符串解析為NaN。

注意,如果na_filter作為False傳入,keep_default_na和na_values參數將被忽略。

df_csv=pd.read_csv('user_info.csv',keep_default_na=False)

22. na_filter

接受類型:{bool, default True}

檢測缺失的值標記(空字符串和na_values的值)。在沒有任何NAs的數據中,傳遞na_filter=False可以提高讀取大型文件的性能。

這個參數用於調優,由於存儲數據很多都存在空值,所以默認為True合適。

23.verbose

接受類型:{bool, default False}

打印各種解析器的輸出信息,可指示放置在非數字列中的NA值的數量。

df_csv=pd.read_csv('user_info.csv',verbose=True)

 

 24.skip_blank_lines

接受類型:{bool, default True}

如果為True,則跳過空行,而不是解釋為NaN值。否則則為NaN

df_csv=pd.read_csv('user_info.csv',skip_blank_lines=False)

 25.parse_dates

接受類型:{bool or list of int or names or list of lists or dict, default False}

參數選擇功能如下:

  • bool:如果為True則分析索引。
  • ist of int or names:例如:如果[1、2、3]則嘗試將列1、2、3分別解析為單獨的日期列。
  • list of lists.例如:如果為[[1,3]]則組合第1列和第3列,並解析為單個日期列。
  • dict,例如{'foo':[1,3]},則將列1,3解析為日期並調用結果“foo”。

如果一個列或索引不能表示為datetimes數組,例如由於不可分析的值或時區的混合,那麼該列或索引將作為對象數據類型原封不動地返回。對於非標准的datetime解析,pd.read_csv之後的處理使用to_datetime。要解析混合時區的索引或列,請將date_parser指定為部分應用的pandas.to_datetime()使用utc=True。有關更多信息,請參閱使用混合時區解析CSV:https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#io-csv-mixed-timezones。
注意:存在iso8601格式日期的快速路徑。

df_csv=pd.read_csv('user_info.csv',parse_dates=['first_order_time'])

 

 

df_csv.dtypes

 

 

df_csv=pd.read_csv('user_info.csv',parse_dates=[1])
df_csv.dtypes

 

 26.infer_datetime_format

接受類型:{bool, default False}

如果啟用了True和parse_dates,pandas將嘗試推斷列中datetime字符串的格式,如果可以推斷,則切換到更快的解析方法。在某些情況下,這可以將解析速度提高5-10倍。

time_start=time.time()
df_csv=pd.read_csv('user_info.csv',parse_dates=[1])
time_end=time.time()
print('time cost',time_end-time_start,'s')
df_csv.dtypes

 

time_start=time.time()
df_csv=pd.read_csv('user_info.csv',parse_dates=[1],infer_datetime_format='%Y/%m/%d %H:%M')
time_end=time.time()
print('time cost',time_end-time_start,'s')
df_csv

 

 27.keep_date_col

接受類型:{bool, default False}

如果True和parse_dates指定組合多個列,則保留原始列。

 因為如果多個列是指定不同時間單位的時間時,合並之後是不會有原來的列的,指定keep_date_col為True時,它們就會保留下來。

from io import StringIO
data = ('year,month,day\n2022,6,21\n2022,6,22\n2022,6,23')
pd.read_csv(StringIO(data),parse_dates=[[0,1,2]]
)

 

from io import StringIO
data = ('year,month,day\n2022,6,21\n2022,6,22\n2022,6,23')
pd.read_csv(StringIO(data),parse_dates=[[0,1,2]],keep_date_col=True
)

 

 28.date_parser

接受類型:{function, optional}

指定函數,用於將字符串列序列轉換為datetime實例數組。默認使用dateutil.parser.parser 來進行轉換。Pandas將嘗試以三種不同的方式調用date_parser,如果發生異常,則會前進到下一種方式:1)傳遞一個或多個數組(由parse_dates定義)作為參數;2) 將parse_dates定義的列中的字符串值串聯(按行)到一個數組中,並傳遞該數組;和3)使用一個或多個字符串(對應於parse_dates定義的列)作為參數,為每一行調用一次parse_dates。

一般來說會用在以及read_csv轉換為DataFrame之後,處理datetime之後寫函數,但是有了這個參數前期寫完自定義函數之後就可以直接處理帶時間的參數的值了。

from io import StringIO
from datetime import datetime
def dele_date(dateframe):
for x in dateframe:
x=pd.to_datetime(x,format='%Y/%m/%d %H:%M')
x.strftime('%m/%d/%Y')
return x
df_csv=pd.read_csv('user_info.csv',parse_dates=['first_order_time'],date_parser=dele_date)
df_csv

29. dayfirst

接受類型:{bool, default False}

日/月格式日期,國際和歐洲格式。

df_csv=pd.read_csv('user_info.csv',parse_dates=['first_order_time'],dayfirst=True)
df_csv

沒啥作用,該是什麼形式還是什麼形式,除非是DD/MM格式才有用,用處不大。

 30.cache_dates

接受類型:{bool, default True}

如果為True,請使用唯一的已轉換日期緩存來應用日期時間轉換。在分析重復的日期字符串時,尤其是帶有時區偏移的日期字符串時,可能會產生顯著的加速。

優化參數,提速。

31.iterator

接受類型:{bool, default False}

返回TextFileReader對象以進行迭代或獲取塊get_chunk().

df_csv=pd.read_csv('user_info.csv',iterator=True)
print(df_csv)
<pandas.io.parsers.readers.TextFileReader object at 0x000002624BBA5848>

32.chunksize

接受類型:{int, optional}

返回用於迭代的TextFileReader對象。有關iterator 和chunksize的更多信息,請參閱IO工具文檔。

功能性函數,指定轉化為TextFileReader的塊數。

33.compression

接受類型:{str or dict, default ‘infer’}

用於實時解壓縮磁盤數據。如果“infer”和“%s”類似於路徑,則從以下擴展檢測壓縮:'。gz','。bz2’,”。zip“,”。xz’,或’。zst’(否則無壓縮)。如果使用“zip”,zip文件必須只包含一個要讀入的數據文件。設置為“None”表示無解壓縮。也可以是一個dict,其中鍵“method”設置為{'zip',gzip',bz2',zstd}之一,其他鍵值對被轉發到zipfile。ZipFile,gzip。gzip文件,bz2。BZ2文件或zstandard。ZstdDecompressor。例如,可以使用自定義壓縮字典為Zstandard解壓縮傳遞以下內容:compression={'method':'zstd','dict_data':my_compression_dict}。

df_csv=pd.read_csv('user_info.csv',compression=None)
df_csv

 34.thousands

接受類型:{str, optional}

千位分隔符。

35.decimal

接受類型:{str, default ‘.’}

要識別為小數點的字符(例如,對於歐洲數據使用“,”。)

一般為float的數據都為小數點,我感覺這個參數可能加密的時候有點用。

36.lineterminator

接受類型:{str (length 1), optional}

字符將文件拆分為行。僅對C解析器有效。設置為engine為C:

df_csv=pd.read_csv('user_info.csv',engine='c',lineterminator='2')
df_csv

 37.quotechar

接受類型:{str (length 1), optional}

用於表示引用項的開始和結束的字符。帶引號的項目可以包含分隔符,它將被忽略。

38.quoting

接受類型:{int or csv.QUOTE_* instance, default 0}

df_csv=pd.read_csv('user_info.csv',quotechar = '"')
df_csv

  

每個csv的控制字段引用行為。QUOTE_*常量。使用QUOTE\u MINIMAL(0)、QUOTE\u ALL(1)、QUOTE_NONNERIAL(2)或QUOTE_NONE(3)之一。

感覺到了後面的參數是臨時加上去的,平常業務需求很難用得上。

39.doublequote

接受類型:{bool, default True

如果指定了quotechar且Quoteching不是QUOTE_NONE,請指示是否將字段內的兩個連續quotechar元素解釋為單個quotechar元素。

df_csv=pd.read_csv('user_info.csv',quotechar='"', doublequote=True)
df_csv

 

40.escapechar

接受類型:{str (length 1), optional}

用於轉義其他字符的字符串。當quoting 為QUOTE_NONE時,指定一個字符使的不受分隔符限值。

41.comment

接受類型:{str, optional}

指示不應分析行的其余部分。如果在一行的開頭找到,該行將被完全忽略。此參數必須是單個字符。與空行一樣(只要skip_blank_lines=True),完全注釋的行將被參數頭忽略,而不是被skiprows忽略。例如,如果注釋=“#”,分析標題為0的#empty\na、b、c\n1、2、3將導致“a、b、c”被視為標題。

df_csv=pd.read_csv('user_info.csv',sep=',', comment='#', skiprows=1)
df_csv

 42.encoding

接受類型:{str, optional}

讀/寫時用於UTF的編碼(例如“UTF-8”)。

43.encoding_errors

接受類型:{str, optional, default “strict”}

處理編碼錯誤。

44.dialect

接受類型:{str or csv.Dialect, optional}

如果提供,此參數將覆蓋以下參數的值(默認值或非默認值):delimiter、doublequote、escapechar、skipinitialspace、quotechar和quoting。如果需要重寫值,將發出ParserWarning。請參見csv。如果沒有指定特定的語言,如果sep大於一個字符則忽略。方言文檔了解更多詳細信息。

45. error_bad_lines

接受類型:{bool, optional, default None

默認情況下,字段過多的行(例如,逗號過多的csv行)將引發異常,並且不會返回DataFrame。如果為False,則將從返回的數據幀中刪除這些“錯誤行”。這是比較好用來處理錯誤的數據的:

46.warn_bad_lines

接受類型:{bool, optional, default None

如果error_bad_lines為False,warn_bad_lines為True,則會輸出每個“bad line”的警告。

47.on_bad_lines

接受類型:{{‘error’, ‘warn’, ‘skip’} or callable, default ‘error’}

指定遇到錯誤行(字段太多的行)時要執行的操作。允許的值為:

  • “error”,遇到錯誤行時引發異常。
  • “警告”,遇到錯誤行時發出警告並跳過該行。
  • “跳過”,在遇到錯誤行時跳過錯誤行而不引發或警告。
df_csv=pd.read_csv('http://localhost:8889/edit/test-python/user_info.csv',sep=',',on_bad_lines='skip')
df_csv

 48.delim_whitespace

接受類型:{bool, default False}

指定是否將空格(例如“.”或“”)用作sep。相當於設置sep=“\s+”。如果此選項設置為True,則不應為delimiter參數傳入任何內容。

df_csv=pd.read_csv('user_info.csv',delim_whitespace=True)
df_csv

 

這裡是時間裡面有個空格導致全部分開。設置sep=“\s+”是一樣的。

49.low_memory

接受類型:{bool, default True}

在內部以塊的形式處理文件,從而在解析時減少內存使用,但可能是混合類型推斷。要確保沒有混合類型,請設置False,或使用dtype參數指定類型。請注意,整個文件都被讀取到單個數據幀中,不管如何,請使用chunksize或iterator參數以塊的形式返回數據。(僅對C解析器有效)。

50.memory_map

接受類型:{bool, default False}

如果為filepath_or_buffer提供了filepath,請將文件對象直接映射到內存,並從內存直接訪問數據。使用此選項可以提高性能,因為不再存在任何I/O開銷。

51.float_precision

接受類型:{str, optional}

指定C引擎應將哪個轉換器用於浮點值。普通轉換器的選項為無或“高”,原始低精度熊貓轉換器的選項為“傳統”,往返轉換器的選項為“往返”。

52.storage_options

對特定存儲連接有意義的額外選項,例如主機、端口、用戶名、密碼等。對於HTTP(S)URL,鍵值對作為標頭選項轉發給urllib。對於其他URL(例如,以“s3://”和“gcs://”)開頭),將鍵值對轉發給fsspec。有關更多詳細信息,請參閱fsspec和urllib。

點關注,防走丟,如有纰漏之處,請留言指教,非常感謝

以上就是本期全部內容。我是fanstuck ,有問題大家隨時留言討論 ,我們下期見。



  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved