日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对csv文件,又get了新的认知

發布時間:2023/12/29 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对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進行解析

  • 常規的內容
import pandas as pddata1=pd.read_csv('1-常規的內容.csv',encoding='GB2312')data1
  • 字段內部有逗號
import pandas as pddata1=pd.read_csv('2-字段內部有逗號.csv',encoding='GB2312',quotechar='"')data1
  • 字段內部有引號
import pandas as pddata1=pd.read_csv('3-字段內部有引號.csv',encoding='GB2312',quotechar='"')data1
  • 字段內部有換行符
    該程序是在 Windows 平臺運行,換行符為 \r\n
import pandas as pddata1=pd.read_csv('4-字段內部有換行符.csv',encoding='GB2312',quotechar='"',engine='python')data1
  • 字段內部有空格
import pandas as pddata1=pd.read_csv('5-字段內部有空格.csv',encoding='GB2312',quotechar='"')data1

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了新的认知的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。