當前位置:首頁 » 編程語言 » python中如何讀取csv

python中如何讀取csv

發布時間: 2023-02-12 04:44:20

python csv模塊(讀寫文件)

CSV文件又稱為逗號分隔值文件,是一種通用的、相對簡單的文件格式,用以存儲表格數據,包括數字或者字元。CSV是電子表格和資料庫中最常見的輸入、輸出文件格式。

通過爬蟲將數據抓取的下來,然後把數據保存在文件,或者資料庫中,這個過程稱為數據的持久化存儲。本節介紹Python內置模塊CSV的讀寫操作。

1)csv.writer()

csv模塊中的writer類可用於讀寫序列化的數據,其語法格式如下:

參數說明:

csvfile:必須是支持迭代(Iterator)的對象,可以是文件(file)對象或者列表(list)對象。

dialect:編碼風格,默認為excel的風格,也就是使用逗號,分隔。

fmtparam:格式化參數,用來覆蓋之前dialect對象指定的編碼風格。

如果想同時寫入多行數據,需要使用writerrows()方法,代碼如下所示:

aggs.csv文件內容:

2)csv.DictWriter()

當然也可使用DictWriter類以字典的形式讀寫數據,使用示例如下:

name.csv文件內容,如下所示:

1)csv,reader()

csv模塊中的reader類和DictReader類用於讀取文件中的數據,其中reader()語法格式如下:

2)csv.DictReader()

應用示例如下:

輸出結果:

開課吧廣場-人才學習交流平台

㈡ python 怎麼讀csv文件

CSV文件本質上就是文本文件,只不過每行的數據用逗號分隔。

所以你當成文本文件打開一行一行的讀然後拆分就可以了。

data=[]
withopen(r'd: empdemo.csv','r')ascsv_file:
forlineincsv_file:
data.append(line.strip().split(','))
print(data)

#另外Python標准庫里有個CSV模塊可以用。
importcsv
withopen(file_path,'rb')ascsv_file:
data=list(csv.reader(csv_file))[1:]#去掉首行的列名

還有就是可以用Pandas這個庫,dataframe有導入csv功能。

㈢ python按時間讀取csv中的數據

我在這里做的小測試是可以的

你將會員卡號想像成你那表格里的時間,其他是一樣的。

㈣ python 讀取CSV 文件

讀取一個CSV 文件

最全的

一個簡化版本

filepath_or_buffer : str,pathlib。str, pathlib.Path, py._path.local.LocalPath or any object with a read() method (such as a file handle or StringIO)

可以是URL,可用URL類型包括:http, ftp, s3和文件。對於多文件正在准備中

本地文件讀取實例:://localhost/path/to/table.csv

**sep **: str, default 『,』

指定分隔符。如果不指定參數,則會嘗試使用逗號分隔。分隔符長於一個字元並且不是『s+』,將使用python的語法分析器。並且忽略數據中的逗號。正則表達式例子:' '

**delimiter **: str, default None

定界符,備選分隔符(如果指定該參數,則sep參數失效)

delim_whitespace : boolean, default False.

指定空格(例如』 『或者』 『)是否作為分隔符使用,等效於設定sep='s+'。如果這個參數設定為Ture那麼delimiter 參數失效。

在新版本0.18.1支持

header : int or list of ints, default 『infer』

指定行數用來作為列名,數據開始行數。如果文件中沒有列名,則默認為0,否則設置為None。如果明確設定header=0 就會替換掉原來存在列名。header參數可以是一個list例如:[0,1,3],這個list表示將文件中的這些行作為列標題(意味著每一列有多個標題),介於中間的行將被忽略掉。

注意:如果skip_blank_lines=True 那麼header參數忽略注釋行和空行,所以header=0表示第一行數據而不是文件的第一行。

**names **: array-like, default None

用於結果的列名列表,如果數據文件中沒有列標題行,就需要執行header=None。默認列表中不能出現重復,除非設定參數mangle_pe_cols=True。

index_col : int or sequence or False, default None

用作行索引的列編號或者列名,如果給定一個序列則有多個行索引。

如果文件不規則,行尾有分隔符,則可以設定index_col=False 來是的pandas不適用第一列作為行索引。

usecols : array-like, default None

返回一個數據子集,該列表中的值必須可以對應到文件中的位置(數字可以對應到指定的列)或者是字元傳為文件中的列名。例如:usecols有效參數可能是 [0,1,2]或者是 [『foo』, 『bar』, 『baz』]。使用這個參數可以加快載入速度並降低內存消耗。

as_recarray : boolean, default False

不贊成使用:該參數會在未來版本移除。請使用pd.read_csv(...).to_records()替代。

返回一個Numpy的recarray來替代DataFrame。如果該參數設定為True。將會優先squeeze參數使用。並且行索引將不再可用,索引列也將被忽略。

**squeeze **: boolean, default False

如果文件值包含一列,則返回一個Series

**prefix **: str, default None

在沒有列標題時,給列添加前綴。例如:添加『X』 成為 X0, X1, ...

**mangle_pe_cols **: boolean, default True

重復的列,將『X』...』X』表示為『X.0』...』X.N』。如果設定為false則會將所有重名列覆蓋。

dtype : Type name or dict of column -> type, default None

每列數據的數據類型。例如 {『a』: np.float64, 『b』: np.int32}

**engine **: {『c』, 『python』}, optional

Parser engine to use. The C engine is faster while the python engine is currently more feature-complete.

使用的分析引擎。可以選擇C或者是python。C引擎快但是Python引擎功能更加完備。

converters : dict, default None

列轉換函數的字典。key可以是列名或者列的序號。

true_values : list, default None

Values to consider as True

false_values : list, default None

Values to consider as False

**skipinitialspace **: boolean, default False

忽略分隔符後的空白(默認為False,即不忽略).

skiprows : list-like or integer, default None

需要忽略的行數(從文件開始處算起),或需要跳過的行號列表(從0開始)。

skipfooter : int, default 0

從文件尾部開始忽略。 (c引擎不支持)

skip_footer : int, default 0

不推薦使用:建議使用skipfooter ,功能一樣。

nrows : int, default None

需要讀取的行數(從文件頭開始算起)。

na_values : scalar, str, list-like, or dict, default None

一組用於替換NA/NaN的值。如果傳參,需要制定特定列的空值。默認為『1.#IND』, 『1.#QNAN』, 『N/A』, 『NA』, 『NULL』, 『NaN』, 『nan』`.

**keep_default_na **: bool, default True

如果指定na_values參數,並且keep_default_na=False,那麼默認的NaN將被覆蓋,否則添加。

**na_filter **: boolean, default True

是否檢查丟失值(空字元串或者是空值)。對於大文件來說數據集中沒有空值,設定na_filter=False可以提升讀取速度。

verbose : boolean, default False

是否列印各種解析器的輸出信息,例如:「非數值列中缺失值的數量」等。

skip_blank_lines : boolean, default True

如果為True,則跳過空行;否則記為NaN。

**parse_dates **: boolean or list of ints or names or list of lists or dict, default False

infer_datetime_format : boolean, default False

如果設定為True並且parse_dates 可用,那麼pandas將嘗試轉換為日期類型,如果可以轉換,轉換方法並解析。在某些情況下會快5~10倍。

**keep_date_col **: boolean, default False

如果連接多列解析日期,則保持參與連接的列。默認為False。

date_parser : function, default None

用於解析日期的函數,默認使用dateutil.parser.parser來做轉換。Pandas嘗試使用三種不同的方式解析,如果遇到問題則使用下一種方式。

1.使用一個或者多個arrays(由parse_dates指定)作為參數;

2.連接指定多列字元串作為一個列作為參數;

3.每行調用一次date_parser函數來解析一個或者多個字元串(由parse_dates指定)作為參數。

**dayfirst **: boolean, default False

DD/MM格式的日期類型

**iterator **: boolean, default False

返回一個TextFileReader 對象,以便逐塊處理文件。

chunksize : int, default None

文件塊的大小, See IO Tools docs for more information on iterator and chunksize.

compression : {『infer』, 『gzip』, 『bz2』, 『zip』, 『xz』, None}, default 『infer』

直接使用磁碟上的壓縮文件。如果使用infer參數,則使用 gzip, bz2, zip或者解壓文件名中以『.gz』, 『.bz2』, 『.zip』, or 『xz』這些為後綴的文件,否則不解壓。如果使用zip,那麼ZIP包中國必須只包含一個文件。設置為None則不解壓。

新版本0.18.1版本支持zip和xz解壓

thousands : str, default None

千分位分割符,如「,」或者「."

decimal : str, default 『.』

字元中的小數點 (例如:歐洲數據使用』,『).

float_precision : string, default None

Specifies which converter the C engine should use for floating-point values. The options are None for the ordinary converter, high for the high-precision converter, and round_trip for the round-trip converter.

指定

**lineterminator **: str (length 1), default None

行分割符,只在C解析器下使用。

**quotechar **: str (length 1), optional

引號,用作標識開始和解釋的字元,引號內的分割符將被忽略。

quoting : int or csv.QUOTE_* instance, default 0

控制csv中的引號常量。可選 QUOTE_MINIMAL (0), QUOTE_ALL (1), QUOTE_NONNUMERIC (2) or QUOTE_NONE (3)

doublequote : boolean, default True

雙引號,當單引號已經被定義,並且quoting 參數不是QUOTE_NONE的時候,使用雙引號表示引號內的元素作為一個元素使用。

escapechar : str (length 1), default None

當quoting 為QUOTE_NONE時,指定一個字元使的不受分隔符限值。

comment : str, default None

標識著多餘的行不被解析。如果該字元出現在行首,這一行將被全部忽略。這個參數只能是一個字元,空行(就像skip_blank_lines=True)注釋行被header和skiprows忽略一樣。例如如果指定comment='#' 解析『#empty a,b,c 1,2,3』 以header=0 那麼返回結果將是以』a,b,c'作為header。

encoding : str, default None

指定字元集類型,通常指定為'utf-8'. List of Python standard encodings

dialect : str or csv.Dialect instance, default None

如果沒有指定特定的語言,如果sep大於一個字元則忽略。具體查看csv.Dialect 文檔

tupleize_cols : boolean, default False

Leave a list of tuples on columns as is (default is to convert to a Multi Index on the columns)

error_bad_lines : boolean, default True

如果一行包含太多的列,那麼默認不會返回DataFrame ,如果設置成false,那麼會將改行剔除(只能在C解析器下使用)。

warn_bad_lines : boolean, default True

如果error_bad_lines =False,並且warn_bad_lines =True 那麼所有的「bad lines」將會被輸出(只能在C解析器下使用)。

**low_memory **: boolean, default True

分塊載入到內存,再低內存消耗中解析。但是可能出現類型混淆。確保類型不被混淆需要設置為False。或者使用dtype 參數指定類型。注意使用chunksize 或者iterator 參數分塊讀入會將整個文件讀入到一個Dataframe,而忽略類型(只能在C解析器中有效)

**buffer_lines **: int, default None

不推薦使用,這個參數將會在未來版本移除,因為他的值在解析器中不推薦使用

compact_ints : boolean, default False

不推薦使用,這個參數將會在未來版本移除

如果設置compact_ints=True ,那麼任何有整數類型構成的列將被按照最小的整數類型存儲,是否有符號將取決於use_unsigned 參數

use_unsigned : boolean, default False

不推薦使用:這個參數將會在未來版本移除

如果整數列被壓縮(i.e. compact_ints=True),指定被壓縮的列是有符號還是無符號的。

memory_map : boolean, default False

如果使用的文件在內存內,那麼直接map文件使用。使用這種方式可以避免文件再次進行IO操作。

ref:
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

㈤ python中怎麼讀取csv文件

Python讀取CSV文件方法如下:
如下是一個CVS文件
使用Python打開CSV可以直接使用open函數打開,然後使用reader函數讀取內容,實現代碼如下:
運行結果如下:
更多Python相關技術文章,請訪問Python教程欄目進行學習!以上就是小編分享的關於python中怎麼讀取csv文件的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!

㈥ python怎麼讀取csv文件

csv文件就是用逗號分隔的文本文件,和文本文件的讀取方式相同。
如果csv文件都是數值,想要將其轉為列表,可採用如下程序實現:
# csv_file
f=open('abc.txt','r')
lines=f.readlines()
print(lines)
f.close()
list1=[]
for line in lines:
for i in line.split(','):
list1.append(int(i))
print(list1)

㈦ 怎麼用python讀取csv數據

python 自帶 csv 框架。

#讀取csv文件
importcsv
withopen('some.csv','rb')asf:#採用b的方式處理可以省去很多問題
reader=csv.reader(f)
forrowinreader:#dosomethingwithrow,suchasrow[0],row[1]

importcsv
withopen('some.csv','wb')asf:#採用b的方式處理可以省去很多問題
writer=csv.writer(f)
writer.writerows(someiterable)

㈧ 說說如何利用 Python 處理 CSV 文件

CSV 表示 「Comma-Separated Values (逗號分隔的值) 」 , CSV 文件是簡化的電子表格,實際為純文本文件。

一個 CSV 文件,格式是這樣的:

因為 CSV 文件中的每個單元格都是以逗號分割,所以也許有人會對每行文本調用 split() 方法,來解析 CSV 文件。但 CSV 文件也有自己的轉義字元,通過轉義字元,允許逗號和其他字元作為值的一部分,但單純使用 split() 方法不能處理這些轉義字元。因為這些潛在的缺陷,所以建議總是使用 csv 模塊來讀寫 CSV 文件。

csv 模塊是 Python 自帶的,所以可以直接導入。

要使用 csv 模塊從 CSV 文件中讀取數據,我們需要創建一個 Reader 對象。 通過 Reader 對象,我們可以迭代遍歷 CSV 文件中的每一行內容。

運行結果:

要用 csv 模塊讀取 CSV 文件,首先先使用 open() 函數打開它 ,就像打開任何其他文本文件一樣。然後將它傳遞給 csv .reader() 函數。 這個函數將返回一個 Reader 對象。注意,csv .reader() 函數不接受文件名作為入參。

要訪問 Reader 對象中的值,最直接的方法,就是利用 list() 將它轉換成一個普通 Python 列表。它實際為一個包含列表的列表,用於表示二維數據。

我們還可以使用表達式 data [ row ][ col ] 來訪問 CSV 中特定行和列的值。其中, row 是 data 中一個列表的下標, col 是該列表中,我們想訪問的項的下標:

運行結果:

運行結果:

Writer 對象可以讓我們把數據寫入 CSV 文件。

運行結果:

在 Windows 上,需要為 open() 函數的 newline 關鍵字參數傳入一個空字元串。如果沒有設置 newline 參數, output.csv 中的行距將變為兩倍,如下圖所示。

如果寫入的內容包含逗號,那麼 csv 模塊會自動加上雙引號,對其進行轉義,如下例所示。

運行結果:

我們也可以利用 delimiter ,來製作 TSV 文件,TSV 是Tab-separated values的縮寫,即以製表符作為分隔符的文件;利用 lineterminator 參數來設定行距。

運行結果:

這里利用 lineterminator='\n\n\n' 將行與行之間的字元變為三個換行符,效果就是實現了 3 倍行距。

㈨ python—CSV的讀寫

1.寫入csv數據

import csv

header=['class','name','sex','height','year']

rows=[

[1,'xiaoming','male',168,23],

[1,'xiaohong','female',162,22],

[2,'xiaozhang','female',158,21],

[2,'xiaoli','male',158,21]

]

with open('csvdir.csv','w',newline='')as f:          #newline=" "是為了避免寫入之後有空行

        ff=csv.writer(f)

        ff.writerow(header)

        ff.writerows(rows)

2.在寫入字典序列類型數據的時候,需要傳入兩個參數,一個是文件對象——f,一個是欄位名稱——fieldnames,到時候要寫入表頭的時候,只需要調用writerheader方法,寫入一行字典系列數據調用writerrow方法,並傳入相應字典參數,寫入多行調用writerows  

import csv

headers = ['class','name','sex','height','year']

rows = [

        {'class':1,'name':'xiaoming','sex':'male','height':168,'year':23},

        {'class':1,'name':'xiaohong','sex':'female','height':162,'year':22},

        {'class':2,'name':'xiaozhang','sex':'female','height':163,'year':21},

        {'class':2,'name':'xiaoli','sex':'male','height':158,'year':21},

    ]

with open('test2.csv','w',newline='')as f:

      f_csv = csv.DictWriter(f,headers)

      f_csv.writeheader()

      f_csv.writerows(rows)

注意:列表和字典形式的數據寫入是不一樣的!!!!!!

3.csv的讀取,和讀取文件差不多:

import csv 

with open('test.csv')as f:

    f_csv = csv.reader(f)

    for row in f_csv:

        print(row)

㈩ python怎麼讀取csv文件

這兩天剛好看到,Python CookBook上有說到。這里是三種讀取csv的方法。

文件格式是這樣的

Region,DATE_,RAW_ACU

zh_ch,Jan 27 2017,208172

importcsv


#withopen('data.csv')asf:
#f_csv=csv.reader(f)
#headers=next(f_csv)
#forrowinf_csv:
##print(row)
#print(row[0],row[1])


#withopen('data.csv',encoding='utf-8-sig')asf:
#f_csv=csv.reader(f)
#headers=next(f_csv)
#print(headers)
#Row=namedtuple('Row',headers)
#forrinf_csv:
#row=Row(*r)
#print(row.Region,row.DATE_)


withopen('data.csv',encoding='utf-8-sig')asf:
f_csv=csv.DictReader(f)
forrowinf_csv:
print(row['DATE_'],row)

具體可以看這個文檔。http://python3-cookbook.readthedocs.io/zh_CN/latest/c06/p01_read_write_csv_data.html。
熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:585
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:881
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:574
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:761
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:676
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1004
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:249
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:108
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:798
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:705