【模块】:CSV文件 数据可视化总结

你猜 阅读:238 2021-05-02 13:43:16 评论:0

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()  # 输出图像 

绘图:


标签:javaPython
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
KIKK导航

KIKK导航

关注我们