机器学习-数据科学库(第六天)
37.pandas時間序列01
現(xiàn)在我們有2015到2017年25萬條911的緊急電話的數(shù)據(jù),請統(tǒng)計(jì)出出這些數(shù)據(jù)中不同類型的緊急情況的次數(shù),如果我們還想統(tǒng)計(jì)出不同月份不同類型緊急電話的次數(shù)的變化情況,應(yīng)該怎么做呢?
import matplotlib.pyplot as plt import pandas as pd import numpy as npdf = pd.read_csv("/Users/zhucan/Desktop/911.csv")temp_list = df["title"].str.split(": ").tolist() cate_list = list(set([i[0] for i in temp_list]))zeros_df = pd.DataFrame(np.zeros((df.shape[0],len(cate_list))),columns = cate_list)for cate in cate_list:zeros_df[cate][df["title"].str.contains(cate)] = 1print(zeros_df) sum_ret = zeros_df.sum(axis=0) print(sum_ret)pandas時間序列
不管在什么行業(yè),時間序列都是一種非常重要的數(shù)據(jù)形式,很多統(tǒng)計(jì)數(shù)據(jù)以及數(shù)據(jù)的規(guī)律也都和時間序列有著非常重要的聯(lián)系 而且在pandas中處理時間序列是非常簡單的?
pd.date_range(start=None, end=None, periods=None, freq='D')? ? ?——? ? ?生成一段時間范圍
回到最開始的911數(shù)據(jù)的案例中,我們可以使用pandas提供的方法把時間字符串轉(zhuǎn)化為時間序列 df["timeStamp"] = pd.to_datetime(df["timeStamp"],format="")
format參數(shù)大部分情況下可以不用寫,但是對于pandas無法格式化的時間字符串,我們可以使用該參數(shù),比如包含中文
38.pandas時間序列02
pandas重采樣
重采樣:指的是將時間序列從一個頻率轉(zhuǎn)化為另一個頻率進(jìn)行處理的過程,將高頻率數(shù)據(jù)轉(zhuǎn)化為低頻率數(shù)據(jù)為降采樣,低頻率轉(zhuǎn)化為高頻率為升采樣
pandas提供了一個resample的方法來幫助我們實(shí)現(xiàn)頻率轉(zhuǎn)化
?
import time import matplotlib.pyplot as plt import pandas as pd import numpy as npdf = pd.read_csv("/Users/zhucan/Desktop/911.csv") df["timeStamp"] = pd.to_datetime(df["timeStamp"])temp_list = df["title"].str.split(": ").tolist() cate_list = [i[0] for i in temp_list] df["cate"] =pd.DataFrame(np.array(cate_list).reshape((df.shape[0],1)))df.set_index("timeStamp",inplace=True)plt.figure(figsize=(20,8),dpi=80)for group_name,group_data in df.groupby(by="cate"):count_by_month = group_data.resample("M").count()["title"]_x = count_by_month.index_y = count_by_month.values_x = [i.strftime("%Y%m%d") for i in _x]plt.plot(range(len(_x)),_y,label=group_name) plt.xticks(range(len(_x)),_x,rotation=45) plt.legend(loc="best") plt.show()?
39.pandas案例
現(xiàn)在我們有北上廣、深圳、和沈陽5個城市空氣質(zhì)量數(shù)據(jù),請繪制出5個城市的PM2.5隨時間的變化情況
import matplotlib.pyplot as plt import pandas as pd import numpy as npdf = pd.read_csv("/Users/zhucan/Desktop/BeijingPM20100101_20151231.csv")period=pd.PeriodIndex(year=df["year"],month=df["month"],day=df["day"],hour=df["hour"],freq="H") df["datetime"] = perioddf.set_index("datetime",inplace=True)#進(jìn)行降采樣 df = df.resample("7D").mean()#處理缺失數(shù)據(jù),刪除缺失數(shù)據(jù) data = df["PM_US Post"].dropna()#畫圖 _x = data.index _y = data.valuesplt.figure(figsize=(20,8),dpi=80) plt.plot(range(len(_x)),_y) plt.xticks(range(0,len(_x),10),list(_x)[::10],rotation=45) plt.show()總結(jié)
以上是生活随笔為你收集整理的机器学习-数据科学库(第六天)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习-数据科学库(第五天)
- 下一篇: 机器学习算法基础(基础机器学习课程)——