1. 程式人生 > >Pandas使用DataFrame進行資料分析比賽進階之路(二):日期資料處理:按日期篩選、顯示及統計資料

Pandas使用DataFrame進行資料分析比賽進階之路(二):日期資料處理:按日期篩選、顯示及統計資料

首先,表格的資料格式如下:

這裡寫圖片描述

1、獲取某年某月資料

data_train = pd.read_csv('data/train.csv')

# 將資料型別轉換為日期型別
data_train['date'] = pd.to_datetime(data_train['date'])

# 將date設定為index
df = data_train.set_index('date')

# 獲取某年的資料
print(df['2010'].head())
# 獲取某月的資料
print(df['2013-11'].head())

輸出結果:

           id      questions  answers
date
2010-10-01 1 742 1561 2010-10-02 2 400 783 2010-10-03 3 388 771 2010-10-04 4 762 1474 2010-10-05 5 821 1639 id questions answers date 2013-11-01 1128 3401 6858 2013-11
-02 1129 2626 5467 2013-11-03 1130 2703 5557 2013-11-04 1131 3602 6941 2013-11-05 1132 3741 7312

2、獲取某個時期之前或之後的資料

# 獲取某個時期之前或之後的資料

# 獲取2014年以後的資料
print(df.truncate(before='2014').head())
# 獲取2013-11之前的資料
print(df.truncate(after='2013-11').head())
# 獲取2016-02年以後的資料
print
(df.truncate(before='2016-02').head()) # 獲取2016-02-2年以後的資料 print(df.truncate(before='2016-02-2').head())

輸出結果:

             id  questions  answers
date                                
2014-01-01  1189       2586     5576
2014-01-02  1190       3541     7175
2014-01-03  1191       3655     7395
2014-01-04  1192       2947     6099
2014-01-05  1193       2847     5935
             id  questions  answers
date                              
2010-10-01   1        742     1561
2010-10-02   2        400      783
2010-10-03   3        388      771
2010-10-04   4        762     1474
2010-10-05   5        821     1639
             id  questions  answers
date                                
2016-02-01  1950       5434    10398
2016-02-02  1951       5650    10795
2016-02-03  1952       5744    10879
2016-02-04  1953       5666    10886
2016-02-05  1954       5371    10508
             id  questions  answers
date                                
2016-02-02  1951       5650    10795
2016-02-03  1952       5744    10879
2016-02-04  1953       5666    10886
2016-02-05  1954       5371    10508
2016-02-06  1955       4296     8800

3、按某個指標顯示,但不統計

# 按月顯示,但不統計
df_period_M = df.to_period('M').head()
print(df_period_M)
# 按季度顯示,但不統計
df_period_Q = df.to_period('Q').head()
print(df_period_Q)
# 按年度顯示,但不統計
df_period_A = df.to_period('A').head()
print(df_period_A)

輸出結果:

         id  questions  answers
date                           
2010-10   1        742     1561
2010-10   2        400      783
2010-10   3        388      771
2010-10   4        762     1474
2010-10   5        821     1639
         id  questions  answers
date                          
2010Q4   1        742     1561
2010Q4   2        400      783
2010Q4   3        388      771
2010Q4   4        762     1474
2010Q4   5        821     1639
         id  questions  answers
date                        
2010   1        742     1561
2010   2        400      783
2010   3        388      771
2010   4        762     1474
2010   5        821     1639

4、按某個指標顯示,並且統計

# 按年統計並顯示
print(df.resample('AS').sum().to_period('A'))
# 按季度統計並顯示
print(df.resample('Q').sum().to_period('Q').head())
# 按月度統計並顯示
print(df.resample('M').sum().to_period('M').head())
# 按月度統計並顯示
print(df.resample('W').sum().to_period('W').head())

輸出結果:

          id  questions  answers
date                            
2010    4278      74363   153006
2011  100375     535290  1091651
2012  234423     862831  1718434
2013  367190    1179155  2320421
2014  500415    1487677  2876611
2015  633640    1734023  3368264
2016  698810    1808649  3476335
          id  questions  answers
date                             
2010Q4   4278      74363   153006
2011Q1  12375     105858   217767
2011Q2  20748     127873   260836
2011Q3  29394     144424   293853
2011Q4  37858     157135   319195
          id  questions  answers
date                             
2010-10   496      22218    44882
2010-11  1395      25418    52841
2010-12  2387      26727    55283
2011-01  3348      31502    65477
2011-02  3850      33240    67627
           id  questions  answers
date                                          
2010-09-27/2010-10-03    6       1530     3115
2010-10-04/2010-10-10   49       4869     9636
2010-10-11/2010-10-17   98       5079    10344
2010-10-18/2010-10-24  147       5361    10847
2010-10-25/2010-10-31  196       5379    10940

附錄:日期型別截圖

這裡寫圖片描述

相關推薦

Pandas使用DataFrame進行資料分析比賽日期資料處理日期篩選顯示統計資料

首先,表格的資料格式如下: 1、獲取某年某月資料 data_train = pd.read_csv('data/train.csv') # 將資料型別轉換為日期型別 data_train[

JavaScript的函數簡介,變量作用域和內存問題

ret 優化 person get 簡介 web瀏覽器 都是 add 是把 <h3>ECMAScript中函數不存在函數簽名的概念,沒有重載</h3><h3>無需指定返回值,可以在任何時候返回任何值。未指定返回值的函數,返回的是一個特殊

Android -- NDK初探

繼續學習NDK開發,今天來實現一個簡單的計算器功能,NativeUtil類中有一個靜態的native方法,它接收三個引數,分別是兩個運算元和一個操作符,並且返回C的計算結果。NativeUtil類定義如下public class NativeUtil { static

我的安卓

    這周結束了“活動”,開始了UI的征程。     1、七大控制元件           踩的兩個小坑          第一個,ImageView即圖片控制元件,名稱必須以字母開頭。如1img不行,而img2可以,倒是和變數名的命名相類似。          第

React

在之前的文章中我們介紹了 React 開發的環境搭建及目錄介紹和整理,本篇文章將介紹 React 建立元件、JSX 語法、繫結資料和繫結物件。 之前我們已經將專案運行了起來,我們再來看一下目錄結構: 其中 App.js 檔案為我們的根元件,裡面的程式碼: 其中 import 為我們需要引入的檔案

koa2 從入門到

之前的文章我們已經能夠在本地啟動一個簡單的專案,本章我們來看一下 koa 路由,get 傳值,動態路由。 一、Koa 路由 路由(Routing)是由一個 URI(或者叫路

Python 從入門到

之前的文章我們對 Python 語法有了一個簡單的認識,接下來我們對 Python 中的 if while for 做一下介紹。 上圖為 if 判斷語句的流程,無論任何語言,都會涉及到判斷問題,if 條件會進行 true 和 false 的判斷,如下: 1 num = 10 2 if num =

Python 爬蟲從入門到

上一篇文章我們對爬蟲有了一個初步認識,本篇文章我們開始學習 Python 爬蟲例項。 在 Python 中有很多庫可以用來抓取網頁,其中內建了 urllib 模組,該模組就能實現我們基本的網頁爬取。 在 Python2.x 和 Python3.x 中 urllib 模組是不一樣的,但是用法上差不多,我們先

Java 從入門到

之前的文章我們介紹了一下用 IDEA 編輯器建立一個 Java 專案並輸出 HelloWorld,本章我們來看一下 Java 中的變數和基本資料型別。 在這之前我們先來看一下 Java 中的關鍵字,這些關鍵字不能被用作變數名稱。 類別關鍵字說明 訪問控制 private 私有的

JavaScript的引用類型Object類型和Array類型

reverse 代碼 -1 替換 fine 設置 sha unshift sum 引用類型 Object類型 function a(num){ if(num>3){ a(--num); } console.log(num);

慕課 從零到一spark

1.RDD RDD是spark特有的資料模型,談到RDD就會提到什麼彈性分散式資料集,什麼有向無環圖,本文暫時不去展開這些高深概念。 (0)隨便找個點理解以下 最重要的記住,RRD是不可變的,也就是說,已有的RDD不能被修改或者更新,但可以從已有的RDD轉化成一個新的RDD. 上面的

Java小白

1、字串操作:replace方法(舊字串,新子串)。 Scanner scanner = new Scanner(System.in); System.out.println("請輸入"); // 接收使用者的輸入的字串 String s1 = scanner.next(); // 接受整型 i

C#反射的應用

  反射在C#中的應用還是很多的,但它對程式碼的效能有一定影響。 反射的效能:   使用反射來呼叫型別或者觸發方法,或者訪問一個欄位或者屬性時clr 需要做更多的工作:校驗引數,檢查許可權等等,所以速度是非常慢的。所以儘量不要使用反射進行程式設計,對於打算編寫一個動態構造型別(晚繫結)的應用程

Python基礎元組字典和字符串

python基礎 tag 基礎 block 場景 分隔 應用場景 agg bsp 元組 元組的定義 Tuple(元組)與列表類似,不同之處在於元組的 元素不能修改 元組 表示多個元素組成的序列 元組 在 Python 開發中,有特定的應用場景 用

Python基礎元組字典和字串

元組 元組的定義   Tuple(元組)與列表類似,不同之處在於元組的 元素不能修改     元組 表示多個元素組成的序列   元組 在 Python 開發中,有特定的應用場景   用於儲存 一串 資訊,資料 之間使用

Python基礎字串

字串 字串的定義 字串 就是 一串字元,是程式語言中表示文字的資料型別 在 Python 中可以使用 一對雙引號 " 或者 一對單引號 ' 定義一個字串 雖然可以使用 \" 或者 \' 做字串的轉義,但是在實際開發中: 如果字串內部需要使用 ",可以使用 ' 定義字串 如果字串內部需要使用

Hadoop3——Hadoop檔案系統

Hadoop有一個抽象的檔案系統概念,HDFS只是其中的一個實現。Java抽象類org.apache.hadoop.fs.FileSystem定義了Hadoop中的一個檔案系統介面,並且該抽象類有幾個具體實現。 Hadoop檔案系統 檔案系統 URI方案 Ja

Linux部署

經過長期的開發工作,在專案中經常會需要將打包好的專案部署到Linux伺服器上,不過,在此之前需要掌握一些Linux常用命令比如ls、ll、ps -ef|grep java 、cp、tail 等等,詳細的可以百度查一下,還是很多的。接下來,就說一下關於專案的部署。 首先需要一個遠端訪問Linu

Android -- AS 3.0NDK環境搭建hello world

通過一段找實習的經歷,以及快應用、小程式、web app等移動開發模式的衝擊,深深為安卓原生開發的未來感到擔憂,希望接入人工智慧API和物聯網井噴能給安卓開發帶來新的生機吧。當然,作為小白我是不用擔心這麼多的,做自己喜歡的事就好了,於是拋開雜念,繼續學習安卓。NDK開發環境的

Android -- JNI互動

今天繼續學習C與Java通過JNIEnv互動。昨天學習了C與Java互動方法,但感覺太輕鬆了,就像呼叫findViewById一樣簡單,可能是我遺漏了什麼東西,於是就想在今天繼續研究這一塊兒的內容,順便做一下總結。C呼叫Java的方法和訪問Java中的變數都是通過JNIEnv