import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime
def draw_hour(y_values,x_values):
ys = y_values
df = x_values
xs = [datetime.datetime.strptime(str(d), '%Y%m%d%H') for d in df]
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.title("空气质量小时变化图",fontsize=24)
xlabel_name = str(df[0])[0:4]+"年"+str(df[0])[4:6]+"月"+str(df[0])[6:8]+"日"
plt.xlabel(xlabel_name,fontsize=14)
plt.ylabel("浓度",fontsize=14)
ax.xaxis.set_major_formatter(mdates.DateFormatter('%m%d%H'))
ax.xaxis.set_major_locator(mdates.HourLocator())
plt.plot(xs, ys)
plt.gcf().autofmt_xdate()
plt.show()
def data_hour(df,starttime,endtime,index):
df = df
starttime =starttime
endtime =endtime
df = df[(df[index]<=int(endtime))&(df_aqi[index] >= int(starttime))]
start_date = datetime.datetime.strptime(starttime,"%Y%m%d%H")
end_date = datetime.datetime.strptime(endtime,"%Y%m%d%H")
numdays = (end_date-start_date).days
for i in range(0,numdays):
a = start_date+datetime.timedelta(days = i)
a_str = datetime.datetime.strftime(a,"%Y%m%d")
df_new = df[(df[index] <=int(a_str+'23')) & (df[index] >= int(a_str+'00'))]
df_new = df_new.set_index('date')
newindex = [int(a_str+'00'),int(a_str+'01'),int(a_str+'02'),int(a_str+'03'),int(a_str+'04'),int(a_str+'05'),int(a_str+'06'),
int(a_str+'07'),int(a_str+'08'),int(a_str+'09'),int(a_str+'10'),int(a_str+'11'),int(a_str+'12'),int(a_str+'13'),
int(a_str+'14'),int(a_str+'15'),int(a_str+'16'),int(a_str+'17'),int(a_str+'18'),int(a_str+'19'),int(a_str+'20'),
int(a_str+'21'),int(a_str+'22'),int(a_str+'23')]
df_new = df_new.reindex(newindex)
if i==0 :
df_month = df_new
else:
df_month = df_month.append(df_new)
return df_month
def data_proc(df,index,error):
df[index][df[index] == error]=None
return df
filepath='newfile1.txt'
filename='newfile1.txt'
starttime='2017010100'
endtime='2017013100'
aqi_index = ['date','station','lat','long','aqi','aqi_level','PM2.5','PM10','CO','NO2','O3_1h','O3_8h','SO2']
df = pd.read_csv('newfile1.txt',sep='\s+',names=aqi_index)
df_aqi = df[['date','aqi']]
df_aqi_hour = data_hour(df_aqi,starttime,endtime,'date')
df_aqi_hour = data_proc(df_aqi_hour,'aqi',9999)
print df_aqi_hour
df_aqi_hour.to_csv("outfile.csv")