• 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)
    '''
    

      

  • 相关阅读:
    babel的使用以及安装配置
    常见的浏览器兼容性问题与解决方案——CSS篇
    ES6入门——变量的解构赋值
    ES6入门——let和const命令
    第一个移动端项目
    向Github提交更改的代码
    MySQL安装配置
    HTTP 状态消息
    HTMl基础
    Shell 常用的命令
  • 原文地址:https://www.cnblogs.com/jiaxinwei/p/11696002.html
Copyright © 2020-2023  润新知