包含python對csv文件的處理的詞條

本文目錄一覽:

python解決csv文件用excel打開亂碼問題

【問題】

python輸出的csv文件用excel打開,裡面的中文會變成亂碼,但用window下的記事本或mac下的numbers打開就正常顯示。

原因是python輸出的文件是utf-8編碼寫入的,excel默認以gbk方式讀取,導致亂碼發生。

【解決方法1】文件產出時encoding設置為utf-8-sig    

用excel打開csv時,excel會先檢查文件的第一個字符,來了解這個文件是什麼編碼方式,如果這個字符是BOM,excel就知道用utf-8的方式打開這個文件。python自帶了處理BOM的編碼方式uft-8-sig,因此只需要在文件產出時將encoding設置為utf-8-sig。

如果文件不是由python產出的,只需要以utf-8方式讀入再以utf-8-sig方式存儲即可

【解決方法2】懶人法,適用只含簡體中文的文件

用記事本打開,點擊另存為,右下角編碼方式選擇“ANSI”,這個過程是把這個文件改成gbk編碼格式,excel就是默認用gbk方式打開的。

參考: Python寫的csv文件,如何讓 Excel 雙擊打開不亂碼? – 雲+社區 – 騰訊雲

對編碼格式一竅不通的可以閱讀以下網頁

python筆記——二進制和文件編碼_砍柴姑娘Jourosy的博客-CSDN博客

編碼方式之ASCII、ANSI、Unicode概述 – 藍海人 – 博客園

【簡單總結】:

1. 首先需要了解 字符集 和 字符編碼 兩個概念,字符集定義了字符和二進制的一一對應關係,字符編碼規定了如何將字符的編號存儲到計算機中。

2. Unicode是字符集,包含了全球文字的唯一編碼,utf-8是編碼方式,將unicode以某種方式存儲到計算機中。

3. 有些字符集和編碼是結合在一起的,稱作字符集還是編碼都無所謂,比如ASCII,GBK

4. ANSI是各個國家地區不同擴展編碼方式的總稱,互不兼容(可以看出來通用性沒有utf好)

5. 不同編碼方式在轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字符串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。

python中怎麼處理csv文件

什麼是CSV

就是內容用逗號隔開,後綴是‘.csv’的文件。它可以被任何一個文本編輯器打開。如果用excel打開,它又可以是這樣的:

END

讀CSV

典型的可處理的csv文件,通常含有表頭,也就是每列的列名。這樣一來,每一行的內容就可以被當作是以表頭為key的字典。於是可以使用csv定義的類:

class csv.DictReader(csvfile, fieldnames=None, restkey=None, restval=None, dialect=’excel’, *args, **kwds)

下面是官方的例子(Python 3)。我們看到,對於csv文件的內容,我們可以通過相應的tag,也就是字典的key來讀取。

在實際使用過程中,為了分離代碼和方便閱讀,可以先把讀取的內容轉存到列表,隨後再根據各個key進行分開處理(針對多列的情況)。

END

寫CSV

同樣的,寫入的也是列表。使用的類:

class csv.DictWriter(csvfile, fieldnames, restval=”, extrasaction=’raise’, dialect=’excel’, *args, **kwds)

官方例子:我們看到,有專門的函數來寫入表頭,沒有表頭數據是無法對應的。需要注意的是,對於下列語句,‘w’需要修改為‘wb’,否則每次寫入會有多餘空行

with open(‘names.csv’, ‘wb’) as csvfile

Python csv庫整理(部分)

近期,筆者到一些數據競賽網站進行觀察學習,發現很多數據是以csv文件處理的(廢話).因而,磨刀不誤砍柴工,筆者先對Python的csv庫進行學習.

csv模塊實現了CSV格式表單數據的讀寫.這可以以一個兼容Excel的方式讀寫其數據文件,csv模塊中的reader和writer類被用來讀寫序列化的數據.也可以使用DictReader類和DictWriter類以字典的方式讀取數據.

返回一個reader對象,該對象逐行遍歷csvfile(文件和列表均適用,但是文件的話應該newline=”.

默認每一行讀取一個字符串組成的列表(而非數值,除非修改QUOTE_NONUMERIC).

返回一個writer對象,負責將數據在給定的文件類對象上轉換成帶分隔符的字符串.csvfile(只要該對象有write()方法,文件的話應該newline=”.)

這兩個方法可以把name字符串和dialect關聯/脫鉤.dialect可以是Dialect的子類,或者fmtparams的關鍵字參數.

返回一個Dialect對象為name的變種,若其未註冊,拋出Error.

返回已經註冊的所有變種的 名稱

返回當前解析器允許的最大字段大小,如果制定了參數,參數將成為新的最大字段大小.

該對象操作上類似reader,但是把每行中的信息映射到一個字典,字典的鍵由fieldnames給出

fieldname的參數是一個序列sequence [1] ,如果參數缺省,默認第一行的值作為字段名.

如果某一行中的字段多於字段名(比如說約定有5項屬性,但是這一行卻出現了6個數據),則其餘字段將放入列表中,字段名由 restkey 指定(默認為 None)。如果非空白行的字段少於字段名,則缺少的值將用 None 填充。

#其實這玩意應該就跟各種填表裡面的備註用法差不多.

3.8中返回的行是dict類型.

該對象操作上類似reader,但是把每行中的信息映射到一個字典,字典的鍵由fieldnames給出,fieldname參數是不可缺省的.restval用來指定字典缺少鍵的時候要寫入的值.extrasaction用於指定關鍵鍵在fieldname中找不到的情況的處理機制.’raise’引發ValueError,而’ignore’則會被忽略.

這個類被用來瑞段csv文件的格式

以下諸類均在括號中標註了在其變種註冊表中的名稱

定義了Excel生成的csv文件的常規屬性.(‘excel’)

定義了Excel生成的,tab分割的csv文件的常規屬

性.(‘excel-tab’)

定義了UNIX系統上生成的csv文件的常規屬性(‘unix’):

任意可能發生的csv庫函數錯誤.

參考鏈接

Python3.8.2文檔中關於csv庫的相關文檔

在python中csv文件沒被定義怎麼辦

典型的可處理的csv文件,通常含有表頭,也就是每列的列名。這樣一來,每一行的內容就可以被當作是以表頭為key的字典。於是可以使用csv定義的類。

我們看到,對於csv文件的內容,我們可以通過相應的tag,也就是字典的key來讀取。在實際使用過程中,為了分離代碼和方便閱讀,可以先把讀取的內容轉存到列表,隨後再根據各個key進行分開處理(針對多列的情況)。

CSV就是內容用逗號隔開,後綴是csv的文件。它可以被任何一個文本編輯器打開。如果用excel打開,它又可以是這樣的END讀CSV。

開啟數據分析的大門-數據收集:Python對文件的操作

簡介

我是一名應屆經濟學畢業生,在學習Python語言的過程中,接觸到了數據分析,機器學習和人工智能,並對此特別感興趣,現在我把整個學習過程記錄下來,希望和我有相同興趣和愛好的朋友們一同成長,期盼着各位專家的指導。

環境介紹

在整個過程當中,將採用Python和Excel,採用Python,是因為Python提供了豐富的開發框架和工具庫,使用Excel是因為Excel是使用非常廣泛的辦公軟件,我在Excel里將複雜的算法簡單化,使大家快速理解各種難以理解的算法。

在開始之前,我們已經準備好了Anaconda和Excel環境。在這裡省略了這個過程。

數據獲取將通過tushare開放平台,後面我會介紹和演示如何應用tushare平台。

數據分析流程簡介

數據分析是由數據收集開始,收集的數據經過標準化處理和整理後,通過各種算法,進行數據分析,目的是為了總結過去的 歷史 數據,在數據趨勢上預測未來的走勢,同時對現存的環境進行優化。

我們今天先從數據收集開始。

數據收集需要應用到Python對文件的讀寫操作。

下面這段代碼以只讀方式採用’UTF-8’編碼方式打開當前目錄下的text1.txt文件,並輸出到屏幕上。操作完畢後,關閉文件。

小貼士:在從tushare平台獲取數據時,每個用戶會分配到一個key,我們可以把這個key封裝到這個文件里。為的是數據安全和便利性。

Python對數據的處理主要是csv文件格式,Excel和數據庫。今天我們主要針對csv文件進行操作。為的是儘快開始我們的數據分析之旅。後面在適當的時候,我來完成對Excel和數據庫的操作。

Python 讀取csv文件有很多種方法,我們這裡採用PANDAS庫,下面是讀取csv文件代碼:

下面這段代碼先生成數據列表,然後寫入csv文件。

好了,到現在為止,Python對數據收集的基礎工作就算完成了,Python對文件操作有很多技巧,不是我們這一系列的重點,就不一一介紹了,有興趣的夥伴可以查閱相關文檔。

Python處理Excel文件(csv, xls, xlsx)

Excel文件格式主要有csv,xlsx和xlsx,對於不同的格式,我們使用不同的包來進行處理。

其中, encoding=’utf-8-sig’ 是為了編碼正常可以正確顯示中文, spamreader 中的每一個 row 為list格式,可以循環取出每個單元格的值。

結果:

如果csv文件是數據類的,那麼使用 pandas 包讀寫數據會更方便。

結果:

參數:

結果:

參數:

Excel文件有三層對象:工作薄、工作表和三元格,分別對應 openpyxl 包中的workbook、sheet和cell。

注 : openpyxl 功能全面,還支持:合併單元格、數學運算、單元格格式、迭代器 ws.iter_rows() 操作等。

注 : xlrd 打開為只讀模式,不可修改。

結果:

結果:

原創文章,作者:R16HA,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/128484.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
R16HA的頭像R16HA
上一篇 2024-10-03 23:25
下一篇 2024-10-03 23:25

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29

發表回復

登錄後才能評論