python把csv做成柱状图_Python开发【模块】:CSV文件 数据可视化

CSV模块

1、CSV文件格式

要在文本文件中存储数据,最简单的方式是讲数据作为一系列逗号分隔的值(CSV)写入文件,这样的文件成为CSV文件,如下:

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

2014-7-1,64,56,50,53,51,48,96,83,58,30.19,30.00,29.79,10,10,10,7,4,,0.00,7,,337

2014-7-2,71,62,55,55,52,46,96,80,51,29.81,29.75,29.66,10,9,2,13,5,,0.14,7,Rain,327

2014-7-3,64,58,53,55,53,51,97,85,72,29.88,29.86,29.81,10,10,8,15,4,,0.01,6,,258

2014-7-4,59,56,52,52,51,50,96,88,75,29.91,29.89,29.87,10,9,2,9,2,,0.07,7,Rain,255

2014-7-5,69,59,50,52,50,46,96,72,49,29.88,29.82,29.79,10,10,10,13,5,,0.00,6,,110

2014-7-6,62,58,55,51,50,46,80,71,58,30.13,30.07,29.89,10,10,10,20,10,29,0.00,6,Rain,213

2014-7-7,61,57,55,56,53,51,96,87,75,30.10,30.07,30.05,10,9,4,16,4,25,0.14,8,Rain,211

2014-7-8,55,54,53,54,53,51,100,94,86,30.10,30.06,30.04,10,6,2,12,5,23,0.84,8,Rain,159

2014-7-9,57,55,53,56,54,52,100,96,83,30.24,30.18,30.11,10,7,2,9,5,,0.13,8,Rain,201

2014-7-10,61,56,53,53,52,51,100,90,75,30.23,30.17,30.03,10,8,2,8,3,,0.03,8,Rain,215

2014-7-11,57,56,54,56,54,51,100,94,84,30.02,30.00,29.98,10,5,2,12,5,,1.28,8,Rain,250

2014-7-12,59,56,55,58,56,55,100,97,93,30.18,30.06,29.99,10,6,2,15,7,26,0.32,8,Rain,275

2014-7-13,57,56,55,58,56,55,100,98,94,30.25,30.22,30.18,10,5,1,8,4,,0.29,8,Rain,291

2014-7-14,61,58,55,58,56,51,100,94,83,30.24,30.23,30.22,10,7,0,16,4,,0.01,8,Fog,307

2014-7-15,64,58,55,53,51,48,93,78,64,30.27,30.25,30.24,10,10,10,17,12,,0.00,6,,318

2014-7-16,61,56,52,51,49,47,89,76,64,30.27,30.23,30.16,10,10,10,15,6,,0.00,6,,294

2014-7-17,59,55,51,52,50,48,93,84,75,30.16,30.04,29.82,10,10,6,9,3,,0.11,7,Rain,232

2014-7-18,63,56,51,54,52,50,100,84,67,29.79,29.69,29.65,10,10,7,10,5,,0.05,6,Rain,299

2014-7-19,60,57,54,55,53,51,97,88,75,29.91,29.82,29.68,10,9,2,9,2,,0.00,8,,292

2014-7-20,57,55,52,54,52,50,94,89,77,29.92,29.87,29.78,10,8,2,13,4,,0.31,8,Rain,155

2014-7-21,69,60,52,53,51,50,97,77,52,29.99,29.88,29.78,10,10,10,13,4,,0.00,5,,297

2014-7-22,63,59,55,56,54,52,90,84,77,30.11,30.04,29.99,10,10,10,9,3,,0.00,6,Rain,240

2014-7-23,62,58,55,54,52,50,87,80,72,30.10,30.03,29.96,10,10,10,8,3,,0.00,7,,230

2014-7-24,59,57,54,54,52,51,94,84,78,29.95,29.91,29.89,10,9,3,17,4,28,0.06,8,Rain,207

2014-7-25,57,55,53,55,53,51,100,92,81,29.91,29.87,29.83,10,8,2,13,3,,0.53,8,Rain,141

2014-7-26,57,55,53,57,55,54,100,96,93,29.96,29.91,29.87,10,8,1,15,5,24,0.57,8,Rain,216

2014-7-27,61,58,55,55,54,53,100,92,78,30.10,30.05,29.97,10,9,2,13,5,,0.30,8,Rain,213

2014-7-28,59,56,53,57,54,51,97,94,90,30.06,30.00,29.96,10,8,2,9,3,,0.61,8,Rain,261

2014-7-29,61,56,51,54,52,49,96,89,75,30.13,30.02,29.95,10,9,3,14,4,,0.25,6,Rain,153

2014-7-30,61,57,54,55,53,52,97,88,78,30.31,30.23,30.14,10,10,8,8,4,,0.08,7,Rain,160

2014-7-31,66,58,50,55,52,49,100,86,65,30.31,30.29,30.26,10,9,3,10,4,,0.00,3,,217

sitka_weather_07-2014.csv

2、取CSV数据绘制气温图表

① 创建highs_lows.py读取数据第一行:

import csv

filename = 'sitka_weather_07-2014.csv'

with open(filename,'r') as f:

reader = csv.reader(f) # 生成阅读器,f对象传入

header_row = next(reader) # 查看文件第一行,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']

② 修改highs_lows.py文件获取每日最高温度

import csv

filename = 'sitka_weather_07-2014.csv'

with open(filename,'r') as f:

reader = csv.reader(f) # 生成阅读器,f对象传入

header_row = next(reader) # 查看文件第一行,reader是可迭代对象

highs = []

for row in reader:

high = int(row[1])

highs.append(high)

print(highs)

# [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]

③ 根据数据绘制气温图表

import csv

import matplotlib.pyplot as plt

filename = 'sitka_weather_07-2014.csv'

with open(filename,'r') as f:

reader = csv.reader(f) # 生成阅读器,f对象传入

header_row = next(reader) # 查看文件第一行,reader是可迭代对象

highs = []

for row in reader:

high = int(row[1])

highs.append(high)

# 设置图片大小

fig = plt.figure(dpi=128,figsize=(10,6))

plt.plot(highs, c='red',linewidth=1) # 设置颜色、线条粗细

# 设置图片格式

plt.title('Daily high temperatures,July 2014', fontsize=24) # 标题

plt.xlabel('', fontsize=14)

plt.ylabel('Temperature(F)', fontsize=14)

plt.show() # 输出图像

绘图:

python把csv做成柱状图_Python开发【模块】:CSV文件 数据可视化_第1张图片

④ X轴改为时间日期

import csv

import matplotlib.pyplot as plt

from datetime import datetime

filename = 'sitka_weather_07-2014.csv'

with open(filename,'r') as f:

reader = csv.reader(f) # 生成阅读器,f对象传入

header_row = next(reader) # 查看文件第一行,reader是可迭代对象

dates,highs = [],[]

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',linewidth=1) # linewidth决定绘制线条的粗细

# 设置图片格式

plt.title('Daily high temperatures,July 2014', fontsize=20) # 标题

plt.xlabel('', fontsize=14)

fig.autofmt_xdate() # 日期标签转为斜体

plt.ylabel('Temperature(F)', fontsize=14)

plt.tick_params(axis='both',which='major')

plt.show() # 输出图像

绘图:

python把csv做成柱状图_Python开发【模块】:CSV文件 数据可视化_第2张图片

⑤ 添加低温数据,填充折线区域

import csv

import matplotlib.pyplot as plt

from datetime import datetime

filename = 'sitka_weather_2014.csv'

with open(filename,'r') as f:

reader = csv.reader(f) # 生成阅读器,f对象传入

header_row = next(reader) # 查看文件第一行,reader是可迭代对象

# 获取日期,最高温度,最低温度

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 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) # 最高温度 alpha透明度0完全透明,1表示完全不透明

plt.plot(dates,lows, c='blue',alpha=0.5) # 最低温度

plt.fill_between(dates,highs,lows,facecolor='blue',alpha=0.1) #填充色

# 设置图片格式

plt.title('Daily high temperatures - 2014', fontsize=20) # 标题

plt.xlabel('', fontsize=14)

fig.autofmt_xdate() # 日期标签转为斜体

plt.ylabel('Temperature(F)', fontsize=14)

plt.tick_params(axis='both',which='major')

plt.show() # 输出图像

绘图:

python把csv做成柱状图_Python开发【模块】:CSV文件 数据可视化_第3张图片

你可能感兴趣的:(python把csv做成柱状图)