Python/对excel进行数据分析 (mark)

Python对excel进行分析


目前有一个excel表,其中里面有一个工作薄的名称为:btc,在这个工作薄中有2013年–2018年的所有交易数据,本文主要实现,将不同的年份的数据保存至新的工作薄并起名成为:2013,2014等等。

如果不用python进行操作的话,我们首先需要打开excel表,然后选择btc工作薄。新建2013 2014工作薄,最后进行分析导入,保存退出。在python操作中首先需要导入excel表,然后获取到btc工作薄中的数据,通过不同的时间年份来获取不同年份的数据,最后创建新的工作薄,导入–>保存退出:

1、导入内置库及第三方库

import os # 用于获取excel文件路径,以及对分析后的excel文件进行保存 import openpyxl # 使用openpyxl可以对excel进行操作,需要安装 pip install openpyxlimport datetime # 日期import time # 时间

  • 1

  • 2

  • 3

  • 4

  • 1

  • 2

  • 3

  • 4

1.2、定义文件路径


year_list = [2013, 2014, 2015, 2016, 2017, 2018]file_path = r'F:\python-office\log'file_name = 'btc.xlsx'file_result = os.path.join(file_path, file_name)12341234

1.3、定义函数


#!/usr/bin/env python# -*- coding:utf-8 -*-import osimport openpyxlimport datetimeimport timeyear_list = [2013, 2014, 2015, 2016, 2017, 2018]file_path = r'F:\python-office\log'file_name = 'btc.xlsx'file_result = os.path.join(file_path, file_name)def excel(): ''' ''' wb = openpyxl.load_workbook(file_result) # 首先获取excel文件生成对象wb 使用openpyxl.load_workbook 方法 sh = wb.active # 使用wb中的active方法获取当前工作薄:btc 生成新的对象sh index = 0 # 设置一个数字变量之后会用到 for i in range(len(year_list)): # 循环6次,6次来源于year_list列表长度 count = 2 # 定义一个数字变量 后面会用到 sh1 = wb.create_sheet(str(year_list[index])) # 使用使用wb.create 方法创建工作薄名称。名称为列表中的值,index是上面定义的数字变量 for rows in sh.rows: # 循环btc工作薄表中的内容 if rows[0].coordinate != 'A1' and datetime.datetime.strptime(rows[0].value, '%Y-%m-%d %H:%M:%S %Z').year == year_list[index]: # 把日期和金额去除从第二行开始循环, 使用datetime模块将获取的value1的时间字符串解析为时间元组。 最后取年值进行匹配 # print(rows[0].value, rows[1].value) sh1['A1'] = '日期' # 写入日期 sh1['B1'] = '金额' # 写入金额 sh1['A' + str(count)] = rows[0].value # A + str(count) 第二行开始 写入 sh1['B' + str(count)] = rows[1].value # print('in sh:', sh1['A' + str(count)].value, sh1['B' + str(count)].value) print(f'正在分析{year_list[index]}年数据.....') count += 1 # 没完成一次循环 count + 1 index += 1 # 同时index + 1 wb.save('yankerp.xlsx') # 当函数全部执行完成后,使用wb.save 保存即可。if __name__ == '__main__': start_time = time.time() excel() print(f'分析完成,用时时间为{time.time() - start_time}秒')

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

  • 29

  • 30

  • 31

  • 32

  • 33

  • 34

  • 35

  • 36

  • 37

  • 38

  • 39

  • 40

  • 41

  • 42

  • 43

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

  • 29

  • 30

  • 31

  • 32

  • 33

  • 34

  • 35

  • 36

  • 37

  • 38

  • 39

  • 40

  • 41

  • 42

  • 43

4、完整代码


#!/usr/bin/env python# -*- coding:utf-8 -*-import osimport openpyxlimport datetimeimport timeyear_list = [2013, 2014, 2015, 2016, 2017, 2018]file_path = r'F:\python-office\log'file_name = 'btc.xlsx'file_result = os.path.join(file_path, file_name)def excel():    '''    '''    wb = openpyxl.load_workbook(file_result)    sh = wb.active    index = 0    for i in range(len(year_list)):        count = 2        sh1 = wb.create_sheet(str(year_list[index]))        for rows in sh.rows:            if rows[0].coordinate != 'A1' and datetime.datetime.strptime(rows[0].value, '%Y-%m-%d %H:%M:%S %Z').year == year_list[index]:                # print(rows[0].value, rows[1].value)                sh1['A1'] = '日期'                sh1['B1'] = '金额'                sh1['A' + str(count)] = rows[0].value                sh1['B' + str(count)] = rows[1].value                # print('in sh:', sh1['A' + str(count)].value, sh1['B' + str(count)].value)                print(f'正在分析{year_list[index]}年数据.....')                count += 1        index += 1    wb.save('yankerp.xlsx')if __name__ == '__main__':    start_time = time.time()    excel()    print(f'分析完成,用时时间为{time.time() - start_time}秒')123456789101112131415161718192021222324252627282930313233343536373839404142123456789101112131415161718192021222324252627282930313233343536373839404142

运行过程及结果:

(0)

相关推荐

  • 针对不同场景的Python合并多个Excel方法

    大家好,我是辰哥~ 在辰哥看来,技术能够减少繁琐工作带来的枯燥,技术+实际=方便.最近辰哥也是在弄excel文件的时候发现手动去整理有点繁琐枯燥,想着技术可以代替我去处理这部分繁琐的工作那何乐而不为呢 ...

  • python+openpyxl创建excel

    创建一个excel,在excel中添加4个sheet wb = openpyxl.Workbook() for i in range(4):     sheet = wb .create_sheet( ...

  • 使用python查询oracle并保存为excel的两种方法

    这里介绍使用python查询oracle保存为excel的两种方法,一种用openpyxl保存,另一种用pandas保存. 一.使用openpyxl保存. 1.导入第三方库 import cx_Ora ...

  • 第103天: Python 操作 Excel

    之前看过一篇文章,说一个工作多年的老员工,处理数据时只会用复制粘贴到 Excel ,天天加班工作还完不成,后来公司就招了一个会 Python 的新人,结果分分钟就处理完成.所以工作中大家经常会使用 E ...

  • 普通小白学会Python到底具体能做什么呢?

    为什么那些教Python课程的人不用Python去做技术赚钱? 就像顶级的运动员们都会有很多训练师指导他们训练,训练师们具备专业知识.专业技能,却不会自己上场比赛,原因有二:其一是黄金年龄段已经过了, ...

  • C#对Excel操作——addSheet

    C#对Excel进行处理操作是经常遇见的需求,比如:通常在对数据库进行查询时,要求把查询出来的数据,写入到现有的Excel中,在新的页签中展现.实现代码如下: public void addSheet ...

  • Python 与 Excel 终于互通了 !

    重磅干货,第一时间送达 本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载 机器之心报道,参与:思源.张倩 很多开发者说自从有了 Python/Pandas,Excel ...

  • Python对excel的基本操作

    目录 1. 前言 2. 实验环境 3. 基本操作 3.3.1 获取工作表 3.3.2 遍历工作表 3.3.3 获取单元格数据 3.3.4 遍历行 3.3.5 遍历列 指定行 指定行范围 方法iter_ ...

  • 可能是全网最完整的 Python 操作 Excel库总结!

    在之前的办公自动化系列文章中,我已经对Python操作Excel的几个常用库openpyxl.xlrd/xlwt.xlwings.xlsxwriter等进行了详细的讲解. 为了进一步带大家了解各个库的 ...

  • 别傻了!PQ都没学会,VBA都学不来,你能学好Python处理Excel?

          不知道为什么,最近老收到一些关于python的培训课软文或广告,有来自大号的推文: 也有来自朋友圈的广告投放:      觉得Hello World怼得很赞的,可以文末留个言! 无一例外, ...

  • Excel中数据分析超级工具透视表,要学一周?NO,3分钟就能入门

    Excel中数据分析超级工具透视表,要学一周?NO,3分钟就能入门

  • Python处理Excel的案例汇总(文末有福利)

    知乎上有个提问:用python进行办公自动化都需要学习什么知识呢? 这可能是很多非IT职场人士面临的问题,想把python用到工作中,却不知如何下手?python在自动化办公领域越来越受欢迎,把简单的 ...

  • python word excel ppt自动化办公教程

    模块导入 import openpyxl 读取Excel文件 打开Excel文件 workbook = openpyxl.load_workbook('test.xlsx') 输出表单名字 # 输出工 ...

  • 新手快看!python爬取数据 数据分析,有这一篇就够啦

    推荐用Jupyter 爬取二手车之家的部分数据 # 爬取二手车网站的数据 #Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库 from bs4 import B ...

  • python+requests+excel接口自动化数据驱动

    一.前言 1.环境准备: - python3.6 - requests - xlrd - openpyxl - HTMLTestRunner_api 2.目前实现的功能: - 封装requests请求 ...