python 常用技巧
1. 数据整理
排序
排序主要用到
sorted()
函数sorted(iterable[, cmp[, key[, reverse]]])
- iterable:是可迭代类型类型;
- cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;
- key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;
- reverse:排序规则. reverse = True 或者 reverse = False,有默认值,默认为升序排列(False)。
字典排序
字典三个常用的方法
items()
,keys()
,values()
分别将字典中相应的数据以列表的形式返回。按照
key
值排序:sorted(d.items(),key=lambda item:item[0])
sorted(d) #也是按照d中的key排序
items()
方法将字典的元素 转化为了元组,而这里key
参数对应的lambda
表达式的意思则是选取元组中的第一个元素作为比较参数按照
value
值排序:sorted(d.items(),key=lambda item:item[1],reverse=True)
list,tuple排序
>>> student_tuples = [ ('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10), ] >>> sorted(student_tuples, key=lambda student: student[2]) # sort by age [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
execl
操作xld 操作xls文件
获取一个工作表
data = xlrd.open_workbook('excel.xls') table = data.sheets()[0] #通过索引顺序获取 table = data.sheet_by_index(0) #通过索引顺序获取 table = data.sheet_by_name(u'Sheet1') #通过名称获取
获取整行和整列的值(数组)
table.row_values(i) table.col_values(i)
获取行数和列数,单元格值
table.nrows table.ncols table.cell(0,0).value table.cell(2,3).value
#一个写操作例子 import xlwt workbook = xlwt.Workbook(encoding = 'ascii') worksheet = workbook.add_sheet('My Worksheet') worksheet.write(0, 0, label = 'Row 0, Column 0 Value') workbook.save('Excel_Workbook.xls')
openpyxl操作
基础操作
from openpyxl import load_workbook # 默认可读写,若有需要可以指定write_only和read_only为True wb = load_workbook('mainbuilding33.xlsx') # 获得所有sheet的名称 print(wb.get_sheet_names()) # 根据sheet名字获得sheet a_sheet = wb.get_sheet_by_name('Sheet1') # 获得sheet名 print(a_sheet.title) # 获得当前正在显示的sheet, 也可以用wb.get_active_sheet() sheet = wb.active # 获取某个单元格的值,观察excel发现也是先字母再数字的顺序,即先列再行 b4 = sheet['B4'] # 分别返回 print(f'({b4.column}, {b4.row}) is {b4.value}') # 返回的数字就是int型 # 除了用下标的方式获得,还可以用cell函数, 换成数字,这个表示B4 b4_too = sheet.cell(row=4, column=2) print(b4_too.value) # 获得最大列和最大行 print(sheet.max_row) print(sheet.max_column) #sheet.rows为生成器, 里面是每一行的数据,每一行又由一个tuple包裹。 #sheet.columns类似,不过里面是每个tuple是每一列的单元格。 # 因为按行,所以返回A1, B1, C1这样的顺序 for row in sheet.rows: for cell in row: print(cell.value) # A1, A2, A3这样的顺序 for column in sheet.columns: for cell in column: print(cell.value)
numpy操作
基础方法
# 返回特定大小,以 1 填充的新数组。 numpy.ones(shape, dtype = None, order = 'C') x = np.ones([2,2], dtype = int) [[1 1] [1 1]] # 返回特定大小,以 0 填充的新数组。 numpy.zeros(shape, dtype = float, order = 'C') x = np.zeros(5) x = np.zeros((5,), dtype = np.int) [0 0 0 0 0] #list 转 numpy np.array(a) #ndarray 转 list a.tolist()