在csv文件中提取特定的数据做图-以天气为例子
前言:这是在《python入门》中的一个例子,写成文章,作为学习的复盘。
现在有这么一份天气数据,需要将画出最高温和最低温的曲线图。
前期的基础知识:
CSV文件
CSV是最通用的一种文件格式,它可以非常容易地被导入各种PC表格及数据库中。 此文件,一行即为数据表的一行。生成数据表字段用半角逗号隔开。
CSV是文本文件,用记事本就能打开,XLS是二进制的文件只有用EXCEL才能打
CSV(以逗号分隔)
CSV (*.csv) 文件格式只能保存活动工作表中的单元格所显示的文本和数值。工作表中所有的数据行和字符都将保存。数据列以逗号分隔,每一行数据都以回车符结束。如果单元格中包含逗号,则该单元格中的内容以双引号引起。
如果单元格显示的是公式而不是数值,该公式将转换为文本方式。所有格式、图形、对象和工作表的其他内容将全部丢失。欧元符号将转换为问号。
CSV即Comma Separate Values,这种文件格式经常用来作为不同程序之间的数据交互的格式。
通过使用 Excel 中“文件”菜单上的“另存为”命令,可将 Microsoft Excel 文件转换成CSV文件格式
————————————————
版权声明:本文为CSDN博主「jackyren007」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jackyren007/article/details/4209436
分析起来,就两步。第一,打开这个文件,读取特定的时间和温度等信息,将其作为数值放到一个list中;第二,根据list画出曲线图。
读文件,获数据
csv读取需要使用csv库。将待处理的文件放到同一个目录下,用csv模块将其打开后,放到一个阅读器reader中,读取首行信息(其实我也不知道为什么要读首行)。
import csvfile_name = 'csv_sitka_weather_2014.csv'with open(file_name) as f:reader = csv.reader(f)header_row = next(reader)
接着,我们要提取时间,最高温度和最低温度的数据。
最低温度和最高温度好处理。此时阅读的位置来到了第二行(从第二行开始有数据),接着我们要一行一行地阅读,因此可以使用for循环去读每一个row,范围是reader(此时从第二行,到最后一行)。观察数据结构,我们发现对于某一行row而言,row[1]和row[3]分别代表最高温度和最低温度,再将其放入新建的list即可。要注意,读取的是文本值,画图之前务必要转换成数值。
温度的读取也是同理。新问题是,文件中时间的是文本的时间格式,2014/1/1。我们需要把它转化成真正的时间。这里需要用到datetime类中的datetime模块的strptime方法,告诉python:对于某一个时间current_time,文件中的意思是%Y-%m-%d。
以上基本完成了数据的提取,但是会遇到特殊情况,比如某一个row缺少数据。此时我们要用到try....except.....else.....。try(尝试将某一个row中的current_time、high、low分别转化成时间和int。如果出现ValueError,则打印该日期的数据缺失,不管它;不然程序继续往下走,把相关的信息添加到list中。
好啦,啰啰嗦嗦地分析完,上代码:
dates, highs, lows = [], [], []for row in reader:try:high = int(row[1])low = int(row[3])current_date = datetime.strptime(row[0],'%Y-%m-%d')except ValueError:print(current_date, 'missing date')else:dates.append(current_date)highs.append(high)lows.append(low)
同时新建三个list,这个表达好棒!
根据list画图
引入matplotlib中的pyplot模块,使用plot方法,告诉它X轴信息和y轴的信息(就是上一步得到的list)。如果要画出两条曲线,则重复上述步骤,即可。
fig = plt.figure(dpi=128,figsize=(10,6))
plt.plot(dates,highs,c='red')
plt.plot(dates,lows,c='blue')
plt.fill_between(dates,highs,lows,facecolor='blue',alpha=0.1)
plt.title('temperature',fontsize=24)
plt.xlabel('',fontsize=16)
plt.ylabel('Temperature (F)',fontsize=16)
plt.tick_params(axis='both',which='major',labelsize=16)plt.show()
最终得到图
大功告成!
实话说,也不是那么顺利的。竟然没有找到matplotlib库,我是意想不到的。折腾了好久。
根据方法,在pycharm的偏好设置中添加,具体位置如图:
但是吧,因为网络的原因,这个方法特别的慢。哪怕换成手机热点,也失败了。
最后通过terminal重新下载(pip方法),就行了。
写在最后
算不算是我人生低谷?
工作上,毫无进展。辛苦做出来的东西被收回,吭哧了一年没成果;大BOSS对我的项目不感兴趣;又是合作方急的要死,邮件微信催个不停;临门一脚的合作,因政策改变就直接搁置,眼看前功尽弃。外加了一堆没完没了的破事,看不到希望、看不到前景的事业,在一线起忽不定。
家庭上,父亲上个周突然说血压高,头晕要去输液;最近天气恶劣,总是担心他们人身安全。有时候我都不想接我姐电话,好好说话直接沟通就很好,不喜欢拐弯抹角怪里怪气。我不忍心怪她,最近状态很差。
感情上呢,更离谱了。异地对象问我是否接受她喜欢别人,现在跟我冷处理中吧。我这两天琢磨这事吃不好睡不好。
还有什么事?例如股票最近波动太厉害,例如副业头条的阅读量差到不忍直视。例如喜欢的连载作品因抄袭风波下载了。
哦对了,最近健康也出了点问题。头痛、腰痛,痛到睡不着觉,睡眠质量不好。
想跟朋友宣泄,刚说了两句,就噎住了。大家都不容易,我别矫情了。
我真的很低落。我真的很委屈。觉得自己也不是不努力,也不是不认真。
窗外灰暗的天气,跟我心情一样。
但是吧,就这些吗?
我泡了杯茶。还有多少打击,要不一块来吧。
盘点下,核心层没受到冲击,牌还在。
- 我是平安的,我是健康的(身心健康)。
- 我的财务是健康的,有存款/良好信用记录可以应对短暂的财务冲击;我的保险足以应对大风险(重疾险/意外险/补充医疗险)
- 我的能力还在,严密逻辑,洞察分析,敏感情商,当然还有写作、PPT和专业水平。
- 我的家人恋人(也许吧)还在,还平安。家庭无外债,短期内无重大财务风险。
- 我的事业只是停滞不前,我的个人发展只是缓慢,并没有倒挂我的人生。
……
- 只是出现短暂的波动,这对于我漫长的人生而言,是正常的。起码均值是上升。
我要做的,是让自己坦然,大方地面对,放下对自己的为难。
正如最近自己唔到的,
是世界出了问题吗?不是的,只是我给出的估值有偏差,我的期望太高了。
通过这些,我更进一步认识世界,认识自己。
现在要做的,理个发,泡个澡,吃顿好,告诉自己辛苦了。
刚好到了年中,忙完公司的年中汇报,我也该给自己做一个年中梳理了。
关于人生规划、健康、家庭(感情)、事业、财务、投资、个人发展。
(其实我每个月都在做相关策划,也该更新下了。)
收拾收拾,重新出发。
作为一个INFJ,我超相信自己。正如我一直磨过那么多考验。
修行途上,这点雷算什么?
最后我再矫情矫情:
可能我这一辈子会碌碌无为,会一无所有(贫困潦倒到不至于,财务与风控还在),我就痛痛快快、没心没肺地活着。我希望老了别中风偏瘫,还能大口喝可乐。临走前该散的散,该捐的捐,大大方方的挥手告别。对我来说,够了,也值得。
共勉!
在csv文件中提取特定的数据做图-以天气为例子相关推荐
- python提取文件指定列_如何从csv文件中提取特定列并使用python绘图
我有一个csv文件,其中包含以下几行数据:# Vertex X Y Z K_I K_II K_III J 0 2.100000e+00 2.000000e+00 -1.000000e-04 0.000 ...
- C语言 从txt文件中提取特定的数据
C语言:从txt中逐行读取文本,提取其中的特殊数据 在Matlab中几行正则化的操作,C中尝试实现. 问题描述 在大量的txt中提取其中的特定数据 例如: Labeled Markers (4):Ma ...
- 【python学习】批量读取Materials Studio的sdf文件,从文件中提取特定信息并按列存储在CSV文件
批量读取Materials Studio的sdf文件,从文件中提取特定信息并按列存储在CSV文件 Materials Studio在执行dmol3模块中结构优化任务时,任务结束后会产生一系列的输出文件 ...
- ML之MLiR:利用多元线性回归法,从大量数据(csv文件)中提取五个因变量(输入运输任务总里程数、运输次数、三种不同的车型,预测需要花费的小时数)来预测一个自变量
ML之MLiR:利用多元线性回归法,从大量数据(csv文件)中提取五个因变量(输入运输任务总里程数.运输次数.三种不同的车型,预测需要花费的小时数)来预测一个自变量 输出结果 代码设计 from nu ...
- linux提取fasta文件的id,从大的fasta文件中提取特定的fasta序列
我想使用以下脚本从大的fasta文件中提取特定的fasta序列,但输出为空.从大的fasta文件中提取特定的fasta序列 transcripts.txt文件包含我想从assembly.fasta到s ...
- 实战:从文件夹中庞大的excel(.xlsx)文件中提取并整合数据
从文件夹中庞大的excel(.xlsx)文件中提取并整合数据 Input 需要从文件夹树中提取有格式的单个数据格并汇总. 例如: 2017-2020x市蚊虫数据/2018/7月/abcds方法统计.x ...
- ffmpeg-从mp4、flv、ts文件中提取264视频流数据
ffmpeg-从mp4.flv.ts文件中提取264视频流数据 main.c #include <stdio.h> #include <libavutil/log.h> #in ...
- ffmpeg-从flv文件中提取AAC音频数据保存为文件
AAC ADTS格式协议: 从flv文件中提取AAC音频数据保存为文件. 如果需要详细了解AAC ADTS格式,可以查询文档. 原文件: 提取aac文件: main.c #include <st ...
- 如何读取csv文件中第n行数据python-python数据处理之如何选取csv文件中某几行的数据...
前言 有些人看到这个问题觉得不是问题,是嘛,不就是df.col[]函数嘛,其实忽略了一个重点,那就是我们要省去把csv文件全部读取这个过程,因为如果在面临亿万级别的大规模数据,得到的结果就是boom, ...
最新文章
- 网上几种常见校验码图片分析
- 为什么一定要前后端分离?
- 如何保护你写的 Python 代码?
- 在weex 中的引入 Ethereum -web3.js
- Auto.js 调用系统短信、电话
- android 怎么初始化下拉框_第30讲:“二师兄”的成长历程之二,类属性的初始化...
- NYOJ 752 又见回文串
- boost::stl_interfaces模块实现过滤的整数迭代器的测试程序
- sklearn、theano、TensorFlow 以及 theras 的理解
- 网络工程师职业发展路线规划三步走
- opencv判断两个是否相等_openCV学习pointPolygonTest()
- PostgreSQL如何自动更新时间戳?
- 绘制自己的人际关系图_建立人脉,从绘制一张人际关系图谱开始。
- Webgl-超级基础随笔2-矩阵与绘制Cude
- Chrome书签删除恢复
- 快速掌握阿里云 OSS
- C++机器学习库整理
- EC20 HTTP 图片传输
- NCT 127‘英雄回归’:最精英的一批练习生走着最难的一条路
- 【Java从零到架构师第二季】【07】JDBC FOR MySQL
热门文章
- js点击a标签,打开新窗口预览图片
- 单向链表(Singly Linked List)
- RingtoneManager铃声设置
- 3n+1问题(C++)
- CSG:清华大学提出通过分化类特定卷积核来训练可解释的卷积网络 | ECCV 2020 Oral
- Windows驱动学习(六)-- FSD钩子
- GoLang之goroutine如何退出(11)
- 计算机论文基础与发展实践报告,大学生计算机基础论文摘要_计算机实践基础论文3000_计算机论文3000字...
- “未来杯”第二届知识图谱锦标赛小组赛结果及16强总决赛名单公布
- Cadence添加工艺库 | 虚拟机与宿主机共享文件