Python分析csv文件及可视化绘图

简介

项目中经常需要对日志文件进行分析,之前使用Shell,常用的是grep, awk, sed等。

使用Shell有一个缺点,就是可视化不友好,经常需要把分析后的文件导出,再用Python/Excel可视化一下。

本文直接使用Python对日志文件进行分析,并使用matplotlib进行可视化。

数据

这里的数据文件选用一个天气数据文件,它存储了某地一个时间段的最高温度、最低温度等数据。

目的是把不同时间点最高温度和最低温度数据进行可视化,用折线图的形式绘制出来。

数据文件引用《Python编程——从入门到实践》的配套资料,可从 http://www.wunderground.com/history/ 下载。

数据头如图所示:

在这里插入图片描述

读取文件

使用Python读取文件的方式一般如下:

def read_file():
    with open("pi.txt") as file_object:
        lines = file_object.readlines()

Python标准库中包含csv模块,可直接分析csv文件行:

import csv
from datetime import datetime

filename = 'sitka_weather_2014.csv'
with open(filename) as f:
    reader = csv.reader(f) # 把文件对象关联到阅读器reader对象
    header_row = next(reader) # 得到文件第一行

打印文件头及索引的方式如下:

for index, column_header in enumerate(header_row):
    print(index, column_header)

获取想要的数据:

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 date')
        else:
            dates.append(current_date)
            highs.append(high)
            lows.append(low)

至此,已经得到了最高温度和最低温度,下面开始可视化。

matplotlib可视化

matplotlib库是功能强大的Python绘图库。

直接上代码:

# 指定分辨率和大小
fig = plt.figure(dpi = 128, figsize = (10, 6))
# 最高温度,红色
plt.plot(dates, highs, c = 'red')
# 最低温度,蓝色
plt.plot(dates, lows, c = 'blue')
# 最高最低温度之间填充浅蓝色,alpha表示透明度
plt.fill_between(dates, highs, lows, facecolor = 'blue', alpha = 0.1)

# 图表标题
plt.title('Daily high and low temperatures, 2014', fontsize = 24)
# x轴,不指定,后续填日期
plt.xlabel('', fontsize = 16)
# 自动绘制日期标签,x轴,避免重叠
fig.autofmt_xdate()
# y轴
plt.ylabel('F', fontsize = 16)
# 轴上标签大小
plt.tick_params(axis = 'both', which = 'major', labelsize = 16)

plt.show()

绘制和效果图如下:

在这里插入图片描述

小结

借助Python强大的数据分析包,可以轻松明了地实现数据分析与可视化。

而且,从语法、简洁的角度来看,上手与维护都优于使用Shell编程。

参考资料

《Python编程——从入门到实践》

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值