时间序列
1.分组,遍历后有多少个数组
2.构建全为0的数组
3.赋值
4.时间序列拆分 pd.date_range。例如:当数据日期为20200101类型的数据,将想要提取的数据进行提取。提取格式start开始日期,end结束日期,freq间隔方式
pd.date_range(start="20171230",end="20180130",freq="D")
重采样:时间序列从一个频率转化为另一个频率进行处理的过程,将高频率装维低频率数据为降采样,低频率转化为高频率为升采样
5.时间序列使用period。当年月日时间等分为几列时候采取提取的方式
period=pd.PeriodIndex(year=df["year"],month=df["month"],day=df["day"],hour=df["hour"],freq="H") df["datetime"] = period
下面是例子
1.pd.date_range
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df =pd.read_csv("F:/研究方向/6-软件操作/python/python-操作/12-人工智能阶段-数据分析/数据分析资料/day06/code/911.csv")
print(df.head(10))
print(df.info)
##不同类型的的紧急情况的
##获取分类
print(df["title"].str.split(": ")[0])
#遍历全文的数据,查看有多少个数组
temp_list = df["title"].str.split(": ").to_list()
cate_list = list(set([i[0] for i in temp_list]))
print(cate_list)
# 构造全为0的数组
zeros_df = pd.DataFrame(np.zeros((df.shape[0], len(cate_list))), columns=cate_list)
#赋值 遍历cate_list的所有结果
#赋值方法一
for cate in cate_list:
zeros_df[cate][df["title"].str.contains(cate)] = 1
print(zeros_df)
#break
sum_ret =zeros_df.sum(axis=0)
print(sum_ret)
##获取分类
print(df["title"].str.split(": ")[0])
#遍历全文的数据,查看有多少个数组
temp_list2 = df["title"].str.split(": ").to_list()
cate_list2 = [i[0] for i in temp_list]
cate_df = pd.DataFrame(np.array(cate_list2).reshape((df.shape[0],1)),columns="cate")
print(cate_df)
#print(df.head(5))
print(df.groupby(by="cate").count()["title"])
# 构造全为0的数组
zeros_df = pd.DataFrame(np.zeros((df.shape[0], len(cate_list))), columns=cate_list)
##panads的实践序列
pd.date_range(start="20171230",end="20180130",freq="D") #freq="D" 每隔一天
pd.date_range(start="20171230",periods= 10,freq="D") #periods= 10代表生成10个数
#时间格式化
911中不同出警的次数
###conding= utf8
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df =pd.read_csv("F:/研究方向/6-软件操作/python/python-操作/12-人工智能阶段-数据分析/数据分析资料/day06/code/911.csv")
df["timeStamp"] =pd.to_datetime(df["timeStamp"])
df.set_index("timeStamp",inplace=True)
print(df.head(10))
#统计出不同月份中次数
count_by_month =df.resample("M").count()["title"]
print(count_by_month)
#画图
_x =count_by_month.index
_y =count_by_month.value
x=[i.strfitime("") for i in _x]
plt.figure(figsize=(20,8),dpi=80)
plt.plot(range(len(_x)),_y)
plt.xticks(range(len(_x)),_x,ratation=45)
plt.show()
2.period
##不同类型不同月份电话次数
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df =pd.read_csv("F:/研究方向/6-软件操作/python/python-操作/12-人工智能阶段-数据分析/数据分析资料/day06/code/911.csv")
df["timeStamp"] =pd.to_datetime(df["timeStamp"])
#时间字符串转化为索引
print(df.head(10))
#设置添加列表示分类
temp_list = df["title"].str.split(": ").to_list()
cate_list = [i[0] for i in temp_list]
print(cate_list)
df["cate"] = pd.DataFrame(np.array(cate_list).reshape((df.shape[0],1)))
df.set_index("timeStamp",inplace=True)
print(df.head(1))
#分组
plt.figure(figsize=(20, 8), dpi=80)
for group_name, group_data in df.groupby(by="cate"):
count_by_month =df.resample("M").count()["title"]
#画图
_x = count_by_month.index
print(_x)
_y=count_by_month.value
_x = [i.strfitime("%Y%m%d") for i in _x]
plt.plot(range(len(_x)), _y,label="label")
plt.xticks(range(len(_x)), _x, ratation=45)
plt.legend(loc="best")
plt.show()
##当前目录下pm2.5的变化 #时间字符串转化为索引
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
file = "F:/研究方向/6-软件操作/python/python-操作/12-人工智能阶段-数据分析/数据分析资料/day06/code/PM2.5/BeijingPM20100101_20151231.csv"
df = pd.read_csv(file)
#把分开的时间字符串通过PeriodIndex的方法转化为pandas的时间类型
period = pd.PeriodIndex(year=df["year"],month=df["month"],day=df["day"],hour=df["hour"],freq="H")
df["datetime"] = period
#吧datetime设置为索引
df.set_index("datetime",inplace =True)
#进行降采样
df =df.resample("7D").mean()
#print(df.shape)
##处理确实数据
#删掉或者添加为均值
#print(df["PM_Dongsi"].tail(20))
#print(df["PM_US Post"].tail(20))
#data =df["PM_US Post"].dropna()
data =df["PM_US Post"]
data_china =df["PM_Dongsi"]
#画图
_x= data.index
_x =[i.strftime("%Y%m%d") for i in _x]
_y= data.values
_x_china =[i.strftime("%Y%m%d") for i in data_china.index]
_y_china = data_china.values
plt.figure(figsize=(20, 8), dpi=80)
plt.plot(range(len(_x)),_y,label="US_POST")
plt.plot(range(len(_x_china)),_y_china,label="CN_POST")
plt.xticks(range(0,len(_x),10), _x, list(_x)[::10],ratation = 45)
plt.legend(loc="best")
plt.show()