numpy(科学计算,矩阵演算)与pandas(数据分析)

Numpy ndarray

1.使用array()将列表等容器转换为ndarray类型的数组

2.将ndarray数据看作矩阵,可以进行整体的数学运算

ndarray类型有个方法tolist()可以直接转换成列表

3.使用tolist()方法将ndarray转换为普通的python列表

4.使用numpy模块提供的各种函数对数组进行统计运算

自带sin log等函数

5.使用reshape将一维结构转换为二维结构的ndarray

a.reshape(行数,列数) 根据原数组a,生成一个指定行数列数的新二维数组

6.矩阵转置.T

numpy搭配xlwings的一个完整案例

import numpy as np
import xlwings as xw

app = xw.App()

wb = app.books.open('02.xlsx')

gongzi = np.array(wb.sheets['计件工资'].range('C4:E7').value)
jiangjin = np.array(wb.sheets['出勤奖励'].range('D5:D16').value).reshape(4, 3)
print('gongzi', gongzi)

print('jiangjin', jiangjin)

实发 = gongzi + jiangjin

wb.sheets['实发工资'].range('C5:F7').value = 实发.T


wb.save('02.xlsx')
wb.close()
app.quit()

import xlwings as xw

# import pandas as pd
# 打开Excel应用程序
app = xw.App()

# 打开工作簿
wb = app.books.open('工作簿1.xlsx')

# 选择工作表
ws = wb.sheets[0]

# 读取单元格的值
n1 = ws.range('A3:A16901').value
n2 = ws.range('B3:B16890').value

# 往表格中写入数据
ws.range('D2').options(transpose=True).value = list(set(n1) - set(n2))
ws.range('E2').options(transpose=True).value = list(set(n2) - set(n1))
ws.range('F2').options(transpose=True).value = list(set(n1) & set(n2))

# 往表格中写入数据
print('n1', n1)
print('n2', n2)

# 保存并关闭工作簿
wb.save()
wb.close()

# 关闭应用程序
app.quit()

pandas

pandas的excel读写使用了xlrdopenpyxl第三方模块,需要先安装才能使用

import pandas as pd

工资 = pd.read_excel('02.xlsx', '计件工资')
print(工资)

工资数据 = 工资.iloc[2:, 2:]
print(工资数据)

出勤 = pd.read_excel('02.xlsx', '出勤奖励')
print(出勤)

出勤数据 = 出勤.iloc[3:, 3:]
出勤数据 = 出勤数据.values.reshape(4, 3)

实发 = 工资数据 + 出勤数据
实发.to_excel('实发工资.xlsx', '实发工资')

print(出勤数据)
print("实发",实发)

注意:to_excel 会覆盖原Excel文件,所以不要用to_eexcel向已经存在的工作簿中写入数据