笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值,找寻数据的秘密,笔者认为,数据的价值不仅仅只体现在企业中,个人也可以体会到数据的魅力,用技术力量探索行为密码,让大数据助跑每一个人,欢迎直筒们关注我的公众号,大家一起讨论数据中的那些有趣的事情。
我的公众号为:livandata
一直以来想写一系列平时关于小技能的专题,刚好过年练笔,借这个机会整理一下,这一系列的文章并没有什么高深的技能,也没有复杂的逻辑和深奥的原理,但却是平时频繁用到的比较实用的小功能,经过一行行代码的编写,从网上或者自己写出一套资料,方便自己后面使用。
工具提前准备在平时的工作中是提高效率的一个较好的方法,我们只需要记住在这个位置有这一套方法,当用到时能够及时的翻出来,用最短的时间实现功能即可,我想大家也都了解木牛流马也不是诸葛亮边打仗边造出来的吧。
Python被编造出来主要的初衷就是释放双手,让我们将更多的精力放在逻辑上,放在思维上,那我们也尝试着用CSDN整理一套属于我们自己的“木牛流马”,方便我们在缺粮的时候使用。
在做数据分析时经常会用到的功能是Excel的读写问题,如何读入Excel,然后对数据进行处理,然后再输入Excel是我们用python进行数据分析时经常会用到的,此处我们进行整理,如下:
1、读入Excel文件:
#!/usr/bin/env python
# _*_ UTF-8 _*_
'''
@project:GBDT+LR-Demo
@author:xiaofei
'''
import xlrd
# 用来存储数据
tables = []
newTables = []
def read_excel(path):
# 打开文件
workbook = xlrd.open_workbook(path)
# 获取所有sheet
sheet_name = workbook.sheet_names()[0]
# 根据sheet索引或者名称获取sheet内容
sheet = workbook.sheet_by_index(0) # sheet索引从0开始
# sheet = workbook.sheet_by_name('Sheet1')
#print (workboot.sheets()[0])
# sheet的名称,行数,列数
print (sheet.name,sheet.nrows,sheet.ncols)
# 获取整行和整列的值(数组)
rows = sheet.row_values(1) # 获取第2行内容
# cols = sheet.col_values(2) # 获取第3列内容
print (rows)
# print (cols)
# 将内容读取出来,放到list中。
for rown in range(sheet.nrows):
array = {'L1':'','L2':'','L3':'','L4':'','Question':'','Answer':''}
array['L1'] = sheet.cell_value(rown,0)
array['L2'] = sheet.cell_value(rown,1)
array['L3'] = sheet.cell_value(rown,2)
array['L4'] = sheet.cell_value(rown,3)
array['Question'] = sheet.cell_value(rown,4)
array['Answer'] = sheet.cell_value(rown,5)
tables.append(array)
print(tables)
print (len(tables))
if __name__ == '__main__':
# 读取Excel
read_excel(r'C:/Users/xiaofei/Desktop/test3.xlsx');
print ('读取成功')
2、写出数据:
#!/usr/bin/env python
# _*_ UTF-8 _*_
import openpyxl
# 写excel
# 用来存储数据
tables = []
newTables = []
def write_excel():
f = openpyxl.Workbook() # 创建工作簿
sheet1 = f.create_sheet()
# sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) #创建sheet
row0 = [u'L1', u'L2', u'L3', u'L4', u'问题', u'答案']
# 生成第一行
# for i in range(len(row0)):
# sheet1.cell(column=i,row=0).value='L1')
# 生成后续
for jkey in range(len(newTables)):
jk = 1
for cT in range(arrayNum):
jk = jkey + 1
if cT == 0:
sheet1.cell(row=jk, column=cT + 1).value = '1'
else:
sheet1.cell(row=jk, column=cT + 1).value = '2'
f.save("chatPy.xlsx") # 保存文件
if __name__ == '__main__':
# 写入Excel
write_excel();
print('写入成功')
3、读入txt文件:
#!/usr/bin/env python
# _*_ UTF-8 _*_
#第一种方法
f = open("test.txt","r") #设置文件对象
line = f.readline()
line = line[:-1]
while line: #直到读取完文件
line = f.readline() #读取一行文件,包括换行符
line = line[:-1] #去掉换行符,也可以不去
f.close() #关闭文件
#第二种方法
data = []
for line in open("test.txt","r"): #设置文件对象并读取每一行文件
data.append(line) #将每一行文件加入到list中
#第三种方法
f = open("test.txt","r") #设置文件对象
data = f.readlines() #直接将文件中按行读到list里,效果与方法2一样
f.close() #关闭文件
# 第四种方法:
import numpy as np
data = np.loadtxt("test.txt") #将文件中数据加载到data数组里
4、写出txt文件:
#!/usr/bin/env python
# _*_ UTF-8 _*_
#双层列表写入文件
#第一种方法,每一项用空格隔开,一个列表是一行写入文件
data =[ ['a','b','c'],['a','b','c'],['a','b','c']]
with open("test.txt","w") as f: #设置文件对象
for i in data: #对于双层列表中的数据
i = str(i).strip('[').strip(']').replace(',','').replace('\'','')+'\n'
#将其中每一个列表规范化成字符串
f.write(i)
#写入文件
#第二种方法,直接将每一项都写入文件
data =[ ['a','b','c'],['a','b','c'],['a','b','c']]
with open("test.txt","w") as f:
#设置文件对象
for i in data:
#对于双层列表中的数据
f.writelines(i)
#写入文件
#第三种方法 将数组写入文件
import numpy as np
#第一种方法
np.savetxt("data.txt",data) #将数组中数据写入到data.txt文件
#第二种方法
np.save("data.txt",data) #将数组中数据写入到data.txt文件
以上为常见的读写文件的方法,因为频繁使用Excel与txt,所以将其做个整理,希望能提高效率。