Python Excel相关模块及基础应用

1.1 批量处理Excel文件的模块——xlwings
可以处理Excel文件的Python模块有很多,如XlsxWriter、xlrd、xlwt、xlutils、openpyxl和XLwings等。
其中xlwings模块的工程是最齐全的,它不仅能够读、写和修改两种格式的Excel文件(xls和xlsx),而且能够批量处理多个excel文件,另外,xlwings模块还能与Excel VBA结合使用,实现更加强大的数据输入和分析功能。(实际测试当中wps可能会出现问题,因此我用的是office)

1.1.1创建、保存、打开工作簿、操控工作表和单元格
import xlwings as xw #导入xlwings模块并简写为 xw
app = xw.App(visible = True, add_book = False) #启动Excel窗口,但并不新建工作簿,其中的App()是xlwings模块中的函数,参数visible用于设置Excel程序窗口的可见性,add_book用于设置启动Excel后是否新建工作簿
workbook = app.books.add() #新建一个工作博,add()为books对象函数,用于新建工作簿
workbook.save(r'h:\example.xlsx') #将名为example的xlsx文件保存到H盘
workbook.close() #关闭工作簿
app.quit() #退出Excel程序


import xlwings as xw
app = xw.App(visible = True, add_book = False)
workbook = app.books.open(r'h:example.xlsx') #打开H盘下的example工作簿,注:工作簿必须是真是存在的,而且不能处于打开状态
import xlwings as xw
app = xw.App(visible = True, add_book = False)
workbook = app.books.open(r'h:example.xlsx') #打开H盘下的example工作簿,注:工作簿必须是真是存在的,而且不能处于打开状态
worksheet = workbook.sheets['Sheet1'] #选中工作表中的'Sheet1'
worksheet.range('A1').value = '编号' #在单元格A1中输入内容
worksheet = workbook.sheets.add('产品统计表') #新增一个名为'产品登记表'的工作表


1.2 数组计算的数学模块——NumPy
NumPy模块的名称是由“Numerical Python”缩写而来,这个模块是一个运行速度非常快的数学模块,主要用于数组计算。

import numpy as np
a = np.array([1,2,3,4,]) #创建一维数组
b = np.array([[1,2],[3,4],[5,6]]) #创建二位数组
'''除此之外,还有一些常见的创建数组的方式。以一维数组为列,可以使用np.arange()函数来创建一维数组'''
import numpy as np
x = np.arange(5) #一个参数:起点取0,参数值为终点,步长取默认值1,左闭右开
y = np.arange(5,10)#两个参数:第一个参数为起点,第二个参数值为终点,步长取默认值1,左闭右开
z = np.arange(5,10,2) #三个参数前两个参数同两个参数,第三个参数为步长
'''还可以用np.random中的函数创建随机一维数组'''
import numpy as np
c = np.random.randn(3) #随机创建一维数组,其中包含服从正态分布(均值为0,标准差为1)的3个随机数
print(c)
d = np.arange(12).reshape(3,4) #二维数组,arange将包含0~11这12个整数的一维数组转换成3行4列的二维数组。
print(d)
'''另一种创建随机二维数组的方法'''
import numpy as np
e = np.random.randint(0,10,(4,4)) #括号里第1个参数0为起始数,第2个参数为10终止,第三个参数(4,4)则表示创建一个4行4列的二位数组


1.3 数据导入和整理模块——pandas
pandas模块是基于NumPy模块的一个开源Python模块,广泛应用于完成数据快速分析、数据清晰和准备等工作,它的名字连源于“panel date”(面板数据)。pandas模块提供了非常直观的数据结构及强大的数据管理和数据处理功能,某种程度上可以把pandas看成是Python版的Excel,如果是利用Anconda安装的Python,则自带pandas模块无需单独安装。
与NumPy相比,pandas模块更擅长处理二维数据,其主要有Series和DataFrame两种数据结构
import pandas as pd
s = pd.Series(['丁一','丁二','丁三',])
print(s)
得出结果如下 #S是一个一维数据结构,并且每个元素都有一个可以用来定位的行索引,例:可以通过S[1]定位到第二个元素'丁二'
0 丁一
1 丁二
2 丁三
dtype: object


1.3.1二维数据表格DataFrame的创建与索引的修改

1.3.1.1DataFrame的创建
利用pandas模块中的DataFrame()函数可以基于列表创建DataFrame。
import pandas as pd
a = pd.DataFrame([[1,2],[3,4],[5,6]])
print(a)
运行结果和之前的NumPy比较
[[1 2] 0 1
[3 4] 0 1 2
[5 6]] 1 3 4

可以看出DataFrame更像Excel中的二维表格,它也有行索引和列索引,这里的索引序号是从0开始的
创建DataFrame时使用自定义列索引和行索引
import pandas as pd
a = pd.DataFrame([[1,2],[3,4],[5,6]],columns=['date','score'],index=['A','B','C'])
print(a) #参数中的columns用于指定列索引名称,参数index用于指定行索引名称
运行结果如下
date score
A 1 2
B 3 4
C 5 6


通过列表创建DataFrame的另一种方式

import pandas as pd
a = pd.DataFrame()#创建一个空DataFrame
date = [1,3,5]
score = [2,4,6]
a['date'] = date
a['score'] = score #注意要保证列表date和score的长度一致,否则会报错
print(a)

运行结果如下
date score
0 1 2
1 3 4
2 5 6


1.3.1.2通过字典创建DataFrame

import pandas as pd
b = pd.DataFrame({'a':[1,3,5],'b':[2,4,6]},index=['x','y','z'])
print(b)

运行结果如下:
a b
x 1 2
y 3 4
z 5 6

1.3.1.3通过二维数组创建DataFrame
在NumPy模块创建的二位数组的基础上,也可以创建DataFrame

import numpy as np
import pandas as pd
a = np.arange(12).reshape(3,4)
b = pd.DataFrame(a,index=[1,2,3],columns=['A','B','C','D'])
print(b)

运行结果如下:

   A  B   C   D
1  0  1   2   3
2  4  5   6   7
3  8  9  10  11

1.3.2DataFrame索引的修改
import pandas as pd
a = pd.DataFrame([[1,2],[3,4],[5,6]],columns = ['data','score'],index = ['A','B','C'])
a.index.name = '公司'
print(a)
运行结果如下:
 data  score
公司             
A      1      2
B      3      4
C      5      6

 





posted on 2021-03-31 11:16  A-Yooo  阅读(529)  评论(0)    收藏  举报

导航