Python学习for数据可视化项目(二)

本篇博客深入探讨Python处理CSV文件进行数据可视化,包括读取CSV、绘制气温图表,利用datetime处理日期。接着讲解如何处理JSON数据,制作世界人口地图。涉及pygal和matplotlib库。
摘要由CSDN通过智能技术生成

Python学习for数据可视化项目(二)

图片后续添加

1 CSV文件格式

在文本文件中存储数据最简单的方式时将数据作为一系列**以逗号分隔的值(CSV)**写入。这样的文件被成为CSV文件。本部分将使用《Python编程:从入门到实践》的配套资源,来对阿拉斯加西特卡地区的天气数据进行分析,文件名为sitka_weather_07-2014.csv。

1.1 分析CSV文件头

csv模块包含在Python标准库中,可用于分析CSV文件中的数据行。

import csv
filename='sitka_weather_07-2014.csv'
#打开文件,将结果文件对象存储在f
with open(filename) as f:
    #调用csv.reader()将文件对象传入,创建一个阅读器对象
    reader=csv.reader(f)
    #csv中的next()函数返回阅读器对象中的下一行
    header_row=next(reader)
    print(header_row)

所打开文件的第一行是与天气相关的文件头:

['AKDT', 'Max TemperatureF', 'Mean TemperatureF', 'Min TemperatureF', 'Max Dew PointF', 'MeanDew PointF', 'Min DewpointF', 'Max Humidity', ' Mean Humidity', ' Min Humidity', ' Max Sea Level PressureIn', ' Mean Sea Level PressureIn', ' Min Sea Level PressureIn', ' Max VisibilityMiles', ' Mean VisibilityMiles', ' Min VisibilityMiles', ' Max Wind SpeedMPH', ' Mean Wind SpeedMPH', ' Max Gust SpeedMPH', 'PrecipitationIn', ' CloudCover', ' Events', ' WindDirDegrees']

文件头AKDT 表示阿拉斯加时间(Alaska Daylight Time) , 其位置表明每行的第一个值都是日期或时间。 文件头Max TemperatureF 指出每行的第二个值都是当天的最高华氏温度。

注:文件头的格式并非总是一致,空格和单位可能出现在奇怪的地方,这在原始文件中很常见,不会带来问题。

1.2 打印文件头及其位置

使用**enumerate()**来获取每个元素的索引和值,以将列表中的每个文件头及其位置都打印出来:

import csv
filename='sitka_weather_07-2014.csv'

with open(filename) as f:
    reader=csv.reader(f)
    header_row=next(reader)
    #print(header_row)
    for index,columb_header in enumerate(header_row):
        print(index,columb_header)

此时输出如下:

0 AKDT
1 Max TemperatureF
2 Mean TemperatureF
3 Min TemperatureF
4 Max Dew PointF
5 MeanDew PointF
6 Min DewpointF
7 Max Humidity
8  Mean Humidity
9  Min Humidity
10  Max Sea Level PressureIn
11  Mean Sea Level PressureIn
12  Min Sea Level PressureIn
13  Max VisibilityMiles
14  Mean VisibilityMiles
15  Min VisibilityMiles
16  Max Wind SpeedMPH
17  Mean Wind SpeedMPH
18  Max Gust SpeedMPH
19 PrecipitationIn
20  CloudCover
21  Events
22  WindDirDegrees

从中看出,时间在第0列,最高气温在第1列。故而为了分析时间和最高气温,应当处理文件中的每一行数据,提取出索引为0和1的值。

1.3 提取并读取数据

创建一个空列表,用一个循环来将每一行的最高气温存进列表。

import csv
filename='sitka_weather_07-2014.csv'

with open(filename) as f:
    reader=csv.reader(f)
    header_row=next(reader)
    #print(header_row)
    #for index,columb_header in enumerate(header_row):
        #print(index,columb_header)
    highs=[]
    for row in reader:
        highs.append(row[1])

    print(highs)

注意:阅读器对象从其停留的地方继续往下读取CSV文件, 每次都自动返回当前所处位置的下一行。

由于之前已经用next()读取了文件头行, 程序中的循环将从第二行开始,而文件中从这行开始包含的是实际数据。

['64', '71', '64', '59', '69', '62', '61', '55', '57', '61', '57', '59', '57', '61', '64', '61', '59', '63', '60', '57', '69', '63', '62', '59', '57', '57', '61', '59', '61', '61', '66']

由于是在列表中使用了字符串保存天气的数据,为了让matplotlib可以读取,应当将其转换为数字。

上文程序中的循环部分改成:

for row in reader:
    high=int(row[1])
    highs.append(high)

此时数据为:

[64, 71, 64, 59, 69, 62, 61, 55, 57, 61, 57, 59, 57, 61, 64, 61, 59, 63, 60, 57, 69, 63, 62, 59, 57, 57, 61, 59, 61, 61, 66]

1.4 绘制气温图表

使用matplotlib来创建一个显示每日最高气温的折线图。

import matplotlib.pyplot as plt
--snip--#接上节代码
#设置分辨率和图片大小
fig=plt.figure(dpi=128,figsize=(10,6))
plt.plot(highs,c='red')

plt.title('Daily high temperatures,July 2014',fontsize=24)
plt.xlabel('',fontsize=16)
plt.ylabel('Temperature(F)',fontsize=16)
plt.tick_params(axis='both',which='major',labelsize=16)

plt.show()

每日最高气温

1.5 模块dateti

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值