Python读取CSV文件并进行数据可视化绘图

介绍:文件 sitka_weather_07-2018_simple.csv是阿拉斯加州锡特卡2018年1月1日的天气数据,其中包含当天的最高温度和最低温度。数据文件存储与data文件夹下,接下来用Python读取该文件数据,再基于数据进行可视化绘图。(详细细节请看代码注释)

sitka_highs.py

import csv  # 导入csv模块
from datetime import datetime
import matplotlib.pyplot as plt
filename = 'data/sitka_weather_07-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 = [], []
    for row in reader:
        current_date = datetime.strptime(row[2], '%Y-%m-%d')
        high = int(row[5])
        dates.append(current_date)
        highs.append(high)

# 根据最高温度绘制图形
plt.style.use('seaborn')
fig, ax = plt.subplots()
ax.plot(dates, highs, c='red')
# 设置图形的格式
ax.set_title("2018年7月每日最高温度", 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_weather_2018_simple.csv数据文件置于data文件夹下,该文件包含整年的锡特卡天气数据。

对代码进行修改:

sitka_highs.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 = [], []
    for row in reader:
        current_date = datetime.strptime(row[2], '%Y-%m-%d')
        high = int(row[5])
        dates.append(current_date)
        highs.append(high)

# 根据最高温度绘制图形
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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python数据分析之绘图和可视化详解

    一.前言 matplotlib是一个用于创建出版质量图表的桌面绘图包(主要是2D方面).该项目是由John Hunter于2002年启动的,其目的是为Python构建一个MATLAB式的绘图接口.matplotlib和IPython社区进行合作,简化了从IPython shell(包括现在的Jupyter notebook)进行交互式绘图.matplotlib支持各种操作系统上许多不同的GUI后端,而且还能将图片导出为各种常见的矢量(vector)和光栅(raster)图:PDF.SVG.JPG

  • 详解Python读取和写入操作CSV文件的方法

    目录 什么是 CSV 文件? 内置 CSV 库解析 CSV 文件 读取 CSV 文件csv 将 CSV 文件读入字典csv 可选的 Python CSV reader参数 使用 csv 写入文件 从字典中写入 CSV 文件csv 使用 pandas 库解析 CSV 文件 pandas 读取 CSV 文件 pandas 写入 CSV 文件 最流行的数据交换格式之一是 CSV 格式.是需要通过键盘和控制台以外的方式将信息输入和输出的程序,通过文本文件交换信息是在程序之间共享信息的常用方法. 这里带和

  • Python中的数据可视化matplotlib与绘图库模块

    目录 一.条形图bar() 二.直方图 三.折线图 四.散点图+直线图 五.饼图 六.箱型图 七.plot函数参数 八.图像标注参数 九.Matplolib应用 matplotlib官方文档:https://matplotlib.org/stable/users/index.html matplotlib是一个绘图库,它可以创建常用的统计图,包括条形图.箱型图.折线图.散点图.饼图和直方图. 一.条形图bar() import matplotlib.pyplot as plt from matp

  • Python读取csv文件做K-means分析详情

    目录 1.运行环境及数据 2.基于时间序列的分析2D 2.1 2000行数据结果展示 2.2 6950行数据结果展示 2.3 300M,约105万行数据结果展示 3.经纬度高程三维坐标分类显示3D-空间点聚类 3.1 2000行数据结果显示 3.2 300M的CSV数据计算显示效果 1.运行环境及数据 Python3.7.PyCharm Community Edition 2021.1.1,win10系统. 使用的库:matplotlib.numpy.sklearn.pandas等 数据:CSV

  • Python数据可视化绘图实例详解

    目录 利用可视化探索图表 1.数据可视化与探索图 2.常见的图表实例 数据探索实战分享 1.2013年美国社区调查 2.波士顿房屋数据集 利用可视化探索图表 1.数据可视化与探索图 数据可视化是指用图形或表格的方式来呈现数据.图表能够清楚地呈现数据性质, 以及数据间或属性间的关系,可以轻易地让人看图释义.用户通过探索图(Exploratory Graph)可以了解数据的特性.寻找数据的趋势.降低数据的理解门槛. 2.常见的图表实例 本章主要采用 Pandas 的方式来画图,而不是使用 Matpl

  • python中csv文件创建、读取及修改等操作实例

    1. python中创建新的csv文件 (1). 使用csv.writer()创建: 代码如下: import csv headers = ['学号','姓名','分数'] rows = [('202001','张三','98'), ('202002','李四','95'), ('202003','王五','92')] with open('score.csv','w',encoding='utf8',newline='') as f : writer = csv.writer(f) write

  • Python如何读取csv文件时添加表头/列名

    目录 读取csv文件时添加表头/列名 解决方法 更改csv文件表头 读取csv文件时添加表头/列名 有时,我们读取的csv文件数据时发现没有表头/列名,是因为Python读取csv文件数据本来就没有表头,用pandas.read读取时,则第一行自动会被识别为columns,从而给后面的分析造成不便,这时候需要我们在读取文件数据的同时添加列名. 解决方法 1.在读取文件数据之后再定义列名 df = pd.read_csv('评论.csv',header=None) df.columns = ["昵

  • Python数据可视化JupyterNotebook绘图生成高清图片

    大家好,我是小五???? 最近有小伙伴问了个问题:如何在jupyter notebook,用Matplotlib画图时能够更"高清"? 今天正好跟大家聊聊,解决办法. 先举个小例子,用 Matplotlib 绘制极坐标图: import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inline s = pd.Series(np.arange(20)) fig = plt.figu

  • Python读取CSV文件并进行数据可视化绘图

    介绍:文件 sitka_weather_07-2018_simple.csv是阿拉斯加州锡特卡2018年1月1日的天气数据,其中包含当天的最高温度和最低温度.数据文件存储与data文件夹下,接下来用Python读取该文件数据,再基于数据进行可视化绘图.(详细细节请看代码注释) sitka_highs.py import csv # 导入csv模块 from datetime import datetime import matplotlib.pyplot as plt filename = 'd

  • python 读取.csv文件数据到数组(矩阵)的实例讲解

    利用numpy库 (缺点:有缺失值就无法读取) 读: import numpy my_matrix = numpy.loadtxt(open("1.csv","rb"),delimiter=",",skiprows=0) 写: numpy.savetxt('2.csv', my_matrix, delimiter = ',') 可能遇到的问题: SyntaxError: (unicode error) 'unicodeescape' codec

  • python读取csv文件并把文件放入一个list中的实例讲解

    如下所示: #coding=utf8 ''' 读取CSV文件,把csv文件放在一份list中. ''' import csv class readCSV(object): def __init__(self,path="Demo.csv"): #创建一个属性用来保存要操作CSV的文件 self.path=path try: #打开一个csv文件,并赋予读的权限 self.csvHand=open(self.path,"r") #调用csv的reader函数读取csv

  • 教你用Python读取CSV文件的5种方式

    目录 第一招:简单的读取 第二招:用nametuple 第三招:用tuple类型转换 第四招:用DictReader 第五招:用字典转换 典型的数据集stocks.csv: 一个股票的数据集,其实就是常见的表格数据.有股票代码,价格,日期,时间,价格变动和成交量.这个数据集其实就是一个表格数据,有自己的头部和身体. 第一招:简单的读取 我们先来看一种简单读取方法,先用csv.reader()函数读取文件的句柄f生成一个csv的句柄,其实就是一个迭代器,我们看一下这个reader的源码: 喂给re

  • 利用Python读取CSV文件并计算某一列的均值和方差

    近日需要对excel的csv文件进行处理,求取某银行历年股价的均值方差等一系列数据 文件的构成很简单,部分如下所示 总共有接近七千行数据,主要的工作就是将其中的股价数据提取出来,放入一个数组之中,然后利用numpy模块即可求出需要的数据. 这里利用了csv模块来对文件进行处理,最终实现的代码如下: import csv import numpy as np with open('pingan_stock.csv') as csv_file: row = csv.reader(csv_file,

  • Python读取CSV文件并计算某一列的均值和方差

    近日需要对excel的csv文件进行处理,求取某银行历年股价的均值方差等一系列数据 文件的构成很简单,部分如下所示 总共有接近七千行数据,主要的工作就是将其中的股价数据提取出来,放入一个数组之中,然后利用numpy模块即可求出需要的数据. 这里利用了csv模块来对文件进行处理,最终实现的代码如下: import csv import numpy as np with open('pingan_stock.csv') as csv_file: row = csv.reader(csv_file,

  • Python读取excel文件中的数据,绘制折线图及散点图

    目录 一.导包 二.绘制简单折线 三.pandas操作Excel的行列 四.pandas处理Excel数据成为字典 五.绘制简单折线图 六.绘制简单散点图 一.导包 import pandas as pd import matplotlib.pyplot as plt 二.绘制简单折线 数据:有一个Excel文件lemon.xlsx,有两个表单,表单名分别为:Python 以及student. Python的表单数据如下所示: student的表单数据如下所示:  1.在利用pandas模块进行

  • python读取json文件并将数据插入到mongodb的方法

    本文实例讲述了python读取json文件并将数据插入到mongodb的方法.分享给大家供大家参考.具体实现方法如下: #coding=utf-8 import sunburnt import urllib from pymongo import Connection from bson.objectid import ObjectId import logging from datetime import datetime import json from time import mktime

  • Python读取csv文件分隔符设置方法

    Windows下的分隔符默认的是逗号,而MAC的分隔符是分号.拿到一份用分号分割的CSV文件,在Win下是无法正确读取的,因为CSV模块默认调用的是Excel的规则. 所以我们在读取文件的时候需要添加分割符变量. import csv import os cwd = os.getcwd() print ("Current folder is %s" % (cwd) ) csvfile = open( cwd + '\data\eclipse\change-metrics.csv','r

随机推荐