本文目錄一覽:
- 1、python解決csv文件用excel打開亂碼問題
- 2、python中怎麼處理csv文件
- 3、Python csv庫整理(部分)
- 4、在python中csv文件沒被定義怎麼辦
- 5、開啟數據分析的大門-數據收集:Python對文件的操作
- 6、Python處理Excel文件(csv, xls, xlsx)
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