Pandas 數據處理|Datetime 時間模塊在 Pandas 中的使用

2021-01-11 Z先生點記

Datatime 作為 Python 中的時間模塊類型,處理時間有關數據是非常方便的, Pandas 作為數據分析程序包同樣也支持 DataTime 數據機制,例如

1,函數 to_datetime() 將數據列表中的 Series 列轉化為 datetime 類型,

#Convert the type to datetimeapple.Date = pd.to_datetime(apple.Date)apple['Date'].head()#02014-07-0812014-07-0722014-07-0332014-07-0242014-07-01Name: Date, dtype: datetime64[ns]2,DataFrame.resample(freq),將數據基於時間列以 freq 作為頻度做數據重採樣,計算出某隔一段時間中數據總值、均值、方差等指標

下面例子中數據列表的索引就是 Datatime 數據格式,最終計算得到以月為時間單位求出各列數據的平均值

# Resample the data based the offset,get the mean of data# BM — bussiness month end frequencyapple_month = apple.resample("BM").mean()apple_month.head()

下面將根據兩套習題,簡單介紹一下 Pandas 是怎麼使用 DataFrame 數據的

1 , to_datetime() 與 resample() 操作

1.1,讀取數據

url = "https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/09_Time_Series/Apple_Stock/appl_1980_2014.csv"apple =pd.read_csv(url)apple.head()從上面數據中可以看到時間在 Date 這一列,但卻不是標準的 datetime 格式,需要格式處理一下

1.2,datetime 格式轉換

#Convert the type to datetimeapple.Date = pd.to_datetime(apple.Date)apple['Date'].head()

**1.3,將 Date 列設為 index **

需要注意一點的是,後續的 採樣(resample) 操作都是基於 時間列為索引列這一條件的,因此需要索引列設置,

apple = apple.set_index("Date")# Set Indexapple.head()Date 雖然已經設為 index,但是時間排列卻並不清晰,這裡用 sort_index(ascending = True) 直接對其進行正向排序

1.4,對索引進行排序

# Sort The DataFrame based on Date columnsapple.sort_index(ascending = True).head()

1.5,以月為單位對數據採樣並獲取mean()

# Resample the data based the offset,get the mean of data# BM — bussiness month end frequencyapple_month = apple.resample("BM").mean()apple_month.head()

BM 全稱 Bussiness Month,是商業月的意思,在 Pandas 中稱為 DataOffset,除了月之外,還提供年、日、秒、小時、分..等作為採樣單位,當然也可以自定義 DataOffset.

關於 Data Offset 具體詳細內容可參考:https://pandas.pydata.org/docs/user_guide/timeseries.html#timeseries-offset-aliases;

1.6,計算時間列表中最早日期與最晚日期相差天數

(apple.index.max()-apple.index.min()).days#122612,統計近兩年蘋果、特斯拉、IBM、LINKD各公司股價

2.1,pandas_datareader 獲取數據

import pandas as pdfrom pandas_datareader import data as webimport datetime as dtstart = dt.datetime(2019,1,1)end = dt.datetime.today()stocks = ['APPLE','TSLA','IBM','LNKD']df = web.DataReader(stocks,'yahoo',start,end)df使用之前請確保pandas_datareader 包已經安裝成功,這個包幫助我們直接通過爬蟲獲取近兩年的各公司的股票信息,後面 start,end 兩個 datetime 時間用於限制時間

結果顯示似乎這種方法獲取不到到的蘋果和LINKD 的股價(但並不影響,因為這裡主要是學習一下 datetime 在 Pandas 的用法)

2.2,獲取 股票 數據

vol = df['Volume']vol

**2.3,創建新列,表示 week、year **

後面做聚類分析,聚類基準選擇的是 week、year , 因此需要提前創建好兩列(week,year)數據

vol['week'] = vol.index.weekvol['year'] = vol.index.yearvol.head()

2.4,groupby 聚類分組(先 week ,後 year)

week = vol.groupby(['week','year']).sum()week.head()這樣就可以很清晰地比對,2019-2020年對於每一周來說各公司股票的總值變化啦

好了,以上就是本篇文章的所有內容啦;如果有什麼疑問或者想表達的,歡迎在下面留言區進行留言。

最後,感謝大家的閱讀!

Reference:

1,https://pandas.pydata.org/docs/user_guide/timeseries.html#timeseries-offset-aliases

2,https://github.com/guipsamora/pandas_exercises/blob/master/09_Time_Series/Getting_Financial_Data

相關焦點

  • Python:將XML數據存儲到Pandas DataFrame中
    可擴展標記語言(XML)是一種標記語言,它以人類和機器可讀的格式對數據進行編碼。XML在各種程序中用於構造、存儲和傳輸數據。在這篇文章中,我們將討論如何使用python xml庫中的 「ElementTree」模塊來解析xml數據並將數據存儲在panda DataFrame中。
  • Pandas 必知必會的使用技巧,值得收藏!
    本期的主題是關於python的一個數據分析工具pandas的,歸納整理了一些工作中常用到的pandas使用技巧,方便更高效地實現數據分析。 df = pd.DataFrame({'Sp':['a','b','c','d','e','f'], 'Mt':['s1', 's1', 's2','s2','s2','s3'], 'Value':[1,2,3,4,5,6], 'Count':[3,2,5,10,10,6]}) df df.iloc
  • Python數據處理包,pandas 乾貨知識,關於軸的理解
    更多 Python 數據處理的乾貨,敬請關注!!!!前言axis 表示軸,是處理多維數據時用於表示維度方向的概念,在 pandas 中大部分的方法都有 axis 參數,因為 pandas 需要調用者告訴他,需要處理的是哪個維度的數據。
  • 數據處理必看:如何讓你的 pandas 循環加快 71803 倍
    雷鋒網 AI 開發者按,如果你使用 python 和 pandas 進行數據分析,那麼不久你就會第一次使用循環了。然而,即使是對小型數據集,使用標準循環也很費時,你很快就會意識到大型數據幀可能需要很長的時間。當我第一次等了半個多小時來執行代碼時,我找到了接下來想與你共享的替代方案。標準循環數據幀是具有行和列的 pandas 對象。
  • PandaSQL:一個讓你能夠通過SQL語句進行pandas的操作的python包
    Pandas是近年來最好的數據操作庫之一。它允許切片、分組、連接和執行任意數據轉換。如果你熟練的使用SQL,那麼這篇文章將介紹一種更直接、簡單的使用Pandas處理大多數數據操作案例。假設你對SQL非常的熟悉,或者你想有更可讀的代碼。或者您只是想在dataframe上運行一個特殊的SQL查詢。或者,也許你來自R,想要一個sqldf的替代品。
  • World's only all-white panda's new gilded look!
    Only when the parent pandas both carry the gene can the baby show the albino traits.Albinism usually does not affect the animal's physical makeup and functions.
  • 盤點Pandas 的100個常用函數
    作者 | 劉順祥 來源 | 數據分析1480 這一期將分享我認為比較常規的100個實用函數,這些函數大致可以分為六類,分別是統計匯總函數、數據清洗函數、數據篩選、繪圖與元素級運算函數、時間序列函數和其他函數。統計匯總函數數據分析過程中,必然要做一些數據的統計匯總工作,那麼對於這一塊的數據運算有哪些可用的函數可以幫助到我們呢?
  • 英語小作文:Pandas 熊貓
    新東方網>英語>英語學習>英語寫作>中小學英語作文>正文英語小作文:Pandas 熊貓 2013-01-15 17:29 來源:恆星英語 作者:
  • 小學英語作文:Pandas went visiting the park
    熊貓去遊樂園(Pandas went visiting the park)   Panda is one of my best favourite animals.These two pandas are mommy and her baby girl, living at a beautiful mountain somewhere in China
  • Pandas Rub Themselves in Horse Manure to Feel Warm, Study Finds
    Researchers recorded 38 instances of wild giant pandas interacting
  • Pandas GUI:如何輕鬆獲取Pandas數據幀?
    這些庫本質上是在hood中運行Pandas的功能,如SweetViz和Pandas profiling庫。· 基於GUI的Pandas替代品,如Bamboolib。最近,筆者發現了另一個基於GUI的Pandas替代,叫做PandasGUI。它具有繪製數據幀以及重新構建數據幀的功能,用戶也可以進行任意自定義操作。本文將介紹它的各種功能以及在數據中使用的方法。
  • 【Python基礎】13個知識點,系統整理Python時間處理模塊Datetime
    前言在用 Python 進行數據處理,尤其是時間序列數據的處理,經常會涉及處理時間或日期的地方,有些看似簡單的問題,經常會混淆,甚至被困住。本文分享的內容來自 Lemon 整理的《Python時間使用指南》,完整版的可以在公眾號 「檸檬數據」獲取。
  • Panda, a chubby angel of friendship
    Accordingly, as the lebensraum of pandas getting smaller, there was a time when pandas and saber-toothed tigers compete for food.
  • 快速提升效率,這6個 Pandas 技巧一定要知道
    pandas是python中常用的數據分析庫,出現頻率非常高,而且pandas功能之多讓人咋舌,即使pandas老手也沒法保證能高效使用pandas做數據分析。這篇文章目的梳理幾個高效實用的pandas小技巧,供大家參考。1.
  • 更高效地利用 Jupyter+pandas 進行數據分析,6 種常用數據格式效率對比!
    在使用 Python 進行數據分析時,Jupyter Notebook 是一個非常強力的工具,在數據集不是很大的情況下,我們可以使用 pandas 輕鬆對 txt 或 csv 等純文本格式數據進行讀寫。然
  • 關於Numpy和Pandas axis的理解
    在機器學習中我們常常處理幾十維的數據,對於機器學習常用的Numpy庫,當我們賦予二維數組每一行一個值的時候,那麼此時二維數組的列數就是多維空間的維度。每一行給的值通常是我們的樣本值,它也是損失函數準確度的一個依據。
  • 使用pandas和openpyxl處理複雜Excel數據
    關於Excel數據處理,很多同學可能使用過Pyhton的pandas模塊,用它可以輕鬆地讀取和轉換Excel數據。但是實際中Excel表格結構可能比較雜亂,數據會分散不同的工作表中,而且在表格中分布很亂,這種情況下啊直接使用pandas就會非常吃力。本文蟲蟲給大家介紹使用pandas和openpyxl讀取這樣的數據的方法。
  • Netizens worry about panda foaming at the mouth in Chinese zoo
    The ecology administration of Gansu published a statement on Tuesday, saying 「panda Shulan’s foaming is normal," explaining that the foam was either saliva or caused by the female panda being in
  • Pandas on Ray:僅需改動一行代碼,即可讓Pandas加速四倍
    項目連結:https://github.com/ray-project/ray最近,我和一位使用 100 多 TB 生物數據的朋友討論了數據科學庫的一些局限性。當面臨這種規模的數據時,Pandas 成了最受喜愛的工具;然而,當你開始處理 TB 級別的基因數據時,單核運行的 Pandas 就會變得捉襟見肘。
  • Pandas處理時間序列數據的20個關鍵知識點
    舉幾個例子:一段時間內的股票價格每天,每周,每月的銷售額流程中的周期性度量一段時間內的電力或天然氣消耗率在這篇文章中,我將列出20個要點,幫助你全面理解如何用Pandas處理時間序列數據。1.不同形式的時間序列數據時間序列數據可以是特定日期、持續時間或固定的自定義間隔的形式。時間戳可以是給定日期的一天或一秒,具體取決於精度。