1. 程式人生 > >【Python程式設計】對excel進行資料分析 (mark)

【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 openpyxl
import datetime  #  日期
import time  #  時間

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)

1.3、定義函式


#!/usr/bin/env python
# -*- coding:utf-8 -*-

import os
import openpyxl
import datetime
import time

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)


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}秒")

4、完整程式碼


#!/usr/bin/env python
# -*- coding:utf-8 -*-

import os
import openpyxl
import datetime
import time

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)


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}秒")

執行過程及結果:

在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述