1. 程式人生 > 其它 >用Python實現一個簡單的資料處理

用Python實現一個簡單的資料處理

技術標籤:python

一、前言

最近在做與裝置管理差不多的工作,常常需要對裝置資料進行處理,就想用Python來簡化一下我的工作。
有一個裝置的資料檔案是儲存為TXT檔案,執行時間較長儲存資料量很大,加之行業要求不能刪除歷史資料,導致資料量比較龐大,然而我的電腦配置又不行,TXT轉為Excel之後操作起來特別困難,常常導致電腦宕機。
以此為背景,用Python讀取TXT資料,找出需要的時間段資料並匯出為Excel。

二、讀取TXT檔案

目的是生成Excel檔案,所以這裡使用與之最接近的DateFrame表格型資料結構來容納TXT的內容。
首先需要引入panda模組,然後再讀取資料

import
pandas as pd #匯入表格資料 df1 = pd.read_table(r"C:\Users\Administrator\Desktop\123\Data_log_0200.txt", sep = "\t") print(df1)

執行之後報錯,查詢之後發現是字元編碼不對,該函式預設的字元編碼是utf-8,而該TXT字元編碼型別為Unicode。
然查詢Python字元編碼庫中發現沒有Unicode,只發一個類似的unicode_escape,最嘗試一下指定字元編碼

import pandas as pd
#匯入表格資料
df1 = pd.read_table(
r"C:\Users\Administrator\Desktop\123\Data_log_0200.txt", sep = "\t", encoding = "unicode_escape") print(df1)

在這裡插入圖片描述
讀出的都為空值,失敗!
淦!還是手動轉字元編碼吧!
於是把TXT檔案的字元編碼手動轉為了utf-8,再次嘗試就正常了,資料如下
資料顯示正常了
這下資料顯示正常了,OK,進入下一步

三、選擇需要的資料

這裡我是根據時間段來選擇,所以就會有輸入時間段的要求。
首先確定起止時間點:

#輸入時間
time_start_str = input(
"輸入開始時間點:2020-05-07 13:26:42 ") time_end_str = input("輸入結束時間點:2020-05-07 13:26:42 ")

時間的格式選擇了和資料表格內時間格式一致方便處理。
然後就是想辦法怎樣去比較這個時間,網上搜索是可匯入time模組將時間轉化為一個數字進行比較,但是我理解不了,覺得邏輯很複雜,就放棄了這個方法。
於是只有採用笨辦法了。
我的想法是將時間 “2020-05-07 13:26:42“ 變為 “20200507132642” 這樣的一串數字,這樣就可以用來比較了。
於是定義一個函式將時間切片然後轉換為一個int

def xx(a):
    result = a[0: 4] + a[5: 7] + a[8: 10] + a[11: 13] + a[14: 16] + a[17: 19]
    return int(result)

於是就可以進行比較了,將表格的時間列的各資料與輸入的起止時間進行逐一比較,確定符合要求的資料位置,然後索引出來。

#將起止時間轉換為可比較大下的整數
time_start = xx(time_start_str)
time_end = xx(time_end_str)
#資料處理
lens = df1.shape[0]#確定資料有多少行,以便後面的迭代比較確認索引位置
d = []#該列表用來裝符合條件資料的索引位置
for i in range(lens):
    e = str(df1.iloc[i, 1])#迭代調取每一行的時間
    if xx(e) >= time_start and xx(e) <= time_end:
        d.append(i)    
df2 = df1.iloc[d, : ]#通過索引找出需要的資料

四、匯出資料

df2.to_excel(excel_writer = r"C:\Users\Administrator\Desktop\123\匯出資料.xlsx", index = False)

五、總結

雖然只是一個簡單的資料擷取,但是打開了學習Python的道路。
後續還會改進程式碼,如加入繪圖,解決之前讀取TXT資料,資料增刪等。