python讀取csv的一行
1. python讀取csv文件的某一行
1.全部讀到成列表然後選取行(容易超時,亂碼等問題)
2.利用迭代工具,代碼如下:
from itertools import islice
with open('data.tsv', 'r') as f:
for line in islice(f, 1, None):
# process data
f.close()
修改islice函數中第2個參數n即可,表示讀到f文件對象的第n行
2. 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)
3. 2018-01-06 python讀取csv某一行
我要讀取csv文件中的某一行,寫到這里的時候就不知道咋整了:
至此,我想啊,怎麼輸出一行來呢?明明很簡單的問題,看來是python基礎不過關吶! 不過沒關系,所有的牛逼不都是這么一點一滴積累起來的么?!
保持好奇心和求知慾就好啦!!!
我把文件全部輸出( print row )是這樣子的:
假設我完全不知道上面的 csv_reader 就是一個迭代器,那麼我可能會認為這就是一個二維數組,那麼我直接 csv_reader[0] 輸出一行試試嘛!反正又不要錢!
失敗!*1
既然這樣子不行,那麼我把它整成二維數組不就好啦!
噢啦~打完收工!
但是這種寫法...... 一點都不優雅啊!你直接寫個0是什麼意思啊?裸奔嗎?你append是啥意思啊?不嫌累的慌嗎?這么寫跟C有什麼區別啊!作為貴族你的尊嚴呢?!
上面是我們根據行號來查找數據,但是假如我們要 根據行內數據特徵來查找 呢?
ang~介是嘛?! DictReader !!!
輸出的是字典了喲~ 第一行就是字典的key ,下面對應的就是value:
假如我要找TestResult=「1」的行,咋整?
輸出:
4. 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功能。
5. python中讀取csv文件
python中讀取csv方法有3種:
第一種,普通方法讀取(open函數打開,然後使用for循環讀取內容);
第二種,使用用CSV標准庫讀取;
第三種,用pandas模塊讀取。
6. python讀取CSV文件如何讀取最後一行的指
你這里有2個問題
1. 用csvfile.readlines()
2.你取的targetLine是一個字元串,需要進行分割
具體代碼如下,測試通過,請採納^_^
# coding=utf8
with open("C:\\test.csv") as csvfile:
mLines = csvfile.readlines()
targetLine = mLines[-1]
a=targetLine.split(',')[0]
print(a)
7. 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()
應用示例如下:
輸出結果:
開課吧廣場-人才學習交流平台
8. 說說如何利用 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 倍行距。
9. Python如何讀取csv文件某一列的每一行數據,並判斷該數值是否滿足條件
讀取csv文件,用的是csv.reader()這個方法。返回結果是一個_csv.reader的對象,我們可以對這個對象進行遍歷,輸出每一行,某一行,或某一列。代碼如下:
10. 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