Bootstrap

pandas

时间序列

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()

;