前言:这是在《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文件中提取特定的数据做图-以天气为例子相关推荐

  1. 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 ...

  2. C语言 从txt文件中提取特定的数据

    C语言:从txt中逐行读取文本,提取其中的特殊数据 在Matlab中几行正则化的操作,C中尝试实现. 问题描述 在大量的txt中提取其中的特定数据 例如: Labeled Markers (4):Ma ...

  3. 【python学习】批量读取Materials Studio的sdf文件,从文件中提取特定信息并按列存储在CSV文件

    批量读取Materials Studio的sdf文件,从文件中提取特定信息并按列存储在CSV文件 Materials Studio在执行dmol3模块中结构优化任务时,任务结束后会产生一系列的输出文件 ...

  4. ML之MLiR:利用多元线性回归法,从大量数据(csv文件)中提取五个因变量(输入运输任务总里程数、运输次数、三种不同的车型,预测需要花费的小时数)来预测一个自变量

    ML之MLiR:利用多元线性回归法,从大量数据(csv文件)中提取五个因变量(输入运输任务总里程数.运输次数.三种不同的车型,预测需要花费的小时数)来预测一个自变量 输出结果 代码设计 from nu ...

  5. linux提取fasta文件的id,从大的fasta文件中提取特定的fasta序列

    我想使用以下脚本从大的fasta文件中提取特定的fasta序列,但输出为空.从大的fasta文件中提取特定的fasta序列 transcripts.txt文件包含我想从assembly.fasta到s ...

  6. 实战:从文件夹中庞大的excel(.xlsx)文件中提取并整合数据

    从文件夹中庞大的excel(.xlsx)文件中提取并整合数据 Input 需要从文件夹树中提取有格式的单个数据格并汇总. 例如: 2017-2020x市蚊虫数据/2018/7月/abcds方法统计.x ...

  7. ffmpeg-从mp4、flv、ts文件中提取264视频流数据

    ffmpeg-从mp4.flv.ts文件中提取264视频流数据 main.c #include <stdio.h> #include <libavutil/log.h> #in ...

  8. ffmpeg-从flv文件中提取AAC音频数据保存为文件

    AAC ADTS格式协议: 从flv文件中提取AAC音频数据保存为文件. 如果需要详细了解AAC ADTS格式,可以查询文档. 原文件: 提取aac文件: main.c #include <st ...

  9. 如何读取csv文件中第n行数据python-python数据处理之如何选取csv文件中某几行的数据...

    前言 有些人看到这个问题觉得不是问题,是嘛,不就是df.col[]函数嘛,其实忽略了一个重点,那就是我们要省去把csv文件全部读取这个过程,因为如果在面临亿万级别的大规模数据,得到的结果就是boom, ...

最新文章

  1. 网上几种常见校验码图片分析
  2. 为什么一定要前后端分离?
  3. 如何保护你写的 Python 代码?
  4. 在weex 中的引入 Ethereum -web3.js
  5. Auto.js 调用系统短信、电话
  6. android 怎么初始化下拉框_第30讲:“二师兄”的成长历程之二,类属性的初始化...
  7. NYOJ 752 又见回文串
  8. boost::stl_interfaces模块实现过滤的整数迭代器的测试程序
  9. sklearn、theano、TensorFlow 以及 theras 的理解
  10. 网络工程师职业发展路线规划三步走
  11. opencv判断两个是否相等_openCV学习pointPolygonTest()
  12. PostgreSQL如何自动更新时间戳?
  13. 绘制自己的人际关系图_建立人脉,从绘制一张人际关系图谱开始。
  14. Webgl-超级基础随笔2-矩阵与绘制Cude
  15. Chrome书签删除恢复
  16. 快速掌握阿里云 OSS
  17. C++机器学习库整理
  18. EC20 HTTP 图片传输
  19. NCT 127‘英雄回归’:最精英的一批练习生走着最难的一条路
  20. 【Java从零到架构师第二季】【07】JDBC FOR MySQL

热门文章

  1. js点击a标签,打开新窗口预览图片
  2. 单向链表(Singly Linked List)
  3. RingtoneManager铃声设置
  4. 3n+1问题(C++)
  5. CSG:清华大学提出通过分化类特定卷积核来训练可解释的卷积网络 | ECCV 2020 Oral
  6. Windows驱动学习(六)-- FSD钩子
  7. GoLang之goroutine如何退出(11)
  8. 计算机论文基础与发展实践报告,大学生计算机基础论文摘要_计算机实践基础论文3000_计算机论文3000字...
  9. “未来杯”第二届知识图谱锦标赛小组赛结果及16强总决赛名单公布
  10. Cadence添加工艺库 | 虚拟机与宿主机共享文件