前言

在工作中常常面临诸多重复操作,一般都是要求时间紧任务重,在短期内往往需要查询大量语法来进行编码,过多的浪费时间,此处总结自己常用的操作,方便学习和查询。

好用的数据结构

  • 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()                                # 关闭文件