私はcsvファイルを読み込み、日、週、月にデータをチャンクします。パンダ2日間、週は週曜日から開始します。
私の問題は、通常の午前12時から24時間チャンクされていることです。ただし、データは午後4時から午後4時までチャンクされます(翌日に入る)。
さらに、dt.weekは、月曜日にデータが開始されるため、月曜日の開始週を作成します。私は日曜日の午後4時 - 金曜日の午後4時を1週間としたい。私はこれを索引でやっていくことができますし、より洗練されたソリューションがあるのかどうか疑問に思っていました。
目的:この5分のデータ(df.head()を参照)を日、週、月単位でチャンクするデータフレームのリストを作成します。日のために、私は午後4時から始まり、翌日午後4時まで継続する必要があります。数週間、私は週が日曜日に始まるようにしたいと考えています。データは月曜日に始まるので、月曜日から週を分けたいと考えています。
def read_in_files(file_names):
"""
1. Read the csv files to memory into a pandas dataframe with pd.read_csv
2. separate the df into year, month, and date objects
3. It also chunks the data by single day
"""
import os
import pandas as pd
file1 = pd.read_csv(file_names, parse_dates=[['Date', 'Time']])
df = pd.DataFrame(file1)
# Week is defined as sunday 4pm to Friday 4pm --not working correctly
# this is a timestamp obj
df['year'], df['month'] = df['Date_Time'].dt.year, df['Date_time'].dt.month
df['date'] = df['Date_Time'].dt.day
df['week'] = df['Date_Time'].dt.week
"""
these three lines below chunk the data by dates
"""
df_single_day = []
for group in df.groupby(df.Date_Time, sort=False):
df_single_day.append(group[1])
df_single_week = []
for group in df.groupby(['week', 'year'], sort=False):
df_single_week.append(group[1])
df_single_month = []
for group in df.groupby(['month', 'year'], sort=False):
df_single_month.append(group[1])
return df df_single_day, df_single_week, df_single_month
出力例
df_single_day [0] .tail(5)
OUT [11]:
Unnamed: 0 Symbol Date_Time Open High Low Close \
90 91 ABCDEF 2008-05-06 23:35 0.9480 0.9483 0.9477 0.9480
91 92 ABCDEF 2008-05-06 23:40 0.9479 0.9482 0.9476 0.9479
92 93 ABCDEF 2008-05-06 23:45 0.9478 0.9481 0.9474 0.9477
93 94 ABCDEF 2008-05-06 23:50 0.9477 0.9481 0.9472 0.9478
94 95 ABCDEF 2008-05-06 23:55 0.9479 0.9481 0.9475 0.9478
year month date week
90 2008 5 6 19
91 2008 5 6 19
92 2008 5 6 19
93 2008 5 6 19
94 2008 5 6 19
df_single_day [1] .head(5)
Out [14]:
Unnamed: 0 Symbol Date_Time Open High Low Close \
95 96 ABCDEF 2008-05-07 00:00 0.9478 0.9483 0.9475 0.9481
96 97 ABCDEF 2008-05-07 00:05 0.9481 0.9484 0.9479 0.9484
97 98 ABCDEF 2008-05-07 00:10 0.9482 0.9485 0.9480 0.9482
98 99 ABCDEF 2008-05-07 00:15 0.9482 0.9485 0.9478 0.9483
99 100 ABCDEF 2008-05-07 00:20 0.9483 0.9485 0.9480 0.9484
year month date week
95 2008 5 7 19
96 2008 5 7 19
97 2008 5 7 19
98 2008 5 7 19
99 2008 5 7 19
15時55分までの機能は、各リストのため00:00に始まるデータをチャンク、と私はそれが1日から午後4時から開始する次の日
サンプル・データは、これがより簡単になるだろう。私はあなたの後ろのIIUCの巧妙な解決策があなたのチャンクを 'df.Date_Time + pd.offsets.Hour(8)' – piRSquared
に基づいて作成することになるとは思っていません。物事を明確にするのに役立つことを願っています。 – Monty
メソッドをグループ化のプレースホルダとして使用しました。ありがとうございました!まだ週の問題を把握しています。 – Monty