☆☆ 新着記事 ☆☆

2019年5月23日木曜日

Pandas DataFrameのサンプル作成と基本操作

Pandasフレーム・ワークを作って操作してみるのに、毎回、考えてサンプルを作るのは面倒なので、コピペできるようにメモしておきます。

Colomunsの追加、削除、値の検索などのテスト用に使ってください。
(元になるリストは日付データにしていて、タイムゾーンの変更もしてますが、参考まで。)


import datetime
import pytz
import pandas as pd
import numpy as np
import random

string_date='2019/05/19 04:00:00'
dt = datetime.datetime.strptime(string_date,'%Y/%m/%d %H:%M:%S')
dt_utc=dt.replace(tzinfo=pytz.UTC)

#元ネタのリスト用意
list1=[]
for  i in range(10):
    list1.append(dt_utc + datetime.timedelta(hours=-i))

list2 = [random.randint(200,299) for i in range(10)]
print(list1,list2)

#(参考)辞書の作り方
myDict = dict(zip(list1,list2))
print(myDict)



#pandasデータフレームワーク作成
date_pd = pd.DataFrame(data = [ [list1[i]] for i in range(len(list1))], columns=['Date'])
print(date_pd)

 #pandasデータフレームワークのコラム追加
date_pd['Text']=([list2[i] for i in range(len(list2))])
print(date_pd)

 #pandasデータフレームワークのコラムの確認
print(date_pd.columns)

 #検索条件の作成
string_date='2019/05/19 04:00:00'
dt = datetime.datetime.strptime(string_date,'%Y/%m/%d %H:%M:%S')
dt_utc=dt.replace(tzinfo=pytz.UTC)

dt_start=list1[6]
print(dt_start)

dt_end=list1[3]
print(dt_end)

 #リストの範囲を指定してcolumnsを追加
for i in range(len(date_pd)):
     if date_pd.at[i,"Date"] < dt_end and date_pd.at[i,"Date"]> dt_start:
          date_pd.at[i,'Check']=np.array('Checked')
print(date_pd)

 #データフレームワークの範囲を指定して新しいデータフレームワーク作成
## df[df.A > 0] #これだと、全ての行を検索しTrue/Falseを返す。If文との併用が必要。
[10 rows x 3 columns]                                                 
 print(date_pd.Date>dt_end)
 #0     True                                                            
 #1     True                                                            
 #2     True                                                            
 #3    False                                                            
 #4    False                                                            
 #****continue
 #9    False  

date_pd_selected=date_pd[date_pd.Date>dt_end]   #新しいデータフレームワーク作成可能
print(date_pd_selected)
                       Date  Text Check                              
 0  2019-05-19 04:00:00+00:00   298   NaN                              
 1  2019-05-19 03:00:00+00:00   247   NaN                              
 2  2019-05-19 02:00:00+00:00   201   NaN           

 FutureWarning:converting timezone-aware DatetimeArray to timezone-naive ndarray with 'datetime64[ns]' dtype. In the future, this will return an ndarray with 'object' dtype where each element is a 'pandas.Timestamp' with the correct 'tz'.
        To accept the future behavior, pass 'dtype=object'.
        To keep the old behavior, pass 'dtype="datetime64[ns]"'.
  result = np.asarray(values, dtype=dtype)   

0 件のコメント:

コメントを投稿