访问数据往往是使用各种分析工具的第一步,数据文件与数据格式常常有很多种,通过python对数据文件的访问包括对文件的读取和写入,主要总结数据形式包括常用的txt,csv,json格式,Excel格式。


Python的文件读取与写入

  • 1 读写txt文本
  • 1.1 读取txt文件
  • 1.2 写入txt
  • 2 读写csv文件
  • 2.1 读取csv文件
  • 2.2 写入csv
  • 3 读写json格式数据
  • 3.1 读取字符串
  • 3.2 转换为字符串
  • 4 读写Excel数据
  • 4.1 读取Excel
  • 4.2 写入Excel


1 读写txt文本

1.1 读取txt文件

访问txt文本,可以通过python自带的open方法打开,open方法内写入文本所在的路径,即可打开文本
语句举例如下:

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

读取结果为:

python数据写入文本文件 python 写入文本文档_字符串

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文件中,可以使用上述读取的代码修改一下,打开看该文件,会发现该文件中有上述读取的内容。

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()方法展示其中一部分数据,结果如下:

python数据写入文本文件 python 写入文本文档_字符串_02


在读取过程中,也可以对数据进行一定的处理,因此有几个参数在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子表内的数据。

python数据写入文本文件 python 写入文本文档_字符串_03

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中,展示的结果如下:

python数据写入文本文件 python 写入文本文档_数据_04

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')