python之小应用:读取csv文件并处理01数据串
目的:读取csv文件内容,把0和1的数据串取出来,统计出现1的连续次数和各次数出现的频率次数
先读取csv文件内容:
import csv def csv_read(file): list = [] csv_reader = csv.reader(file) for id, data, *args in csv_reader: #跳过表头 if id == " ": continue #print(id, data) list.append(data) return list
再写处理0和1的方法
#统计连续0和1出现的个数 #函数功能:对连续出现的1的个数进行统计,返回一个连续次数列表 def sum_times(list): total_list = [] #n统计出现次数,m表示当前处理个数 n = 0 m = 0 for w in list: m += 1 if int(w) == 1: n += 1 elif int(w) == 0: if n > 0: #连续次数大于2则打印位置 if n > 2: print("连续时长:", n,"| 行数:", m-n) total_list.append(n) n = 0 #如果最后一个为1则自动计数 if m == len(list): if n > 0: total_list.append(n) n = 0 print("\nsum_times函数打印连续次数列表:\n", total_list) return total_list #函数功能:对出现频率列表进行统计 def sum_tocal(list): list_total = [0, 0, 0, 0, 0] for n in list: if n == 1: list_total[0] += 1 elif n == 2: list_total[1] += 1 elif n == 3 or n == 4: list_total[2] += 1 elif n == 5 or n == 6: list_total[3] += 1 elif 6 < n <= 12: list_total[4] += 1 return list_total
最后依次调用执行
import readcsv, tong_ji_ge_shu #统计出现各时长频率的次数 file = open("d://vis_911_3000.csv") #file = open("d://ts_ctime_12.csv") #从csv中读取数据 csvlist = readcsv.csv_read(file) file.close() #记录连续出现的小时数 list_pinlv = tong_ji_ge_shu.sum_times(csvlist) #统计各时长出现的个数 list_final = tong_ji_ge_shu.sum_tocal(list_pinlv) print() #空行 print(list_final) #输入各时长个数的统计列表 #print("1次:" + str(list_final[0]), " | 2次:" + str(list_final[1]), " | 3-4次:" + str(list_final[2])) print("[1次,2次,3-4次,5-6次,7-12次]")