2080726记录

#! /usr/bin/env python
#coding:utf-8

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)

    #指定X轴的以日期格式(带小时)显示
    ax.xaxis.set_major_formatter(mdates.DateFormatter('%m%d%H'))
    #X轴的间隔为小时
    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   

#config info
filepath='newfile1.txt'
filename='newfile1.txt'
#station=
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")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值