也是参考各位CSDN大佬的代码,融合在一起,侵shan.
用的是最复杂的办法,先把符合条件的三列数据提取出来,输出一个新的csv然后进行画图。
import csv
import matplotlib.pyplot as plt
import pandas as pd
from datetime import datetime
file_name = 'E:\data\\0721-0727.csv'
with open(file_name, 'r', encoding='utf-8') as f:
reader = csv.reader(f)
for i in range(6):
header_row = next(reader)
dates, blocks, ltes = [], [], []
for row in reader:
try:
current_date = datetime.strptime(row[1][0:row[1].rfind('-')], '%Y.%m.%d %H:%M')
#源数据日期格式为2020.08.02 00:00-2020.08.02 01:00,需要筛选出2020.08.02 00:00所以截取一下字段
block=str(row[0])
lte=str(row[29])
if block=='###':
print(current_date)
print(block)
print(lte)
else:
break #筛选出特定条件为###的整行数据
except ValueError:
print(current_date, 'missing date')
else:
dates.append(current_date)
blocks.append(block)
ltes.append(lte)
test=pd.DataFrame({'BLOCK':blocks,'DATAS':dates,'LTES':ltes})
test.to_csv('test.csv',index = None,encoding='utf8')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['axes.unicode_minus'] = False
data1 = pd.read_csv('test.csv')
fig = plt.figure(figsize=(36, 24))
xdata = []
ydata = []
xdata = data1.loc[:, 'DATAS']
ydata = data1.loc[:, 'LTES']
plt.plot(xdata, ydata, color='r', marker='o', mec='r', mfc='w', label=u'label1')
plt.xticks(rotation=45)
plt.title(u"title", size=40)
plt.legend()
plt.xlabel(u'时间', size=40)
plt.ylabel(u'流量', size=40)
plt.show()