2017-08-17 12 views
-1

datetimeフォーマット(Y-m-d H:M:S)を維持したまま、datetimeフォーマットのdataframeカラムのパーセンタイルを計算する方法はありますか?それは、整数列やフロート列datetimeカラムpythonのパーセンタイル

上だから我々が行うために私たちのカスタムメソッドを作成することができないように、データの 例日時形式で日時列に

df: 
0 2016-07-31 08:00:00 
1 2016-07-30 14:30:00 
2 2006-06-24 14:15:00 
3 2016-07-15 08:15:45 
4 2016-08-01 23:50:00 

答えて

0

describe()方法は、同じように動作しません。同じ:

import pandas as pd 
from datetime import timedelta 
from datetime import datetime 

base = datetime.now() 
date_list = [base - timedelta(days=x) for x in range(0, 20)]  
df = pd.DataFrame.from_dict({'Date': date_list}) 

df 

          Date 
0 2017-08-17 21:32:54.044948 
1 2017-08-16 21:32:54.044948 
2 2017-08-15 21:32:54.044948 
3 2017-08-14 21:32:54.044948 

def describe_datetime(dataframe, column, percentiles=[i/10 for i in range(1,11)]): 
    new_date = dataframe[column].dt.strftime('%Y-%m-%d').sort_values().values 
    length = len(new_date) 
    for percentile in percentiles: 
     print(percentile, ':', new_date[int(percentile * length)-1]) 

describe_datetime(df, 'Date') 

出力:

0.1 : 2017-07-30 
0.2 : 2017-08-01 
0.3 : 2017-08-03 
0.4 : 2017-08-05 
0.5 : 2017-08-07 
0.6 : 2017-08-09 
0.7 : 2017-08-11 
0.8 : 2017-08-13 
0.9 : 2017-08-15 
1.0 : 2017-08-17 
+0

で、「DF」です。私もパーセンタイルを変えてみました。返される値は同じです。 –

+0

@ T-Jayあなたが探していたことをやるためのカスタムメソッドを作成しました。 –

0

いくつかのコードを試した後。私は以下のコードを使用してパーセンタイルを計算することができました。私はその列をソートし、そのパーセンテージを計算するためにそのインデックスを使用しました。 データフレームは、私はそれをしようとしたときに日時書式を持つカラムは、このアプローチは動作しません「日付」

date_column = list(df.sort_values('dates')['dates']) 
index = range(0,len(date_column)+1) 
date_column[np.int((np.percentile(index, 50)))]