Python 學習 第十三篇:數據的讀寫-文件、DataFrame、json

Python的文件是一個重要的對象,使用open()函數來打開文件,建立文件對象,進行文件的讀寫操做。當數據用於交換信息時,一般須要把數據保存爲有格式的文本數據,能夠保存爲有特定的行分隔符和列分隔符的數據,這能夠使用pandas模塊中的函數來讀寫;也能夠保存爲json結構的數據,這能夠使用json模塊中的函數來實現;對於大型的數據交互,一般使用數據庫。html

一,Python的open函數

open()函數用於打開文件,建立文件對象:python

open(name, mode, encoding=None)

參數註釋:正則表達式

name是文件名,包括路徑數據庫

encoding 是編碼方式,經常使用的編碼方式是utf-8json

mode是打開文件的模式,最經常使用的模式是:函數

  • r:只讀模式,表示打開文件是爲了從文件的開頭讀取文件中的數據;
  • w:只寫模式,表示打開文件是爲了向文件寫入數據。若是該文件已存在,那麼打開該文件,刪除原有的內容,從文件開頭開始寫入;若是該文件不存在,那麼建立新的文件。

open()函數建立一個file 對象,文件對象的主要方法:編碼

  • file.read([size]):size 未指定則返回整個文件,若是文件大小 >2 倍內存則有問題,f.read()讀到文件尾時返回""(空字串)。
  • file.readline():只讀取一行。
  • file.readlines([size]) :返回包含size行的列表, size 未指定則返回所有行。
  • for line in f: print( line ):經過迭代器訪問。
  • f.write("hello\n"):若是要寫入字符串之外的數據,先將他轉換爲字符串。
  • f.close() 關閉文件

1,讀取文件spa

調用open()函數打開一個文件,設置mode='r',表示打開文件是爲了讀取文件中的數據,調用文件對象的函數或迭代器來逐行讀取數據:.net

file = open('test.txt','r',encoding='utf-8')
lines = [line.strip() for line in file] 
file.close()

注意:打開文件以後,完成文件的讀寫以後,必須調用文件對象的close()方法,最終關閉文件。code

2,寫入文件

調用open()函數打開一個文件,若是設置mode='w',那麼表示打開文件是爲了向文件中寫入數據,調用文檔對象的write('content')函數向文檔中寫入內容。

file = open('test.txt','w',encoding='utf-8')
file.write('write content to file')
file.close()

注意:打開文件以後,完成文件的讀寫以後,必須調用文件對象的close()方法,最終關閉文件。

3,文件的關閉

調用open()函數打開一個文件,是把文件讀取到內存中的,若是不及時關閉文件,文件對象就會一直佔用系統資源,除了調用文件對象的close()方法關閉文件以外,還能夠使用 with open(),由系統自動關閉文件:

with open('test.txt','r',encoding='utf-8') as file:
    lines = [line.strip() for line in file] 

二,pandas模塊

pandas模塊提供了一些用於把表格型數據讀取爲DataFrame對象的函數。

1,格式化數據的讀取

read_csv:從文件、URL、文件型對象中加載帶分隔符的數據,默認的分隔符是逗號。

read_table:從文件、URL、文件型對象中加載帶分隔符的數據,默認的分隔符是製表符(\t)。

參數註釋:

  • path:要讀取的文件的位置
  • sep:用於對行中各字段進行拆分的字符序列或正則表達式
  • header:用做列名的行號,默認值是0,若是沒有header行,設置爲None
  • index_col:用於行索引的列編號
  • names:用於自定義列名列表,結合header=None
  • na_values:一組用於替換NA的值
  • iterator:返回一個TextParser以便逐塊讀取文件
  • chunksize:文件的大小,用於迭代
  • nrows:須要讀取的行數,從文件開始處計算

 2,輸出數據

利用DataFrame的to_csv方法,能夠把數據寫到一個以逗號分隔的文件中

DataFrame.to_csv(path_or_buf=None, sep=', ', na_rep='', float_format=None, columns=None, 
header=True, index=True, index_label=None, mode='w', encoding=None, compression=None, 
quoting=None, quotechar='"', line_terminator='\n', chunksize=None, tupleize_cols=None, 
date_format=None, doublequote=True, escapechar=None, decimal='.')

經常使用參數註釋:

  • path_or_bu:輸出文件的路徑,或者設置sys.stdout
  • sep:行中個字段的分隔符,默認是逗號
  • na_rep:替換缺失數據的字符
  • columns:列名列表,結合header=None
  • header:是否輸出header,默認值是True
  • index:是否輸出索引,默認是True
  • line_terminator:列分隔符

三,json

Python中的json對象實際是一個字典結構,用於存儲和交換信息,導入json模塊:

import json

1,把字符串轉換爲json

json的load()方法用於把josn格式的字符串轉換爲json對象,這其實是一個字典結構:

json_string=  '{ "name":"John", "age":30, "city":"New York"}'
# parse string to json
json_obj = json.loads(json_string)

2,把字典轉換爲json字符串

json的dumps()函數用於把字典結構轉換爲json格式的字符串。

x = {
  "name": "John",
  "age": 30,
  "city": "New York"
}
# convert dict into JSON string:
json_string = json.dumps(x)

 

參考文檔:

Python之文件讀寫

pandas系列 read_csv 與 to_csv 方法各參數詳解(全,中文版)

Python JSON

相關文章
相關標籤/搜索