iT邦幫忙

2021 iThome 鐵人賽

DAY 24
0
AI & Data

從資料庫到資料分析視覺化系列 第 24

{DAY 24} Pandas 學習筆記part.10

  • 分享至 

  • xImage
  •  

前言

前面學習了很多pandas的功能

在標籤的處理上還有資料的分析上也有進行介紹跟實際資料的演練

今天要練習的是更適用在真實應用場景的用法
關於日期與時間的處理

在時間序列的表達上

pandas內建也有可以將時間依照指定樣式顯示的方法

就可以省去另外寫好幾行程式碼的困擾

讓程式碼更簡潔有力

這裡同樣也是使用kaggle上的開源數據

利用不同的語法進行資料的操作

Kaggle: Your Machine Learning and Data Science Community

日期與時間的處理

在日期與時間處理的部分

會使用到kaggle上這筆關於比特幣的資料

首先先看看這筆資料長怎樣

import pandas as pd
df = pd.read_csv("Bitcoin.csv")
df.head()

可以看到時間的排序是日期-月份-年份

但是這個要解讀起來很複雜

現在假如想讓時間排得更好看,

可以使用pandas的pd.to_datetime(),

要注意的是需要在括號裡放置想要轉換的時間欄位

pd.to_datetime(df.Date)

可以看到內建的功能將時間換成年份-日期-月份

看起來還是怪怪的,因為應該要把排列顯示出year-month-day

這時候就可以指定時間出現的形式,使用format指定

這時的形式是to_datetime(dateString,format)

現在來試試指定format針對時間進行調整

df["Date"] = pd.to_datetime(df["Date"], format="%d-%m-%Y")
df.head()

那先來看看整筆數據的相關描述性統計數據

可以看到整體數據有2965筆

是從2013/04/28開始到2021/06/09的所有紀錄

若是我只想要擷取從2020/01/01到最後一筆紀錄2021/06/09的資料時

有下列幾種方法

  1. 首先是使用dt.year.isin( )

    括號內可以放置指定的條件

    因為這個時間段是從去年第一天開始到資料的最後一筆

    所以可以用年份下去處裡

    df = df[df["Date"].dt.year.isin([2020,2021]).dropna()]
    df
    

    可以看到成功的將想要的時間擷取出來

    rows的數量也從原本的2965變成擷取後的526

    但這個處理的是以年計算

    若是現在想要擷取更精確的時間段

  2. 第二個方法可以使用布林遮罩跟比較運算元

    找出更精確的時間段

    假設現在想要從2019/05/03到2020/12/27

    df[(df['Date'] >= '2019-05-03') & (df['Date'] <= '2020-12-27')]
    

  3. 假如想要從2020/07/18到2021/04/25

    可以先將Date欄位轉換為index

    在使用loc[]將想要的時間段slice出來

    df = df.set_index("Date")
    df
    

    先將index轉換為時間

    再將想要的時間段放到中括號的條件內

    df.loc["2021-04-25":"2020-07-18"]
    

    可以看到時間段成功擷取2020/07/18到2021/04/25


上一篇
{DAY 23} Pandas 學習筆記part.9
下一篇
{DAY 25} Matplotlib 基礎操作
系列文
從資料庫到資料分析視覺化30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言