对连续型数据,用pandas和plt进行折线图分析

此次分享一个分析连续型数据的案例。目前市场上会常用此方法去观察金融数据,销量数据等问题的分析。 数据真实,采集自某网站。

这里拿过来的数据,时间字段是分开了,首先做了个预处理,把时间整合下,并添加到“datetime”字段中。然后,再以datetime为索引,“PM_US Post”为目标值,生成一个新的二维数组。接着进行画图,在画图的时候,发现数据太离散了,效果不好,于是进行了降采集,以星期为单位,每个信息的目标值为去这个星期里的数据的平均值。数据中缺失值的地方,这里采用删除的方法进行处理。然后再进行绘制.

import pandas as pd
from matplotlib import pyplot as plt

file_path="./BeijingPM20100101_20151231.csv"

def Handledata(file_path):
    df =pd.read_csv(file_path)
    print(df.head(1))
    # print(df.info())
    #把分开的时间字符串通过periodindex的方法转化为pandas的时间类型
    period=pd.PeriodIndex(year=df['year'],month=df['month'],day=df['day'],hour=df['hour'],freq='H')
    df['datetime']=period
    #print(df.head(1))
    # print(period)
    # print(type(period))
    #把datetime设置为索引

    df.set_index("datetime",inplace=True)
    #进行降采集
    df=df.resample("7D").mean()
    print(df.shape)

    #处理缺失数据,删除缺失数据
    print(df['PM_US Post'])
    data=df['PM_US Post'].dropna()
    return data
def Draw(data,):
    _x =data.index
    _x = [i.strftime("%Y%m%d") for i in _x]
    _y=data.values

    plt.figure(figsize=(20,8),dpi=80)

    plt.plot(range(len(_x)),_y,label='us_post')


    plt.xticks(range(0,len(_x),10),list(_x)[::10],rotation=45)

if __name__ == '__main__':
    data=Handledata(file_path)
    Draw(data)
    plt.legend()
    plt.show()

原始数据样式:
在这里插入图片描述
添加datetime字段后为:
在这里插入图片描述
以datetime为索引,PM_US Post为目标值,再按星期降维采集后的样式:
在这里插入图片描述
最后运行结果:
在这里插入图片描述

这个是关于pm2.5的数据,大致可以看出 每年冬天的时候,pm2.5 危害最大,所以 冬天的时候,出门得戴口罩哦!

猜你喜欢

转载自blog.csdn.net/weixin_43778491/article/details/88914177