zoukankan      html  css  js  c++  java
  • 【模块】:CSV文件 数据可视化

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

    绘图:

  • 相关阅读:
    笔试题 9.11
    shell脚本编程
    android源码中用到的设计模式
    struts2.0的工作流程
    无奈的信息产业部备案网站流程
    VS2005调试时弹出“无法附加。绑定句柄无效”对话框
    彻底删除项目的VSS源代码管理信息
    软件版本详细介绍
    导入SourceSafe过程中项目结构无法修改问题的解决方案
    建立良好的客户关系=节约项目成本
  • 原文地址:https://www.cnblogs.com/lianzhilei/p/6872304.html
Copyright © 2011-2022 走看看