CSV模塊 1、CSV文件格式 要在文本文件中存儲數據,最簡單的方式是講數據作為一系列逗號分隔的值(CSV)寫入文件,這樣的文件成為CSV文件,如下: AKDT,Max TemperatureF,Mean TemperatureF,Min TemperatureF,Max Dew PointF,Me ...
CSV模塊
1、CSV文件格式
要在文本文件中存儲數據,最簡單的方式是講數據作為一系列逗號分隔的值(CSV)寫入文件,這樣的文件成為CSV文件,如下:
AKDT,Max TemperatureF,Mean TemperatureF,Min TemperatureF,Max Dew PointF,MeanDew PointF,Min DewpointF,Max Humidity, Mean Humidity, Min Humidity, Max Sea Level PressureIn, Mean Sea Level PressureIn, Min Sea Level PressureIn, Max VisibilityMiles, Mean VisibilityMiles, Min VisibilityMiles, Max Wind SpeedMPH, Mean Wind SpeedMPH, Max Gust SpeedMPH,PrecipitationIn, CloudCover, Events, WindDirDegrees
2014-7-1,64,56,50,53,51,48,96,83,58,30.19,30.00,29.79,10,10,10,7,4,,0.00,7,,337
2014-7-2,71,62,55,55,52,46,96,80,51,29.81,29.75,29.66,10,9,2,13,5,,0.14,7,Rain,327
2014-7-3,64,58,53,55,53,51,97,85,72,29.88,29.86,29.81,10,10,8,15,4,,0.01,6,,258
2014-7-4,59,56,52,52,51,50,96,88,75,29.91,29.89,29.87,10,9,2,9,2,,0.07,7,Rain,255
2014-7-5,69,59,50,52,50,46,96,72,49,29.88,29.82,29.79,10,10,10,13,5,,0.00,6,,110
2014-7-6,62,58,55,51,50,46,80,71,58,30.13,30.07,29.89,10,10,10,20,10,29,0.00,6,Rain,213
2014-7-7,61,57,55,56,53,51,96,87,75,30.10,30.07,30.05,10,9,4,16,4,25,0.14,8,Rain,211
2014-7-8,55,54,53,54,53,51,100,94,86,30.10,30.06,30.04,10,6,2,12,5,23,0.84,8,Rain,159
2014-7-9,57,55,53,56,54,52,100,96,83,30.24,30.18,30.11,10,7,2,9,5,,0.13,8,Rain,201
2014-7-10,61,56,53,53,52,51,100,90,75,30.23,30.17,30.03,10,8,2,8,3,,0.03,8,Rain,215
2014-7-11,57,56,54,56,54,51,100,94,84,30.02,30.00,29.98,10,5,2,12,5,,1.28,8,Rain,250
2014-7-12,59,56,55,58,56,55,100,97,93,30.18,30.06,29.99,10,6,2,15,7,26,0.32,8,Rain,275
2014-7-13,57,56,55,58,56,55,100,98,94,30.25,30.22,30.18,10,5,1,8,4,,0.29,8,Rain,291
2014-7-14,61,58,55,58,56,51,100,94,83,30.24,30.23,30.22,10,7,0,16,4,,0.01,8,Fog,307
2014-7-15,64,58,55,53,51,48,93,78,64,30.27,30.25,30.24,10,10,10,17,12,,0.00,6,,318
2014-7-16,61,56,52,51,49,47,89,76,64,30.27,30.23,30.16,10,10,10,15,6,,0.00,6,,294
2014-7-17,59,55,51,52,50,48,93,84,75,30.16,30.04,29.82,10,10,6,9,3,,0.11,7,Rain,232
2014-7-18,63,56,51,54,52,50,100,84,67,29.79,29.69,29.65,10,10,7,10,5,,0.05,6,Rain,299
2014-7-19,60,57,54,55,53,51,97,88,75,29.91,29.82,29.68,10,9,2,9,2,,0.00,8,,292
2014-7-20,57,55,52,54,52,50,94,89,77,29.92,29.87,29.78,10,8,2,13,4,,0.31,8,Rain,155
2014-7-21,69,60,52,53,51,50,97,77,52,29.99,29.88,29.78,10,10,10,13,4,,0.00,5,,297
2014-7-22,63,59,55,56,54,52,90,84,77,30.11,30.04,29.99,10,10,10,9,3,,0.00,6,Rain,240
2014-7-23,62,58,55,54,52,50,87,80,72,30.10,30.03,29.96,10,10,10,8,3,,0.00,7,,230
2014-7-24,59,57,54,54,52,51,94,84,78,29.95,29.91,29.89,10,9,3,17,4,28,0.06,8,Rain,207
2014-7-25,57,55,53,55,53,51,100,92,81,29.91,29.87,29.83,10,8,2,13,3,,0.53,8,Rain,141
2014-7-26,57,55,53,57,55,54,100,96,93,29.96,29.91,29.87,10,8,1,15,5,24,0.57,8,Rain,216
2014-7-27,61,58,55,55,54,53,100,92,78,30.10,30.05,29.97,10,9,2,13,5,,0.30,8,Rain,213
2014-7-28,59,56,53,57,54,51,97,94,90,30.06,30.00,29.96,10,8,2,9,3,,0.61,8,Rain,261
2014-7-29,61,56,51,54,52,49,96,89,75,30.13,30.02,29.95,10,9,3,14,4,,0.25,6,Rain,153
2014-7-30,61,57,54,55,53,52,97,88,78,30.31,30.23,30.14,10,10,8,8,4,,0.08,7,Rain,160
2014-7-31,66,58,50,55,52,49,100,86,65,30.31,30.29,30.26,10,9,3,10,4,,0.00,3,,217
sitka_weather_07-2014.csv
2、取CSV數據繪製氣溫圖表
① 創建highs_lows.py讀取數據第一行:
import csv filename = 'sitka_weather_07-2014.csv' with open(filename,'r') as f: reader = csv.reader(f) # 生成閱讀器,f對象傳入 header_row = next(reader) # 查看文件第一行,reader是可迭代對象 print(header_row) # 列表格式 # ['AKDT', 'Max TemperatureF', 'Mean TemperatureF', 'Min TemperatureF', # 'Max Dew PointF', 'MeanDew PointF', 'Min DewpointF', 'Max Humidity', # ' Mean Humidity', ' Min Humidity', ' Max Sea Level PressureIn', # ' Mean Sea Level PressureIn', ' Min Sea Level PressureIn', # ' Max VisibilityMiles', ' Mean VisibilityMiles', ' Min VisibilityMiles', # ' Max Wind SpeedMPH', ' Mean Wind SpeedMPH', ' Max Gust SpeedMPH', # 'PrecipitationIn', ' CloudCover', ' Events', ' WindDirDegrees']
② 修改highs_lows.py文件獲取每日最高溫度
import csv filename = 'sitka_weather_07-2014.csv' with open(filename,'r') as f: reader = csv.reader(f) # 生成閱讀器,f對象傳入 header_row = next(reader) # 查看文件第一行,reader是可迭代對象 highs = [] for row in reader: high = int(row[1]) highs.append(high) print(highs) # [64, 71, 64, 59, 69, 62, 61, 55, 57, 61, 57, 59, 57, 61, # 64, 61, 59, 63, 60, 57, 69, 63, 62, 59, 57, 57, 61, 59, 61,61, 66]
③ 根據數據繪製氣溫圖表
import csv import matplotlib.pyplot as plt filename = 'sitka_weather_07-2014.csv' with open(filename,'r') as f: reader = csv.reader(f) # 生成閱讀器,f對象傳入 header_row = next(reader) # 查看文件第一行,reader是可迭代對象 highs = [] for row in reader: high = int(row[1]) highs.append(high) # 設置圖片大小 fig = plt.figure(dpi=128,figsize=(10,6)) plt.plot(highs, c='red',linewidth=1) # 設置顏色、線條粗細 # 設置圖片格式 plt.title('Daily high temperatures,July 2014', fontsize=24) # 標題 plt.xlabel('', fontsize=14) plt.ylabel('Temperature(F)', fontsize=14) plt.show() # 輸出圖像
繪圖:
④ X軸改為時間日期
import csv import matplotlib.pyplot as plt from datetime import datetime filename = 'sitka_weather_07-2014.csv' with open(filename,'r') as f: reader = csv.reader(f) # 生成閱讀器,f對象傳入 header_row = next(reader) # 查看文件第一行,reader是可迭代對象 dates,highs = [],[] for row in reader: current_date = datetime.strptime(row[0],'%Y-%m-%d') dates.append(current_date) high = int(row[1]) highs.append(high) # 設置圖片大小 fig = plt.figure(dpi=128,figsize=(10,6)) plt.plot(dates,highs, c='red',linewidth=1) # linewidth決定繪製線條的粗細 # 設置圖片格式 plt.title('Daily high temperatures,July 2014', fontsize=20) # 標題 plt.xlabel('', fontsize=14) fig.autofmt_xdate() # 日期標簽轉為斜體 plt.ylabel('Temperature(F)', fontsize=14) plt.tick_params(axis='both',which='major') plt.show() # 輸出圖像
繪圖:
⑤ 添加低溫數據,填充折線區域
import csv import matplotlib.pyplot as plt from datetime import datetime filename = 'sitka_weather_2014.csv' with open(filename,'r') as f: reader = csv.reader(f) # 生成閱讀器,f對象傳入 header_row = next(reader) # 查看文件第一行,reader是可迭代對象 # 獲取日期,最高溫度,最低溫度 dates,highs,lows = [],[],[] for row in reader: try: current_date = datetime.strptime(row[0],'%Y-%m-%d') high = int(row[1]) low = int(row[3]) except ValueError: print(current_date,'missing data') else: dates.append(current_date) highs.append(high) lows.append(low) # 設置圖片大小 fig = plt.figure(dpi=128,figsize=(10,6)) plt.plot(dates,highs, c='red',alpha=0.5) # 最高溫度 alpha透明度0完全透明,1表示完全不透明 plt.plot(dates,lows, c='blue',alpha=0.5) # 最低溫度 plt.fill_between(dates,highs,lows,facecolor='blue',alpha=0.1) #填充色 # 設置圖片格式 plt.title('Daily high temperatures - 2014', fontsize=20) # 標題 plt.xlabel('', fontsize=14) fig.autofmt_xdate() # 日期標簽轉為斜體 plt.ylabel('Temperature(F)', fontsize=14) plt.tick_params(axis='both',which='major') plt.show() # 輸出圖像
繪圖: