python csv数据处理生成图_Python 读取CSV文件数据并生成可视化图形
CSV 文件数据读取并生成图形
CSV 文件格式
在文本文件中存储数据,最简单的方式就是将数据按照一定的格式存放在文件中,在读取文件时根据设计好的格式去将对应数据读取出来,这样就能很方便的进行简单数据的分类存储和读取了。
CSV 文件格式就是这样一种有着固定的格式的文件格式,CSV 文件中保存的数据之间会以逗号分割开来。例如下图这样。
CSV 文件头
Python 模块 csv 包含在 Python 标准库中,可用于分析 CSV 文件中的数据行,使得能够快速提取文件中感兴趣的值。下面可以编写简单代码来查看这个文件中的文件头数据。
import csv
filename = 'sitka_weather_07-2014.csv' with open(filename) as f: reader = csv.reader(f) header_row = next(reader) print(header_row)
在导入模块 csv 后,读取文件数据,并使用模块中的 reader (文件阅读器)对象读取文件信息,模块包含函数 next() ,调用它可以返回读取的阅读器对象的下一行内容,这里调用了一次,返回当前文件的文件头数据,使用 print() 将数据打印出来,如下图:
此时能够看出该文件的文件头数据内容,reader 处理文件中以逗号分隔的第一行数据,并将每项数据都作为一个元素存储在列表中。文件头 AKDT 表示阿拉斯加时间、其他数据都各有表示,分别对应文件中后面每一列中具体数据所代表的含义。
输出文件头位置信息
为了方便后面对文件进行数据提取可以直接提取到感兴趣的数据,在 CSV 文件中就需要准确的了解到对应数据所存放的列序号,所以首先需要输出文件头位置信息,从而了解到每一列所对应的数据含义,如下代码:
import csv
filename = 'sitka_weather_07-2014.csv' with open(filename) as f: reader = csv.reader(f) header_row = next(reader) for index, colum_header in enumerate(header_row): print(index, colum_header)
从输出结果可以看出,日期数据和最高气温数据都存放在第0列和第1列。接下来就可以直接提取对应数据并绘制图表。
提取数据绘制图表
知道需要的数据存放在哪一列中,就可以直接去提取对应的列数据,代码如下:
import csv from matplotlib import pyplot as plt
filename = 'death_valley_2014.csv' with open(filename) as f: reader = csv.reader(f) header_row = next(reader) highs = [] for row in reader: try: high = int(row[1]) highs.append(high) except ValueError: print('missing data') # 根据数据绘制图形 fig = plt.figure(dpi=128, figsize=(10, 6)) plt.plot(highs, c='red') # 设置图形格式 plt.title("Daily high temperatures, July 2014", fontsize=24) plt.xlabel('', fontsize=16) plt.ylabel("Temperature (F)", fontsize=16) plt.tick_params(axis='both', which='major', labelsize=16) plt.show()
绘制如下图:
使用模块 datetime 提取时间信息
下面在图表中添加日期,使得图表显示的信息更有效。在数据文件中的日期数据是存在第二行,所以读取该数据获得一个字符串,通过使用 datetime 模块将字符串时间数据转换为更友好的时间显示方式,使用 datetime 模块中的 strptime() 方法。例如下面代码演示这样:
from datetime import datetime
first_data = datetime.strptime("2014-7-1", '%Y-%m-%d') print(first_data)
输出显示如下:
下表列出了调用 strptime 方式接受的各种形式的实参及对应的格式:
实参
%A
星期的名称,如 Monday
%B
月份的名称,如 January
%m
用数字表示的月份(01~02)
%d
用数字表示月份中的一天(01~31)
%Y
四位的年份,如2014
%y
两位的年份,如 15
%H
24小时制的小时数(00~23)
%I
12小时制的小时数(01~12)
%p
am 或 pm
%M
分钟数(00~59)
%S
秒数(00~61)
接下来就是在刚刚的代码中添加日期显示,需要完成提取日期信息并转换格式,最后加入图表作为 X坐标轴即可。
import csv from datetime import datetime from matplotlib import as plt # 从文件中提取日期和最高气温 filename = 'sitka_weather_07-2014.csv' with open(filename) as f: reader = csv.reader(f) header_row = next(reader) dates, highs = [], [] for row in reader: current_date = datetime.strptime(row[0], '%Y-%m-%d') dates.append(current_data) high = int(row[1]) highs.append(high) # 根据数据绘制图形 fig = plt.figure(dpi=128, figsize=(10, 6)) plt.plot(dates, highs, c='red') plt.xlabel('', fontsize=16) fig.autofmt_xdate() plt.ylabel("Temperature (F)", fontsize=16) plt.tick_params(axis='both', which='major', labelsize=16) plt.show()
显示结果如下图所示:
添加低温数据曲线
前面绘制了高温数据变化曲线,同时在这个图表上添加低温的变化曲线以方便我们通过图表能清晰看到温度的具体变化情况,修改代码如下:
# 从文件中获取日期,最高气温和最低气温 filename = 'sitka_weather_2014.csv' with open(filename) as f: reader = csv.reader(f) header_row = next(reader) dates, highs, lows = [], [], [] for row in reader: current_date = datetime.strptime(row[0], '%Y-%m-%d') dates.append(current_date) high = int(row[1]) highs.append(high) low = int(row[3]) lows.append(low) # 根据数据绘制图形 fig = plt.figure(dpi=128, figsize=(10, 6)) plt.plot(dates, highs, c='red') plt.plot(dates, lows, c='blue') # 设置图形格式 plt.title('Daily high and low temperatures- 2014', fontsize=24)
显示如下:
图表区域着色
在同时显示高温和低温后,能够看到每天温度的变化区间,如果在这个区域添加上颜色那么久会是图表显示更清晰。
import csv from matplotlib import pyplot as plt from datetime import datetime
filename = 'death_valley_2014.csv' with open(filename) as f: reader = csv.reader(f) header_row = next(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) # Plot data. fig = plt.figure(dpi=128, figsize=(10, 6)) plt.plot(dates, highs, c='red', alpha=0.5) plt.plot(dates, lows, c='blue', alpha=0.5) plt.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1) # Format plot. title = "Daily high and low temperatures - 2014\nDeath Valley, CA" plt.title(title, fontsize=20) plt.xlabel('', fontsize=16) fig.autofmt_xdate() plt.ylabel("Temperature (F)", fontsize=16) plt.tick_params(axis='both', which='major', labelsize=16) plt.show()
如下图所示:
添加错误检查
为了防止因为数据提取和处理不正常而影响程序的正常运行,需要对一些意外情况做一定的处理,也就是对容易出现的意外错误进行检查。
import csv from matplotlib import pyplot as plt from datetime import datetime
filename = 'death_valley_2014.csv' with open(filename) as f: reader = csv.reader(f) header_row = next(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) # Plot data. fig = plt.figure(dpi=128, figsize=(10, 6)) plt.plot(dates, highs, c='red', alpha=0.5) plt.plot(dates, lows, c='blue', alpha=0.5) plt.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1) # Format plot. title = "Daily high and low temperatures - 2014\nDeath Valley, CA" plt.title(title, fontsize=20) plt.xlabel('', fontsize=16) fig.autofmt_xdate() plt.ylabel("Temperature (F)", fontsize=16) plt.tick_params(axis='both', which='major', labelsize=16) plt.show()
本文地址:https://blog.csdn.net/qq_37596943/article/details/107822870
希望与广大网友互动??
点此进行留言吧!
python csv数据处理生成图_Python 读取CSV文件数据并生成可视化图形相关推荐
- python接口自动化参数化_Python读取txt文件数据的方法(用于接口自动化参数化数据)...
小试牛刀: 1.需要python如何读取文件 2.需要python操作list 3.需要使用split()对字符串进行分割 代码运行截图 : 代码(copy) #encoding=utf-8 #1.r ...
- python提取excel前十行生成图_Python读取Excel数据生成图表 v2.0
Python读取Excel数据生成图表 v2.0 一.需求背景 自己一直在做一个周基金定投模拟,每周需要添加一行数据,并生成图表.以前一直是用Excel实现的.但数据行多后,图表大小调整总是不太方便, ...
- python 读取csv某一列_Python 读取csv的某列
CSV 本质上是文本文件,能提供与 Excel 的表格类似的二维数据结构.因为是文本文件,读写都比 Excel 方便容易的多,经常拿来作为数据的中转格式.本文讨论如何快速有效的按列读取 CSV 文件. ...
- python三维矩阵出图_python读取图片的方式,以及将图片以三维数组的形式输出方法...
python 三维npy数组如何画成三维图片 画成三维图片? 你要是想要看空间分布的话画散点图就可以啊,用matplotlib 网页链接 要是那种各种弯曲的面,也是matplotlib 网页链接 再就 ...
- python输出文本和值_python读取文本中数据并转化为DataFrame的实例
在技术问答中看到一个这样的问题,感觉相对比较常见,就单开一篇文章写下来. 从纯文本格式文件 "file_in"中读取数据,格式如下: 需要输出成"file_out&quo ...
- python读yaml的库_Python读取YAML文件过程详解
这篇文章主要介绍了Python读取YAML文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python读取方法: import yaml ...
- python读excel并写入_Python读取Excel文件并写入数据库
好方法最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做自动化测试的时候,如果涉及到数据的读取和存储,那么而 ...
- python画k线图_python自动获取行情数据,并画k线图
1.概述 本例子为画k线图,同时画出5日,10日,30日均线,且鼠标移动到上面会显示当前交易日,开盘价,收盘价,最高价,最低价. 移动平均线:Moving Average,简称MA,MA是用统计分析的 ...
- python读excel并写入_python 读取excel文件并写入json
excel内容: 代码: import xlrd import json import operator def read_xlsx(filename): # 打开excel文件 data1 = xl ...
最新文章
- 用python画花瓣-Python竟能画这么漂亮的花,帅呆了(代码分享)
- mpython_mPython下载 mPython(图形化编程软件) v0.5.0 官方安装版 下载-脚本之家
- 当深度学习遇上量化交易——公开信息篇
- 《原神》——开放世界二次元游戏的一些见解和建议
- 持续集成:部署发布篇
- 利用file权限读取/etc/passwd
- 神经网络与深度学习第4章:前馈神经网络 阅读提问
- (附源码)ssm小米购物网站 毕业设计 261624
- asymptotic notation and recursion
- 论文阅读“Automatic detection of hardhats worn by construction personnel”
- 我的2015—跌宕与破晓
- 第四届高教杯计算机绘图教程,第十一届高教杯全国大学生先进成图技术与产品信息建模.PDF...
- Python深度学习基础(二)——反向传递概念透彻解析以及Python手动实现
- 高斯消元——解线性方程组+球形空间产生器+开关问题
- android 角标框架,Android 实现桌面未读角标
- 这篇 Java 基础,我吹不动了
- 赤裸裸的统计学:除去大数据的枯燥外衣,呈现真实的数字之美 - 电子书下载 -(百度网盘 高清版PDF格式)...
- 软件危机(含通俗理解帮助记忆)
- 英语美文-What will matter?
- 大学计算机老师面试说课,大学老师面试讲课技巧