使用Python进行数据可视化(三、处理csv文件(二))

简介: 使用Python进行数据可视化(三、处理csv文件(二))

在"使用Python进行数据可视化(三、处理csv文件)"中,我们成功地从csv文件中获取了最高气温的信息,并且绘制了一个直观的折线图。接下来,我们还可以添加一些东西,使其显示更多的信息。

1.显示日期、时间信息

模板 datetime

datetime.datetime

在Python的官方文档中search datetime可以找到关于datetime的使用说明。

class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)

......

我们要用到的是:

strptime()

classmethod datetime.strptime(date_string, format)¶

Return a datetime corresponding to date_string, parsed according to format. This is equivalent to datetime(*(time.strptime(date_string, format)[0:6])). ValueError is raised if the date_string and format can’t be parsed by time.strptime() or if it returns a value which isn’t a time tuple. For a complete list of formatting directives, see strftime() and strptime() Behavior.


format的参数很多,在官方文档中可以找到。

从文档的介绍中我们可以知道,strptime的功能和用法,我们传入两个参数,第一个为日期的字符串,第二个为格式设置的参数。 而strptime将返回一个相应日期的对象。

举例:

 

 

给图加上日期

#导入csv模块
import csv
#导入datetime
from datetime import datetime
#
from matplotlib import pyplot as plt
 
#指定文件名,然后使用 with open() as 打开
filename = 'sitka_weather_07-2014.csv'
with open(filename) as f:
        #创建一个阅读器:将f传给csv.reader
        reader = csv.reader(f)
        #使用csv的next函数,将reader传给next,将返回文件的下一行
        header_row = next(reader)
        
      #  for index, column_header in enumerate(header_row):
                #print(index, column_header)
        
        #读取最高气温
        #创建最高气温的列表
        highs =[]
        dates = []
        #遍历reader的余下的所有行(next读取了第一行,reader每次读取后将返回下一行)
        for row in reader:
                 #
                current_date = datetime.strptime(row[0],"%Y-%m-%d")
                dates.append(current_date)
                #将字符串转换成数字
                high = int(row[1])
                highs.append(high)
               
#绘制图形
fig = plt.figure(dpi=128, figsize=(10,6))
plt.plot(dates,highs,c='red')
#设置图形的格式
plt.title("Daily high temperature, July 2014", fontsize=24)
plt.xlabel('',fontsize=16)
fig.autofmt_xdate()
plt.ylabel("Temperature(F)", fontsize=16)
plt.tick_params(axis='both', which="major", labelsize=16)
 
plt.show()
#导入datetime
from datetime import datetime
#
from matplotlib import pyplot as plt

#指定文件名,然后使用 with open() as 打开
filename = 'sitka_weather_07-2014.csv'
with open(filename) as f:
        #创建一个阅读器:将f传给csv.reader
        reader = csv.reader(f)
        #使用csv的next函数,将reader传给next,将返回文件的下一行
        header_row = next(reader)
        
      #  for index, column_header in enumerate(header_row):
                #print(index, column_header)
        
        #读取最高气温
        #创建最高气温的列表
        highs =[]
        dates = []
        #遍历reader的余下的所有行(next读取了第一行,reader每次读取后将返回下一行)
        for row in reader:
                 #
                current_date = datetime.strptime(row[0],"%Y-%m-%d")
                dates.append(current_date)
                #将字符串转换成数字
                high = int(row[1])
                highs.append(high)
               
#绘制图形
fig = plt.figure(dpi=128, figsize=(10,6))
plt.plot(dates,highs,c='red')
#设置图形的格式
plt.title("Daily high temperature, July 2014", fontsize=24)
plt.xlabel('',fontsize=16)
fig.autofmt_xdate()
plt.ylabel("Temperature(F)", fontsize=16)
plt.tick_params(axis='both', which="major", labelsize=16)

plt.show()

2.更多的信息-将数据扩大到2014年


要将分析的范围扩大到2014年我们只需得到2014年的csv文件,然后同样的方法,就可以得到2014年的最高气温折线图。

将 filename 改为'sitka_weather_2014.csv'

同时修改标题

plt.title("Daily high temperature,  2014", fontsize=24)

即可。

 

3.更多的信息,加上最低气温

和最高气温的方法类似,我们可以读取最低气温,并且把它和最高气温绘制在同一张图上。

    lows= []

    low = int(row[3])

    lows.append(low)

   plt.plot(dates,lows,c= 'blue')  #更改颜色为蓝色,便于区分

添加最低气温后的图表显示如下:


4.更好地显示图表--给图表区域上色

只需更改三处代码 (alpha是透明度),fill_between()填充两条折现之间的区域.

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)

结果如下:

 

5.错误检查

csv文件中有时会出现一些意料之外的东西,有时会导致错误。

用try,except,else结构来避免错误。

举例:

我试图用同样的方法分析death_valley_2014.csv时,出现了错误。

上面提示我,在30行,执行语句 high=int(row[1])时出现错误,错误类型为ValueError,提示无法将''转化成int。

于是用 try ,except,else结构来避免这种ValueError.

我们将可能出错的部分放在try的内部

except ValueError :在出错时打印一条信息,

else:来执行正常的时候的操作。

        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)

结果如下:

 

 

可以看出,不仅成功地绘制出了折线图,而且打印出了出现错误时的日期。

 

最后,最终的完整代码:

#导入csv模块
import csv
#导入datetime
from datetime import datetime
#
from matplotlib import pyplot as plt
 
#指定文件名,然后使用 with open() as 打开
filename = 'death_valley_2014.csv'
with open(filename) as f:
        #创建一个阅读器:将f传给csv.reader
        reader = csv.reader(f)
        #使用csv的next函数,将reader传给next,将返回文件的下一行
        header_row = next(reader)
        
      #  for index, column_header in enumerate(header_row):
                #print(index, column_header)
        
        #读取最高气温
        #创建最高气温的列表
        highs =[]
        lows= []
        dates = []
        #遍历reader的余下的所有行(next读取了第一行,reader每次读取后将返回下一行)
        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)
               
#绘制图形
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)
#设置图形的格式
plt.title("Daily high and low temperature,  2014", fontsize=24)
plt.xlabel('',fontsize=16)
fig.autofmt_xdate()
plt.ylabel("Temperature(F)", fontsize=16)
plt.tick_params(axis='both', which="major", labelsize=16)
 
plt.show()


相关文章
|
2天前
|
存储 算法 Serverless
剖析文件共享工具背后的Python哈希表算法奥秘
在数字化时代,文件共享工具不可或缺。哈希表算法通过将文件名或哈希值映射到存储位置,实现快速检索与高效管理。Python中的哈希表可用于创建简易文件索引,支持快速插入和查找文件路径。哈希表不仅提升了文件定位速度,还优化了存储管理和多节点数据一致性,确保文件共享工具高效运行,满足多用户并发需求,推动文件共享领域向更高效、便捷的方向发展。
|
8天前
|
数据可视化 数据挖掘 DataX
Python 数据可视化的完整指南
Python 数据可视化在数据分析和科学研究中至关重要,它能帮助我们理解数据、发现规律并以直观方式呈现复杂信息。Python 提供了丰富的可视化库,如 Matplotlib、Seaborn、Plotly 和 Pandas 的绘图功能,使得图表生成简单高效。本文通过具体代码示例和案例,介绍了折线图、柱状图、饼图、散点图、箱形图、热力图和小提琴图等常用图表类型,并讲解了自定义样式和高级技巧,帮助读者更好地掌握 Python 数据可视化工具的应用。
45 3
|
23天前
|
计算机视觉 Python
如何使用Python将TS文件转换为MP4
本文介绍了如何使用Python和FFmpeg将TS文件转换为MP4文件。首先需要安装Python和FFmpeg,然后通过`subprocess`模块调用FFmpeg命令,实现文件格式的转换。代码示例展示了具体的操作步骤,包括检查文件存在性、构建FFmpeg命令和执行转换过程。
40 7
|
1月前
|
数据可视化 Python
使用Python进行数据可视化的初学者指南
在数据的海洋里,我们如何能够不迷失方向?通过数据可视化的力量,我们可以将复杂的数据集转化为易于理解的图形和图表。本文旨在为初学者提供一份简明的入门手册,介绍如何使用Python中的Matplotlib库来揭示数据背后的故事。我们将从基础的图表开始,逐步深入到更高级的可视化技术,确保每个步骤都清晰易懂,让初学者也能轻松上手。让我们开始绘制属于你自己的数据图谱吧!
|
2月前
|
机器学习/深度学习 人工智能 数据可视化
使用Python进行数据可视化:探索与实践
在数字时代的浪潮中,数据可视化成为了沟通复杂信息和洞察数据背后故事的重要工具。本文将引导读者通过Python这一强大的编程语言,利用其丰富的库函数,轻松入门并掌握数据可视化的基础技能。我们将从简单的图表创建开始,逐步深入到交互式图表的制作,最终实现复杂数据的动态呈现。无论你是数据分析新手,还是希望提升报告吸引力的专业人士,这篇文章都将是你的理想指南。
60 9
|
2月前
|
数据可视化 数据处理 Python
Python编程中的数据可视化技术
在Python编程中,数据可视化是一项强大的工具,它能够将复杂的数据集转化为易于理解的图形。本文将介绍如何使用matplotlib和pandas这两个流行的Python库来实现数据可视化,并展示一些实用的代码示例。通过这些示例,读者将学会如何创建各种图表,包括折线图、柱状图和散点图等,以便更好地理解和呈现数据。
|
2月前
|
数据可视化 数据挖掘 定位技术
Python和Geopandas进行地理数据可视化
【10月更文挑战第22天】本文介绍了如何使用Python和Geopandas进行地理数据可视化和分析,涵盖从准备工作、加载数据、数据探索与处理、地理数据可视化、空间分析与查询到交互式地理数据可视化等内容。通过丰富的代码示例和案例演示,帮助读者掌握地理数据分析的基本方法,为实际应用提供支持。
138 19
|
2月前
|
移动开发 数据可视化 数据挖掘
利用Python实现数据可视化:以Matplotlib和Seaborn为例
【10月更文挑战第37天】本文旨在引导读者理解并掌握使用Python进行数据可视化的基本方法。通过深入浅出的介绍,我们将探索如何使用两个流行的库——Matplotlib和Seaborn,来创建引人入胜的图表。文章将通过具体示例展示如何从简单的图表开始,逐步过渡到更复杂的可视化技术,帮助初学者构建起强大的数据呈现能力。
|
2月前
|
开发者 Python
Python中__init__.py文件的作用
`__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
99 2
|
3月前
|
数据可视化 数据挖掘 Python
使用Python进行数据可视化:探索与实践
【10月更文挑战第21天】本文旨在通过Python编程,介绍如何利用数据可视化技术来揭示数据背后的信息和趋势。我们将从基础的图表创建开始,逐步深入到高级可视化技巧,包括交互式图表和动态展示。文章将引导读者理解不同图表类型适用的场景,并教授如何使用流行的库如Matplotlib和Seaborn来制作美观且具有洞察力的可视化作品。
53 7