csv格式文件数据分析 1. 下载数据 1.1 下载数据,处理csv格式文件的数据 安装csv模块,在网上下载或者自己写一个csv格式的文件 相关文档请访问https://download.csdn.net/download/qq_37504771/10438857 https://download.csdn.net/download/qq_37504771/10438862 也可以访问官网,不过很多人下不了这些文档,我这的下载积分只要1个。 现在开始写代码吧: 先导入csv模块,打开对应的csv文件将结果存放在f里面,调用csv.reader()方法,将前面存储的文件对象传递给他,创建一个相关联的阅读器(reader)对象,将阅读器对象存储在reader里面,调用next()方法,将阅读器对象的行传递给文件的第一行,并返回文件对象的下一行数据。 importcsv filename = 'sitka_weather_07-2014.csv' with open(filename) as f: reader = csv.reader(f) header_row = next(reader)
print(header_row) '''调用enumerate()方法获取每个元素的索引和数值''' for index, column_header inenumerate(header_row): print(index, column_header) # 打印出列号和名称 1.2数据的读取 ps:由于书里面的最高气温提取是错的,实际上是每行的第一个数据 前面我们得到了文件里面的行数和数据名称 现在我们需要读取文件里面的数据 filename= 'sitka_weather_07-2014.csv' with open(filename) as f: reader = csv.reader(f) header_row = next(reader) heads = [] #创建一个空列表用于存放每天的第一个检测的温度 for row in reader: #遍历文件对象 heads.append(row[1]) #添加每行的第一列到列表里 print(heads) 也可以转换成数字类型的列表 for rowin reader: #遍历文件对象 head = int(row[1]) #读取第二列的数值 heads.append(head) print(heads) 1.3描绘出气温图表 要将这些数据进行可视化,我们需要上一章的内容matplotlib创建图表 添加图表代码就行了 #绘制图形大小和格式 fig = plt.figure(dpi=128, figsize=(10,6)) plt.plot(heads,c='red') plt.title("Daily first temperatures, July 2014",fontsize = 24) plt.xlabel('',fontsize = 16) plt.ylabel('Temperture(F)',fontsize= 16) 1.5模块的datetime 顾名思义,就是日期时间,我们要把时间添加到图表里面 读取数据时,获得是字符串,要把这个字符串转换成日期对象 可以调用datetime中的strptime()方法 我现在IDLE里面试了一下这个方法,把这一天的放进去 得到这一天的第一个时间 ‘%Y-%m-&d‘ 让Python能够识别年月日的数据 >>>from datetime import datetime >>>first_date = datetime.strptime('2014-7-1','%Y-%m-%d') >>>print(first_date) 2014-07-0100:00:00 >>> 在图表里面添加日期: import csv from matplotlib import pyplot as plt from datetime import datetime '''修改成这一年的温度值的文件''' filename = 'sitka_weather_2014.csv' with open(filename) as f: reader = csv.reader(f) header_row = next(reader) dates,heads = [],[] #创建两个空列表用于存放每天的日期及其第一个检测的温度 for row in reader: #遍历文件对象 current_date =datetime.strptime(row[0],"%Y-%m-%d") //将第1列的日期传过去 dates.append(current_date) head = int(row[1]) heads.append(head) print(heads) #绘制图形大小和格式 fig = plt.figure(dpi=128, figsize=(10,6)) plt.plot(dates,heads,c='red') plt.title("Daily first temperatures, July 2014",fontsize = 24) plt.xlabel('',fontsize = 16) #调用fig.auto_xdate()来绘制斜的的标签日期 fig.autofmt_xdate() plt.ylabel('Temperture(F)',fontsize= 16) plt.tick_params(axis='both',which='major',labelsize = 16) plt.show() 结果展示: 1.6丰富数据内容 其实书上面无法计算读取csv文件每行数据的最大值,所以这里只能做个表面工作 importcsv from matplotlib import pyplot as plt from datetime import datetime filename = 'sitka_weather_2014.csv' with open(filename) as f: reader = csv.reader(f) header_row = next(reader)
dates,highs,lows = [],[],[] #创建一个空列表用于存放每天的第一个检测的温度 for row in reader: #遍历文件对象 current_date =datetime.strptime(row[0],"%Y-%m-%d") dates.append(current_date) high = int(row[1]) highs.append(high) low = int(row[5]) lows.append(low) print(highs,lows) #绘制图形大小和格式 fig = plt.figure(dpi=128, figsize=(10,6)) plt.plot(dates,highs,c='red') plt.plot(dates,lows,c='blue') plt.title("Daily high and low temperatures, July 2014",fontsize = 24) plt.xlabel('',fontsize = 16) #调用fig.auto_xdate()来绘制斜的的标签日期 fig.autofmt_xdate() plt.ylabel('Temperture(F)',fontsize= 16) plt.tick_params(axis='both',which='major',labelsize = 16) plt.show() 然而书上不能打印出最大值,所以。。。 import csv import numpy from matplotlib import pyplot as plt from datetime import datetime filename = 'sitka_weather_2014.csv' with open(filename) as f: reader = csv.reader(f) header_column = next(reader) max1 ,dates=[],[] for row in reader: current_date =datetime.strptime(row[0], "%Y-%m-%d") # 将第1列的日期传过去 dates.append(current_date) row.pop(0) row.pop(-2) print(max(row)) max1.append(max(row)) fig = plt.figure(dpi=128, figsize=(10,6)) plt.plot(dates,max1,'red') plt.title("Daily high and low temperatures, July 2014",fontsize = 24) plt.xlabel('',fontsize = 16) #调用fig.auto_xdate()来绘制斜的的标签日期 fig.autofmt_xdate() plt.ylabel('Temperture(F)',fontsize= 16) plt.tick_params(axis='both',which='major',labelsize = 8) plt.show() ps:注意y轴的数值
|