python讀取與寫入csv格式文件的示例代碼
在數(shù)據(jù)分析中經(jīng)常需要從csv格式的文件中存取數(shù)據(jù)以及將數(shù)據(jù)寫書到csv文件中。將csv文件中的數(shù)據(jù)直接讀取為 dict 類型和 DataFrame 是非常方便也很省事的一種做法,以下代碼以鳶尾花數(shù)據(jù)為例。
csv文件讀取為dict
代碼
# -*- coding: utf-8 -*-
import csv
with open('E:/iris.csv') as csvfile:
reader = csv.DictReader(csvfile, fieldnames=None) # fieldnames默認(rèn)為None,如果所讀csv文件沒有表頭,則需要指定
list_1 = [e for e in reader] # 每行數(shù)據(jù)作為一個(gè)dict存入鏈表中
csvfile.close()
print list_1[0]
輸出
{'Petal.Length': '1.4', 'Sepal.Length': '5.1', 'Petal.Width': '0.2', 'Sepal.Width': '3.5', 'Species': 'setosa'}
如果讀入的每條數(shù)據(jù)需要單獨(dú)處理且數(shù)據(jù)量較大,推薦逐條處理然后再放入。
list_1 = list() for e in reader: list_1.append(your_func(e)) # your_func為每條數(shù)據(jù)的處理函數(shù)
多條類型為dict的數(shù)據(jù)寫入csv文件
代碼
# 數(shù)據(jù)
data = [
{'Petal.Length': '1.4', 'Sepal.Length': '5.1', 'Petal.Width': '0.2', 'Sepal.Width': '3.5', 'Species': 'setosa'},
{'Petal.Length': '1.4', 'Sepal.Length': '4.9', 'Petal.Width': '0.2', 'Sepal.Width': '3', 'Species': 'setosa'},
{'Petal.Length': '1.3', 'Sepal.Length': '4.7', 'Petal.Width': '0.2', 'Sepal.Width': '3.2', 'Species': 'setosa'},
{'Petal.Length': '1.5', 'Sepal.Length': '4.6', 'Petal.Width': '0.2', 'Sepal.Width': '3.1', 'Species': 'setosa'}
]
# 表頭
header = ['Petal.Length', 'Sepal.Length', 'Petal.Width', 'Sepal.Width', 'Species']
print len(data)
with open('E:/dst.csv', 'wb') as dstfile: #寫入方式選擇wb,否則有空行
writer = csv.DictWriter(dstfile, fieldnames=header)
writer.writeheader() # 寫入表頭
writer.writerows(data) # 批量寫入
dstfile.close()
上述代碼將數(shù)據(jù)整體寫入csv文件,如果數(shù)據(jù)量較多且想實(shí)時(shí)查看寫入了多少數(shù)據(jù)可以使用 writerows 函數(shù)。
讀取csv文件為DataFrame
代碼
# 讀取csv文件為DataFrame
import pandas as pd
dframe = pd.DataFrame.from_csv('E:/iris.csv')
也可以稍微曲折點(diǎn):
import csv
import pandas as pd
with open('E:/iris.csv') as csvfile:
reader = csv.DictReader(csvfile, fieldnames=None) # fieldnames默認(rèn)為None,如果所讀csv文件沒有表頭,則需要指定
list_1 = [e for e in reader] # 每行數(shù)據(jù)作為一個(gè)dict存入鏈表中
csvfile.close()
dfrme = pd.DataFrame.from_records(list_1)
從zip文件中讀取指定csv文件為DataFrame
dst.zip文件中包含有dst.csv和其它文件,現(xiàn)在在不解壓縮的情況下直接讀取dst.csv文件為DataFrame.
import pandas as pd
import zipfile
z_file = zipfile.ZipFile('E:/dst.zip')
dframe = pd.read_csv(z_file.open('dst.csv'))
z_file.close()
print dframe
DataFrame寫入csv文件
dfrme.to_csv('E:/dst.csv', index=False) # 不要每行的編號(hào)
讀取txt文件為DataFrame
import pandas as pd # `path`為文件路徑或文件句柄,`header`文件第一行是否是表頭,`delimiter`每個(gè)字段的分隔符,`dtype`數(shù)據(jù)讀入后的存儲(chǔ)類型。 frame = pd.read_table(path, header=None, index_col=False, delimiter='\t', dtype=str)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python生成詞云的實(shí)現(xiàn)方法(推薦)
下面小編就為大家?guī)硪黄猵ython生成詞云的實(shí)現(xiàn)方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06
如何用Python實(shí)現(xiàn)簡(jiǎn)單的Markdown轉(zhuǎn)換器
這篇文章主要介紹了如何用Python實(shí)現(xiàn)簡(jiǎn)單的Markdown轉(zhuǎn)換器,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07
Python生成器定義與簡(jiǎn)單用法實(shí)例分析
這篇文章主要介紹了Python生成器定義與簡(jiǎn)單用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python生成器的概念、原理、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-04-04
使用python將excel數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫過程詳解
這篇文章主要介紹了使用python將excel數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
解決Django一個(gè)表單對(duì)應(yīng)多個(gè)按鈕的問題
今天小編就為大家分享一篇解決Django一個(gè)表單對(duì)應(yīng)多個(gè)按鈕的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07
python調(diào)用API實(shí)現(xiàn)智能回復(fù)機(jī)器人
這篇文章主要為大家詳細(xì)介紹了python調(diào)用API實(shí)現(xiàn)智能回復(fù)機(jī)器人,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
python PyQt5 爬蟲實(shí)現(xiàn)代碼
這篇文章主要介紹了python PyQt5 爬蟲實(shí)現(xiàn)代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
Python動(dòng)態(tài)賦值的陷阱知識(shí)點(diǎn)總結(jié)
在本文中我們給大家整理了關(guān)于Python動(dòng)態(tài)賦值的陷阱的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。2019-03-03
python刪除文件夾中具有相同后綴類型文件的實(shí)戰(zhàn)演練
在平時(shí)卸載軟件的時(shí)候會(huì)殘留許多文件和空文件夾,下面這篇文章主要給大家介紹了關(guān)于python刪除文件夾中具有相同后綴類型文件的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03

