访问数据往往是使用各种分析工具的第一步,数据文件与数据格式常常有很多种,通过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()
读取结果为:
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()方法展示其中一部分数据,结果如下:
在读取过程中,也可以对数据进行一定的处理,因此有几个参数在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进行读取
读取需要两个步骤:
- 使用ExcelFile方法,将xls或xlsx文件的路径传入,生成一个实例
- 通过pandas.read_excel方法读取到DataFrame中
举例如下:
现在有表格Customer.xls,有三个子表,包括Sheets1,Customer1和Customer2三个子表展示如下图,现在要读取Customer1子表内的数据。
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.2 写入Excel
使用pandas写入excel需要两个步骤
- 生成一个ExcelWriter
- 使用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')