python 數據處理 對csv文件進行數據處理


數據如下圖:

 

 

用python對數據進行處理:

#讀取csv文件內容並進行數據處理

import os
import csv
import datetime
import re
from itertools import islice

csv_file_path = 'query_hive.csv'  #文件路徑
write2_csv_file_path = 'hive_result2.csv' #處理第二列數據
write6_csv_file_path = 'hive_result6.csv' #處理第六列數據

#定義一個寫入數據函數
def write_csv_file():
    if os.path.exists(csv_file_path) is False :
        print("不存在文件鴨!")
        return

    with open(csv_file_path,'r') as r_file:
        #讀取csv文件內的所有內容
        file_read = csv.reader(r_file)
        for row in islice(file_read,1,None): #如果第一行是列名,用islice函數直接跳過第一行 islice(文件名,跳過的行數,None)
            print(row)
            #處理第六列數據
            row6 = row[5]   #第六列數據
            len_str6 = len(row6) #第六列數據的長度
            print("此列字符串的長度:{}".format(len_str6))
            L_str6 = list(row6[1:len_str6-1].split('|'))  #對第六列數據進行分割得到數字字符串列表
            print("此列得到數字字符串列表:{}".format(L_str6))
            L_num6 = list() #創建一個空列表存儲數據
            for s in L_str6:  #將字符串列表變為數字型列表
                if s=='' :
                    L_num6.append(0)
                else:
                    L_num6.append(int(s))
            print("此列得到數字型數據列表{}".format(L_num6))

            #處理第一列數據
            row2 = row[1]  #第一列數據
            len_str2 = len(row2) #第一列數據的長度
            print("此列數據串的長度".format(len_str2))
            L_str2 = list(re.split("[/.]",row2[1:])) #用多個分隔符分割字符串
            print("此列得到字符串列表{}".format(L_str2))

            #寫入2數據
            csv_write_list = [L_str2] #用於寫入文件的數據
            with open(write2_csv_file_path,'a',newline='') as w_file: #若沒有newline=''每讀入一行數據后跟一個空行
                writer = csv.writer(w_file,dialect='excel')
                for row_item in csv_write_list:
                    writer.writerow(row_item)

            #寫入6數據
            csv_write_list = [L_str6]
            with open(write6_csv_file_path,'a',newline='') as w_file: #若沒有newline=''每讀入一行數據后跟一個空行
                writer = csv.writer(w_file,dialect='excel')
                for row_item in csv_write_list:
                    writer.writerow(row_item)

if __name__ == "__main__":
    write_csv_file()

#注意
'''
1)寫入文件數據的時候,只能以字符串的格式寫入!
2)L_str 是處理之后的字符串列表,若要將其寫入文件中,還需要進一步操作:將其作為新列表的一個元素進行讀入
暨csv_write_list = [L_str6]
3)如果打開待寫入文件時沒有參數 newline='' ,那么最后的文件中每一數據行后都有一個空行
4)如果數據文件第一行是列名,用islice函數直接跳過第一行 islice(文件名,跳過的行數,None)
'''

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM