python读取csv数据并画图,python csv数据可视化

  python读取csv数据并画图,python csv数据可视化

  本文主要介绍Python对CSV文件的读取和数据可视化绘制。文章围绕基于Python读取CSV文件这一主题展开。感兴趣的朋友可以参考一下。

  文件SITKA _ WEATHER _ 07-2018 _ SIMPLE。介绍:的CSV是2018年1月1日阿拉斯加州锡特卡的天气数据,包含当天的最高和最低温度。在文件存储和数据文件夹下,用Python读取文件数据,然后根据数据进行可视化绘图。(详情请见代码注释)

  sitka_highs.py

  导入csv #导入csv模块

  从日期时间导入日期时间

  将matplotlib.pyplot作为plt导入

  filename= data/sitka _ weather _ 07-2018 _ simple . CSV

  打开(文件名)为f:

  reader=csv.reader(f)

  Header_row=next(reader) #返回文件的下一行,也就是第一行,即文件头。

  # for index,enumerate (header _ row)中的column _ header 3360 #在list上调用enumerate()得到每个元素的索引及其值,方便我们提取所需的数据列。

  # print(索引,列标题)

  #从文件中获取最高温度

  日期,高点=[],[]

  对于reader:中的行

  current_date=datetime.strptime(行[2], %Y-%m-%d )

  high=int(row[5])

  dates.append(当前日期)

  highs.append(高)

  #根据最高温度绘制图表

  plt.style.use(seaborn )

  fig,ax=plt.subplots()

  ax.plot(日期、高点、c=red )

  #格式化图形

  ax . set _ title( 2018年7月日最高气温,font properties= simhei ,fontsize=24)

  ax.set_xlabel( ,fontproperties=SimHei ,fontsize=16)

  图. autofmt_xdate()

  Ax.set_ylabel(温度(华氏度),font properties= simhei ,fontsize=16)

  ax.tick_params(axis=both ,which=major ,labelsize=16)

  plt.show()

  运行结果如下:

  设置完上面的图标后,让我们添加更多的数据来生成更复杂的锡特卡天气图。把sitka_weather_2018_simple.csv数据文件放在data文件夹下,里面有sitka全年的天气数据。

  对代码进行修改:

  sitka_highs.py

  导入csv #导入csv模块

  从日期时间导入日期时间

  将matplotlib.pyplot作为plt导入

  filename= data/sitka _ weather _ 2018 _ simple . CSV

  打开(文件名)为f:

  reader=csv.reader(f)

  Header_row=next(reader) #返回文件的下一行,也就是第一行,即文件头。

  # for index,enumerate (header _ row)中的column _ header 3360 #在list上调用enumerate()得到每个元素的索引及其值,方便我们提取所需的数据列。

  # print(索引,列标题)

  #从文件中获取最高温度

  日期,高点=[],[]

  对于reader:中的行

  current_date=datetime.strptime(行[2], %Y-%m-%d )

  high=int(row[5])

  dates.append(当前日期)

  highs.append(高)

  #根据最高温度绘制图表

  plt。

  style.use(seaborn)

  fig, ax = plt.subplots()

  ax.plot(dates, highs, c=red)

  # 设置图形的格式

  ax.set_title("2018年每日最高温度", fontproperties="SimHei", fontsize=24)

  ax.set_xlabel(, fontproperties="SimHei", fontsize=16)

  fig.autofmt_xdate()

  ax.set_ylabel("温度(F)", fontproperties="SimHei", fontsize=16)

  ax.tick_params(axis=both, which=major, labelsize=16)

  plt.show()

  运行结果如下:

  

  代码再改进:虽然上图已经显示了丰富的数据,但是还能再添加最低温度数据,使其更有用

  对代码进行修改:

  sitka_highs_lows.py

  

import csv # 导入csv模块

  from datetime import datetime

  import matplotlib.pyplot as plt

  filename = data/sitka_weather_2018_simple.csv

  with open(filename) as f:

   reader = csv.reader(f)

   header_row = next(reader) # 返回文件的下一行,在这便是首行,即文件头

   # for index, column_header in enumerate(header_row): # 对列表调用了 enumerate()来获取每个元素的索引及其值,方便我们提取需要的数据列

   # print(index, column_header)

   # 从文件中获取日期、最高温度和最低温度

   dates, highs, lows = [], [], []

   for row in reader:

   current_date = datetime.strptime(row[2], %Y-%m-%d)

   high = int(row[5])

   low = int(row[6])

   dates.append(current_date)

   highs.append(high)

   lows.append(low)

  # 根据最高温度和最低温度绘制图形

  plt.style.use(seaborn)

  fig, ax = plt.subplots()

  ax.plot(dates, highs, c=red, alpha=0.5) # alpha指定颜色的透明度,0为完全透明

  ax.plot(dates, lows, c=blue, alpha=0.5)

  ax.fill_between(dates, highs, lows, facecolor=blue,alpha=0.1)

  # 设置图形的格式

  ax.set_title("2018年每日最高温度", fontproperties="SimHei", fontsize=24)

  ax.set_xlabel(, fontproperties="SimHei", fontsize=16)

  fig.autofmt_xdate()

  ax.set_ylabel("温度(F)", fontproperties="SimHei", fontsize=16)

  ax.tick_params(axis=both, which=major, labelsize=16)

  plt.show()

  运行结果如下:

  

  此外,读取CSV文件过程中,数据可能缺失,程序运行时就会报错甚至崩溃。所有需要在从CSV文件中读取值时执行错误检查代码,对可能的异常进行处理,更换数据文件为:death_valley_2018_simple.csv ,该文件有缺失值。

  

  对代码进行修改:

  death_valley_highs_lows.py

  

import csv # 导入csv模块

  from datetime import datetime

  import matplotlib.pyplot as plt

  filename = data/death_valley_2018_simple.csv

  with open(filename) as f:

   reader = csv.reader(f)

   header_row = next(reader) # 返回文件的下一行,在这便是首行,即文件头

   # for index, column_header in enumerate(header_row): # 对列表调用了 enumerate()来获取每个元素的索引及其值,方便我们提取需要的数据列

   # print(index, column_header)

   # 从文件中获取日期、最高温度和最低温度

   dates, highs, lows = [], [], []

   for row in reader:

   current_date = datetime.strptime(row[2], %Y-%m-%d)

   try:

   high = int(row[5])

   low = int(row[6])

   except ValueError:

   print(f"Missing data for {current_date}")

   else:

   dates.append(current_date)

   highs.append(high)

   lows.append(low)

  # 根据最高温度和最低温度绘制图形

  plt.style.use(seaborn)

  fig, ax = plt.subplots()

  ax.plot(dates, highs, c=red, alpha=0.5) # alpha指定颜色的透明度,0为完全透明

  ax.plot(dates, lows, c=blue, alpha=0.5)

  ax.fill_between(dates, highs, lows, facecolor=blue,alpha=0.1)

  # 设置图形的格式

  ax.set_title("2018年每日最高温度和最低气温\n美国加利福利亚死亡谷", fontproperties="SimHei", fontsize=24)

  ax.set_xlabel(, fontproperties="SimHei", fontsize=16)

  fig.autofmt_xdate()

  ax.set_ylabel("温度(F)", fontproperties="SimHei", fontsize=16)

  ax.tick_params(axis=both, which=major, labelsize=16)

  plt.show()

  如果现在运行death_valley_highs_lows.py,将会发现缺失数据的日期只有一个:

  

Missing data for 2018-02-18 00:00:00

  妥善地处理错误后,代码能够生成图形并忽略缺失数据的那天。运行结果如下:

  

  到此这篇关于Python读取CSV文件并进行数据可视化绘图的文章就介绍到这了,更多相关Python读取CSV内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: