Python的文件讀取與寫入

訪問數據往往是使用各種分析工具的第一步,數據文件與數據格式常常有很多種,通過python對數據文件的訪問包括對文件的讀取和寫入,主要總結數據形式包括常用的txt,csv,json格式,Excel格式。

1 讀寫txt文本

1.1 讀取txt文件

訪問txt文本,可以通過python自帶的open方法打開,open方法內寫入文本所在的路徑,即可打開文本
語句舉例如下:

txt_path = "./data/NewStudents.txt"
f = open(txt_path)
f.read()
f.close()

讀取結果爲:
圖1

1.2 寫入txt

寫入文件使用的方法是write(str),但是文件打開的時候是不能直接寫入的,默認是可讀打開的,因此,在使用open方法時,需要對參數模式進行修改,常用的參數模式有以下幾個:

模式 描述
r 以讀的方式打開,可讀取文件,默認的打開方式0
w 以寫的方式打開,可寫入文件。若文件存在,則清空重新寫入
a 以追加的方式打開,如果文件不存在,則先創建再寫入
r+ 以讀寫的方式打開,可對文件進行讀寫操作
w+ 消除文件內容,然後以讀寫方式打開
a+ 以讀寫的方式打開,並從內容末尾處追加
b 以二進制模式打開而非文本方式,只對Windows或Dos有效

舉例如下:

txt_path1 = "./data/OutNewStudents.txt"
f1 = open(txt_path1, 'r+')
f1.write(str)
f1.close()

將上述剛剛讀取的文本寫入到OutNewStudents.txt文件中,可以使用上述讀取的代碼修改一下,打開看該文件,會發現該文件中有上述讀取的內容。
對於詳細的文本文件添加方法有很多其他知識點,可以參考Python讀寫txt文本文件的更深的知識點。

2 讀寫csv文件

2.1 讀取csv文件

1 使用pandas讀取
使用read_csv方法進行讀取,併成爲DataFrame格式,具體代碼舉例如下:

import pandas as pd
csv_path = "./data/BuyOrNot.csv"
csv_data = pd.read_csv(csv_path)
csv_data.head()

讀取的結果放入到csv_data中,通過head()方法展示其中一部分數據,結果如下:
圖2
在讀取過程中,也可以對數據進行一定的處理,因此有幾個參數在read_csv方法中經常使用到,通過代碼來進行解釋:

# 常用參數1 sep:文件內容分隔符
csv_data1 = pd.read_csv(csv_path, sep=",")

# 常用參數2:header=None,是否使用表格頭部
csv_data2 = pd.read_csv(csv_path, header=None)

# 常用參數3:names:指定新的列名,index_col:指定新的列索引
csv_data3 = pd.read_csv(csv_path, names=["col1", "col2", "col3", "col4"], index_col=['col1', 'col2'])

# 常用參數4:skiprows:來跳過表格中的某幾行,na_values:用來處理異常和缺失值,即把指定的數值替換成NAN值
sentinels = {'age': [41, 47]} #這裏把年齡爲41和47的值替換爲NAN
csv_data4 = pd.read_csv(csv_path,na_values=sentinels)


2. 使用系統csv模塊讀取
與讀取txt文本類似,可以對文件使用open方法得到文件型對象,然後對讀取的文件型對象傳遞給csv.reader()方法,,具體代碼舉例如下

import csv
f = open(csv_path)
csv_reader = csv.reader(f)
# csv_reader 是文件對象,可通過遍歷生產列表List
for line in csv_reader:
    print(line)

在上述執行結果中,輸出的line爲list類型而不是DataFrame類型數據

2.2 寫入csv

使用pandas對象中的to_csv方法寫入文件,具體代碼的例子如下:

to_path = "./data/out_BuyOrNot.csv"
csv_data.to_csv(to_path,)

這裏的待寫入的文件在文件路徑中要存在,否則寫入文件時會提示找不到文件而報錯

3 讀寫json格式數據

json數據類似於字典,解析json數據往往是讀取其中的文本,然後進行分析

3.1 讀取字符串

通過引用json模塊,來進行字符串的讀取
loads方法:使用python將json字符串解析爲Python中的字典數據,具體代碼舉例如下:

import json
myobj = """

{
"name":"Tom",
"place_lived":["US","China"],
"pet":null,
"siblings":[
{"name":"Sot","age":30,"pets":["dog","cat"]},
{"name":"cindy","age":29,"pets":["pig","ant"]}]
}
"""
# loads方法:將json字符串加載爲python中字典的形式,字符串中的鍵需要使用雙引號包含起來
json_data = json.loads(myobj)
json_data

上述代碼中,myobj是json形式的字符串,使用loads方法對字符串進行解析,展示的結果如下:
{‘place_lived’: [‘US’, ‘China’], ‘siblings’: [{‘age’: 30, ‘pets’: [‘dog’, ‘cat’], ‘name’: ‘Sot’}, {‘age’: 29, ‘pets’: [‘pig’, ‘ant’], ‘name’: ‘cindy’}], ‘name’: ‘Tom’, ‘pet’: None}
在上述過程中,解析後的json_data數據是dict類型

3.2 轉換爲字符串

將字典形式的數據解析爲json文本字符串,使用的方法是dumps方法,具體舉例如下:

# dumps方法:將json字典解析爲字符串
get_json = json.dumps(json_data)
print(type(json_data),type(get_json))

將上述解析後得到的dict數據轉換成文本,可以看到得到的兩種類型輸出分別爲:<class ‘dict’> <class ‘str’>

4 讀寫Excel數據

Excel的格式包括xlsx格式和xls格式

4.1 讀取Excel

1.使用pandas進行讀取

讀取需要兩個步驟:

  1. 使用ExcelFile方法,將xls或xlsx文件的路徑傳入,生成一個實例
  2. 通過pandas.read_excel方法讀取到DataFrame中

舉例如下:
現在有表格Customer.xls,有三個子表,包括Sheets1,Customer1和Customer2三個子表展示如下圖,現在要讀取Customer1子表內的數據。
圖3

excel_path = "./data/Customer.xls"
xls_get = pd.ExcelFile(excel_path)
xls_data = pd.read_excel(xls_get, ''Customer1'')
xls_data

在上述代碼中,首先通過 pd.ExcelFile()將文件生產一個實例,然後通過pd.read_excel()將Customer1讀取到DataFrame中,展示的結果如下:
圖4

4.2 寫入Excel

使用pandas寫入excel需要兩個步驟

  1. 生成一個ExcelWriter
  2. 使用pandas對象的to_excel方法直接將數據寫入

具體舉例如下,現在有一個表格put_Customer.xls,將上述讀取的Customer1子表內的數據存放到put_Customer.xls表格中的Sheet1子表內,具體代碼如下:

put_path = "./data/put_Customer.xls"
xls_put = pd.ExcelWriter(put_path)
xls_data.to_excel(put_path,'Sheet1')

也可以將文件路徑直接傳給to_excel,避免直接調用ExcelWriter,即:

xls_data.to_excel(put_path,'Sheet1')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章