断断续续使用Python编程已接近半年时光,尽管目前使用的功能相对单一(主要用于传感器实验数据的处理),但仍然发现,某些时候使用时会一时半会想不起来了,归结原因是“不熟悉”;因此,考虑将目前学习Python的一些东西记录下来,权当是方便下次快速查找吧!

关于Python数据处理内容,我会开一个系列不断更新,争取基本覆盖实际中使用到的相关内容。

1. 本节讲解

Python读取.csv文件,并进行数据图像绘制。

2. 原始数据

部分原始数据的内容,格式如下:

180202_20:28:52,180202_20:24:31,3
180202_20:28:53,180202_20:24:41,4
180202_20:28:53,180202_20:24:51,4
180202_20:28:54,180202_20:25:01,4
180202_20:28:54,180202_20:25:11,4
180202_20:28:55,180202_20:25:21,5
180202_20:28:55,180202_20:25:31,5

第一个逗号分隔数据为:TSI设备内部时间戳;第二个逗号分隔数据为:PC端操作系统时间戳;最后一个分隔符数据为:TSI设备此时刻对应值。我们需要获取以TSI设备时间戳为基准的TSI设备对应读数的曲线。

3. 工程文件(点击下载附件

核心代码如下:

# -*- coding: utf-8 -*-
"""
Created on Thu Dec  7 10:50:09 2017

@author: lu
"""

import time
import csv
import matplotlib.pyplot as plt

#读取的csv文件    
fileName = '180202_201159 TSI.csv'

#绘图所需数据
xtime = []
yvalue = []

#获取TSI传感器数据
with open(fileName, 'r') as csvfile:
    spamreader = csv.reader(csvfile)
    for row in spamreader:
    
        #获取时间轴数据,根据csv格式知其为第一列row[0]
        xtimestamp = time.mktime(time.strptime(row[0],"%y%m%d_%H:%M:%S"))
    
        #获取PM2.5相关参数,根据csv格式知其为第三列row[2]
        if(row[2].isdigit()):
            xtime.append(xtimestamp) 
            yvalue.append(row[2])
        else:
            print("Wrong type: " + str(row))

#对X轴时间进行归一化
deta = int(xtime[0])
for j in range(len(xtime)):
    xtime[j] = int(xtime[j])-deta
    yvalue[j] = int(yvalue[j])
    
#X和Y坐标信息
plt.xlabel("Time(s)")
plt.ylabel("Ug(TSI_PM2.5)")  
    
#绘制曲线
plt.plot(xtime,yvalue,label='TSI_PM2.5',linewidth=2)  

plt.legend()
plt.show()

4. 实验结果

注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。 标签:python,csv处理