前言
在工作中常常面临诸多重复操作,一般都是要求时间紧任务重,在短期内往往需要查询大量语法来进行编码,过多的浪费时间,此处总结自己常用的操作,方便学习和查询。
好用的数据结构
- defaultdict
- OrderedSet
- OrderedDict
使用字符串作为变量名
将值为字符串的变量作为新的变量名来使用,往往能所见即所得的快速处理数据;需要特别说明的是,Python支持将中文作为变量名。
>>> var = "This is a string"
>>> varName = 'var'
>>> s= locals()[varName]
>>> s
'This is a string'
>>> s2=vars()[varName]
>>> s2
'This is a string'
>>> s3=eval(varName)
>>> s3
'This is a string'
excel操作
考虑到可能会弄混操作,本人习惯性使用两个库来分别进行excel的操作。
读excel——pandas
使用pandas库较强大的操作execl,其中记录相应的操作。
读取xlsx(全部sheet)
import pandas as pd
df = pd.read_excel(io='./data.xlsx',sheet_name=None)
获取非法字符
# 处理空格等非法字符
df = df.fillna(0) # 将缺失值填充为0
df = df.fillna('') # 将空值替换为空字符串
获取相关信息
# 获取excel的总行数
rows = len(df)
# 获取execl的总列数
cols = len(df.head())
# 获取execl的标题
title = df.columns.tolist()
# 获取excel的某行元素
context = df.iloc[row].tolist()
# 获取excecl的某列元素
# 先使用df.colums获取列名,然后用列名选择
title = df.columns.tolist()
df[title[0]].tolist()
# 读取1行2列的元素
print(df.iat[1, 2])
# 写入1行2列的元素
df.iat[1, 2] = 'VALUE'
# 选择指定的行和列
df = df.iloc[1:3, 0:2] # 选择第2-3行和第1-2列的数据
# 读取某一列数据
areas_list = df["国家/代表处"].values.tolist()
写入excel
# 创建DataFrame对象
data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky'],
'Age': [28, 34, 29, 42]}
df = pd.DataFrame(data)
df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)
对数据进行排序
df = df.sort_values('Age', ascending=False) # 按Age降序排列
按行遍历(重要)
import pandas as pd
df = pd.read_excel("test.xlsx")
datas = df.values.tolist()
for idx,line in enumerate(datas):
print(line) # 每一列的元素,以列表的形式呈现
写excel
xlsxwriter库是专门用来写excel数据的库,需要注意的是,该库不提供读操作。
创建excel
import xlsxwriter
# 创建excel文件
f = xlsxwriter.Workbook()
# 创建工作表
worksheet1 = f.add_worksheet('操作日志') # 括号内为工作表表名
# 添加工作表样式
bold = f.add_format({
'bold': True, # 字体加粗
'border': 1, # 单元格边框宽度
'align': 'left', # 水平对齐方式
'valign': 'vcenter', # 垂直对齐方式
'fg_color': '#F4B084', # 单元格背景颜色
'text_wrap': True, # 是否自动换行
})
# 关闭excl
workbook.close()
写入数据
# 写入单个单元格数据
//row:行, col:列, data:要写入的数据, bold:单元格的样式
worksheet1.write(row, col, data, bold)
# 写入一整行,一整列
// A1:从A1单元格开始插入数据,按行插入, data:要写入的数据(格式为一个列表), bold:单元格的样式
worksheet1.write_row("A1",data,bold)
// A1:从A1单元格开始插入数据,按列插入, data:要写入的数据(格式为一个列表), bold:单元格的样式
worksheet1.write_column("A1",data,bold)
# 获取当前excel文件的所有工作表
workbook.worksheets()
简单实例
import xlsxwriter
workbook = xlsxwriter.Workbook('test1.xlsx') # 新建excel表格
sheet1 = workbook.add_worksheet("test") # 添加sheet
sheet1.write(5, 7, "test") # 写元素
workbook.close() # 关闭文件