数据分析之python文件读写方法汇总(open|csv|dataframe|openpyxl)

本文介绍 open|csv|dataframe|openpyxl 4种文件读写方法。

目录

一、内置方法open()读写

方式1-打开/读写/关闭(适用文件较小时):

方式2-with关键字防止忘记关闭(适用文件较小时):

方式3-readlines读取全部内容返回列表(适用文件较小时):

方式4-for循环逐行读取(占内存少,大文件可用;适用于对每行数据进行特殊操作):

二、csv模块读写

2-写入csv文件

三、DataFrame对象读写(适用数据需要计算时)

1-将表格型文件数据读取为DataFrame对象

2-将DataFrame对象写入文件

拓展:pd.ExcelWriter函数合并多个csv文件到一个excel的不同sheet

四、openpyxl库读写(适用格式处理、图表展示等需求)

2-写入excel文件


一、内置方法open()读写


方式1-打开/读写/关闭(适用文件较小时):

f = open('./data.txt', 'r') #读
print(f.read())
f.close()

f = open('./data.txt', 'w') #写(文件存在则清空重写)
f.write("第一行") 
f.close()

f = open('./data.txt', 'a') #追加(文件不存在则创建,存在则追加)
f.write('\n')
f.write("第二行") 
f.close()

方式2-with关键字防止忘记关闭(适用文件较小时):

with open('./data.txt', 'r') as f: #读
	print(f.read())

with open('./data.txt', 'w') as f: #写
	f.write("第一行")

with open('./data.txt', 'a') as f: #追加
	f.write('\n')
	f.write("第二行")

方式3-readlines读取全部内容返回列表(适用文件较小时):

f = open('./data.txt', 'r') #文件内容:d`换行` d`换行` d`换行`
print(f.readlines()) #结果:['d\n', 'd\n', 'd']
f.close()

拓展:列表推导式(适用于对每行数据进行特殊操作)
loadData = [line.strip() for line in open('./data.txt').readlines()]
print(loadData) #['d', 'd', 'd']

补充:readline读取第一行内容
f = open('./data.txt', 'r') #文件内容:d`换行` d`换行` d`换行`
print(f.readline()) #结果:d
f.close()

方式4-for循环逐行读取(占内存少,大文件可用;适用于对每行数据进行特殊操作):

for line in open("./data.txt"): 
    # print(line)
    print(line.strip()) #清除两边空白符


二、csv模块读写


1-读取csv文件


2-写入csv文件

import csv
list1 = [1, 2, 3]
list2 = [[4, 5, 6],[7, 8, 9]]
with open('outfile.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerow(['a', 'b', 'c']) #写入表头
    writer.writerow(list1) #列表写入同一行
    writer.writerows(list2) #二维列表中每个列表写入一行


三、DataFrame对象读写(适用数据需要计算时)


1-将表格型文件数据读取为DataFrame对象

import pandas as pd
pd.read_csv('./data.txt') #默认分隔符为逗号; #默认第一行为列名
pd.read_csv('./data.csv', names=['col1', 'col2']) #names指定列名
pd.read_table('./data.csv', sep=',') #默认分隔符为制表符("\t");sep指定分隔符
pd.read_excel('./data.xlsx', sheet_name="sheet1")

2-将DataFrame对象写入文件

df.to_csv('outfile.csv')
df.to_excel('outfile.xlsx', index=False) #index指定无索引

拓展:pd.ExcelWriter函数合并多个csv文件到一个excel的不同sheet

# 思路:csv转dataframe转excel 
# -*- coding: utf-8 -*-
import sys  
reload(sys)  
sys.setdefaultencoding('utf-8')  #出现ASCII编码问题,添加以上3行

import pandas as pd
aim = pd.ExcelWriter('/data/merge.xlsx') # 创建一个输出文件
data = pd.read_csv('/data/file1.csv',sep=',') #读取file1
data.to_excel(aim,'sheet_file1',index=False) #file1写入excel第一个sheet
data = pd.read_csv('/data/file2.csv',sep=',') #读取file2
data.to_excel(aim,'sheet_file2',index=False) #file2写入excel第二个sheet
aim.save() #保存excel

四、openpyxl库读写(适用格式处理、图表展示等需求)


1-读取excel文件

2-写入excel文件


import openpyxl

#新建excel
def creatwb(wbname):  
    wb=openpyxl.Workbook()
    wb.save(filename=wbname)
    print ("新建Excel:"+wbname+"成功")

#数据保存到excel
def savetoexcel(result, wbname):    
    creatwb(wbname)

    wb = openpyxl.load_workbook(filename=wbname) 
    sheet1 = wb.active #  获取默认打开的(active)的WorkSheet
    sheet1.title = 'price'
    fields = ['机型','产品名','产品类型','价格']
 
    field=1
    for field in range(1,len(fields)+1):   # 写入表头
        _=sheet1.cell(row=1,column=field,value=str(fields[field-1]))
 
    row1=1
    col1=0
    for row1 in range(2,len(result)+2):  # 写入数据
        for col1 in range(1,len(result[row1-2])+1):
            _=sheet1.cell(row=row1,column=col1,value=(result[row1-2][col1-1]))
 
    wb.save(filename=wbname)
    print("保存成功")

if __name__=='__main__':
	result = [['a', 'A', 'type1', '999'], ['b', 'B', 'type2', '1999']]
	wbname = './outfile.xlsx'
	savetoexcel(result, wbname)

参考:

1、最好懂的python文件读写(详解)

2、一篇文章带你搞懂Python的文件读写

3、Python逐行读取文件内容的方法总结

4、pandas如何在同一工作簿中保存多个sheet-----pd.ExcelWriter() 

5、openpyxl

6、Python:使用 csv 模块读写 csv 文件

你可能感兴趣的:(数据分析基础,Python数据分析,python,数据分析,开发语言)