1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python中csv文件添加数据标签_Python对csv格式文件进行数据分析

python中csv文件添加数据标签_Python对csv格式文件进行数据分析

时间:2019-09-12 14:10:05

相关推荐

python中csv文件添加数据标签_Python对csv格式文件进行数据分析

csv格式文件数据分析

1.下载数据

1.1下载数据,处理csv格式文件的数据

安装csv模块,在网上下载或者自己写一个csv格式的文件

也可以访问官网,不过很多人下不了这些文档,我这的下载积分只要1个。

现在开始写代码吧:

先导入csv模块,打开对应的csv文件将结果存放在f里面,调用csv.reader()方法,将前面存储的文件对象传递给他,创建一个相关联的阅读器(reader)对象,将阅读器对象存储在reader里面,调用next()方法,将阅读器对象的行传递给文件的第一行,并返回文件对象的下一行数据。

importcsv

filename = 'sitka_weather_07-.csv'

with open(filename) as f:

reader = csv.reader(f)

header_row = next(reader)

print(header_row)

'''调用enumerate()方法获取每个元素的索引和数值'''

for index, column_header inenumerate(header_row):

print(index, column_header)#打印出列号和名称

1.2数据的读取

ps:由于书里面的最高气温提取是错的,实际上是每行的第一个数据

前面我们得到了文件里面的行数和数据名称

现在我们需要读取文件里面的数据

filename= 'sitka_weather_07-.csv'

with open(filename) as f:

reader = csv.reader(f)

header_row = next(reader)

heads = []#创建一个空列表用于存放每天的第一个检测的温度for row in reader:#遍历文件对象heads.append(row[1])#添加每行的第一列到列表里print(heads)

也可以转换成数字类型的列表

for rowin reader:#遍历文件对象head = int(row[1])#读取第二列的数值heads.append(head)

print(heads)

1.3描绘出气温图表

要将这些数据进行可视化,我们需要上一章的内容matplotlib创建图表

添加图表代码就行了

#绘制图形大小和格式fig = plt.figure(dpi=128, figsize=(10,6))

plt.plot(heads,c='red')

plt.title("Daily first temperatures, July ",fontsize = 24)

plt.xlabel('',fontsize = 16)

plt.ylabel('Temperture(F)',fontsize= 16)

1.5模块的datetime

顾名思义,就是日期时间,我们要把时间添加到图表里面

读取数据时,获得是字符串,要把这个字符串转换成日期对象

可以调用datetime中的strptime()方法

我现在IDLE里面试了一下这个方法,把这一天的放进去

得到这一天的第一个时间

‘%Y-%m-&d‘ 让Python能够识别年月日的数据

>>>from datetime import datetime

>>>first_date = datetime.strptime('-7-1','%Y-%m-%d')

>>>print(first_date)

-07-0100:00:00

>>>

在图表里面添加日期:

import csv

from matplotlib import pyplot as plt

from datetime import datetime

'''修改成这一年的温度值的文件'''

filename = 'sitka_weather_.csv'

with open(filename) as f:

reader = csv.reader(f)

header_row = next(reader)

dates,heads = [],[]#创建两个空列表用于存放每天的日期及其第一个检测的温度for row in reader:#遍历文件对象current_date =datetime.strptime(row[0],"%Y-%m-%d")//将第1列的日期传过去dates.append(current_date)

head = int(row[1])

heads.append(head)

print(heads)

#绘制图形大小和格式fig = plt.figure(dpi=128, figsize=(10,6))

plt.plot(dates,heads,c='red')

plt.title("Daily first temperatures, July ",fontsize = 24)

plt.xlabel('',fontsize = 16)

#调用fig.auto_xdate()来绘制斜的的标签日期fig.autofmt_xdate()

plt.ylabel('Temperture(F)',fontsize= 16)

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

plt.show()

结果展示:

1.6丰富数据内容

其实书上面无法计算读取csv文件每行数据的最大值,所以这里只能做个表面工作

importcsv

from matplotlib import pyplot as plt

from datetime import datetime

filename = 'sitka_weather_.csv'

with open(filename) as f:

reader = csv.reader(f)

header_row = next(reader)

dates,highs,lows = [],[],[]#创建一个空列表用于存放每天的第一个检测的温度for row in reader:#遍历文件对象current_date =datetime.strptime(row[0],"%Y-%m-%d")

dates.append(current_date)

high = int(row[1])

highs.append(high)

low = int(row[5])

lows.append(low)

print(highs,lows)

#绘制图形大小和格式fig = plt.figure(dpi=128, figsize=(10,6))

plt.plot(dates,highs,c='red')

plt.plot(dates,lows,c='blue')

plt.title("Daily high and low temperatures, July ",fontsize = 24)

plt.xlabel('',fontsize = 16)

#调用fig.auto_xdate()来绘制斜的的标签日期fig.autofmt_xdate()

plt.ylabel('Temperture(F)',fontsize= 16)

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

plt.show()

然而书上不能打印出最大值,所以。。。

import csv

import numpy

from matplotlib import pyplot as plt

from datetime import datetime

filename = 'sitka_weather_.csv'

with open(filename) as f:

reader = csv.reader(f)

header_column = next(reader)

max1 ,dates=[],[]

for row in reader:

current_date =datetime.strptime(row[0], "%Y-%m-%d") #将第1列的日期传过去dates.append(current_date)

row.pop(0)

row.pop(-2)

print(max(row))

max1.append(max(row))

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

plt.plot(dates,max1,'red')

plt.title("Daily high and low temperatures, July ",fontsize = 24)

plt.xlabel('',fontsize = 16)

#调用fig.auto_xdate()来绘制斜的的标签日期fig.autofmt_xdate()

plt.ylabel('Temperture(F)',fontsize= 16)

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

plt.show()

ps:注意y轴的数值

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。