此次分享一个分析连续型数据的案例。目前市场上会常用此方法去观察金融数据,销量数据等问题的分析。 数据真实,采集自某网站。
这里拿过来的数据,时间字段是分开了,首先做了个预处理,把时间整合下,并添加到“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 危害最大,所以 冬天的时候,出门得戴口罩哦!