对csv文件,又get了新的认知
背景
在數據分析時,有時我們會碰到csv格式文件,需要先進行數據處理,轉換成所需要的數據格式,然后才能進行分析
業務側的同學可能對Excel文件比較熟悉,Excel可以把單個sheet直接保存為csv文件,也可以直接讀取csv文件,變成Excel文件
技術側的同學有時需要把數據庫里面的數據導出到一個csv文件,有時也需要把別人給的csv文件加載到數據庫中
csv文件在各個地方都這么流行,你真的徹底了解它嗎?
CSV(逗號分隔值文件格式),逗號分隔值(Comma-Separated Values,CSV,有時也稱為字符分隔值,因為分隔字符也可以不是逗號)
csv文件包含的各種數據
- 常規的內容
表格中:
csv文件中:
- 字段內部有逗號
表格中:
csv文件中:
- 字段內部有引號
表格中:
csv文件中:
- 字段內部有換行符
表格中:
csv文件中:
- 字段內部有空格
表格中:
csv文件中:
csv文件規則
從上面的各種內容可以看出,當字段中包含特殊的字符時,在csv文件中會用雙引號進行特殊處理
官方標準:
RFC4180:https://www.rfc-editor.org/rfc/rfc4180.txt
維基百科wiki:https://wiki.lazarus.freepascal.org/CSV
- 字段內包含逗號, 雙引號, 或是換行符的字段必須放在雙引號內
- 字段內包含引號必須在其前面增加一個引號,來實現引號的轉碼
- 元素中的換行符將被保留下來
- 分隔符逗號前后的空格仍然會被保留
用pandas進行解析
- 常規的內容
- 字段內部有逗號
- 字段內部有引號
- 字段內部有換行符
該程序是在 Windows 平臺運行,換行符為 \r\n
- 字段內部有空格
pd.read_csv部分參數解釋
import pandas as pd print(pd.__version__) #1.3.4完整的參數:
pd.read_csv(filepath_or_buffer: 'FilePathOrBuffer',sep=<no_default>,delimiter=None,header='infer',names=<no_default>,index_col=None,usecols=None,squeeze=False,prefix=<no_default>,mangle_dupe_cols=True,dtype: 'DtypeArg | None' = 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=False,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: 'str' = '.',lineterminator=None,quotechar='"',quoting=0,doublequote=True,escapechar=None,comment=None,encoding=None,encoding_errors: 'str | None' = '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: 'StorageOptions' = None, )下面主要解釋一些常用的參數:
-
sep
sep參數是字符型的,代表每行數據內容的分隔符號,默認是逗號,另外常見的還有制表符(\t)、空格等,根據數據的實際情況傳值
還提供了一個參數名為delimiter的定界符,這是一個備選分隔符,是sep的別名,效果和sep一樣。如果指定該參數,則sep參數失效 -
dtype
指定各數據列的數據類型,建議在導入數據時全部使用字符型,dtype='str',后面在數據處理時再轉換為需要的類型 -
engine
解析器、引擎,可以選擇C或Python。
C語言的速度最快,Python語言的功能最為完善 -
iterator
是否設置為迭代器,如果設置為True,則返回一個TextFileReader對象,并可以對它進行迭代,以便逐塊處理文件,一般結合chunksize使用,指定文件塊的大小,分塊處理大型CSV文件 -
lineterminator
每行的解釋符號,但只能允許一個字符長度,僅對C解析器有效 -
quotechar
字段之間的定界符,這樣就能正確解析包含特殊符號的字段了
歷史相關文章
- Python pandas在讀取csv文件時(linux與windows之間傳輸),數據行數不一致的問題
- Python pandas數據分列,分割符號&固定寬度
- Python 字符串格式化方法總結
以上是自己實踐中遇到的一些問題,分享出來供大家參考學習,歡迎關注微信公眾號:DataShare ,不定期分享干貨
總結
以上是生活随笔為你收集整理的对csv文件,又get了新的认知的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 将多个png或者jpg图片转为dicom
- 下一篇: csv和excel文件操作